private static Properties resolveTemplate(Properties jobProps) throws IOException { try { if (jobProps.containsKey(ConfigurationKeys.JOB_TEMPLATE_PATH)) { Config jobConfig = ConfigUtils.propertiesToConfig(jobProps); Properties resolvedProps = ConfigUtils.configToProperties((ResourceBasedJobTemplate .forResourcePath(jobProps.getProperty(ConfigurationKeys.JOB_TEMPLATE_PATH), new PackagedTemplatesJobCatalogDecorator())) .getResolvedConfig(jobConfig)); return resolvedProps; } else { return jobProps; } } catch (JobTemplate.TemplateException | SpecNotFoundException | URISyntaxException exc) { throw new IOException(exc); } } }
@Test public void test() throws Exception { ResourceBasedJobTemplate template = ResourceBasedJobTemplate.forResourcePath("templates/test.template", null); Collection<String> required = template.getRequiredConfigList(); Assert.assertEquals(required.size(), 3); Assert.assertTrue(required.contains("required0")); Assert.assertTrue(required.contains("required1")); Assert.assertTrue(required.contains("required2")); Config rawTemplate = template.getRawTemplateConfig(); Assert.assertEquals(rawTemplate.getString("templated0"), "x"); Assert.assertEquals(rawTemplate.getString("templated1"), "y"); Config resolved = template.getResolvedConfig( ConfigFactory.parseMap(ImmutableMap.of("required0", "r0", "required1", "r1", "required2", "r2"))); Assert.assertEquals(resolved.getString("templated0"), "x"); Assert.assertEquals(resolved.getString("required0"), "r0"); }
@Test public void testResolvingConfig() throws Exception { Config jobProps = ConfigFactory.parseProperties(this.userProp); Assert.assertEquals(ConfigUtils.configToProperties(jobProps).size(), 6); jobProps = ResourceBasedJobTemplate.forResourcePath(jobProps.getString(ConfigurationKeys.JOB_TEMPLATE_PATH), new PackagedTemplatesJobCatalogDecorator()) .getResolvedConfig(jobProps); // Remove job.template in userSpecified file and gobblin.template.required_attributes in template Assert.assertEquals(ConfigUtils.configToProperties(jobProps).size(), 8); Properties targetResolvedJobProps = new Properties() ; targetResolvedJobProps.setProperty("a", "1"); targetResolvedJobProps.setProperty("templated0", "2"); targetResolvedJobProps.setProperty("templated1", "y"); targetResolvedJobProps.setProperty("required0","r0"); targetResolvedJobProps.setProperty("required1","r1"); targetResolvedJobProps.setProperty("required2","r2"); targetResolvedJobProps.setProperty(ConfigurationKeys.JOB_TEMPLATE_PATH, "templates/test.template"); targetResolvedJobProps.setProperty(ConfigurationKeys.REQUIRED_ATRRIBUTES_LIST, "required0,required1,required2"); Assert.assertEquals(targetResolvedJobProps, ConfigUtils.configToProperties(jobProps)); }
private static Properties resolveTemplate(Properties jobProps) throws IOException { try { if (jobProps.containsKey(ConfigurationKeys.JOB_TEMPLATE_PATH)) { Config jobConfig = ConfigUtils.propertiesToConfig(jobProps); Properties resolvedProps = ConfigUtils.configToProperties((ResourceBasedJobTemplate .forResourcePath(jobProps.getProperty(ConfigurationKeys.JOB_TEMPLATE_PATH), new PackagedTemplatesJobCatalogDecorator())) .getResolvedConfig(jobConfig)); return resolvedProps; } else { return jobProps; } } catch (JobTemplate.TemplateException | SpecNotFoundException | URISyntaxException exc) { throw new IOException(exc); } } }