@Override protected void preProcessXml(Element root) { if (ROOT_JOB_ELEMENT_NAME.equals(root.getLocalName())) { initProperties(root); transformDocument(root); if (LOG.isDebugEnabled()) { LOG.debug("Transformed XML from preProcessXml: " + elementToString(root)); } } }
NodeIterator iterator = traversal.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, null, true); BeanDefinitionRegistry registry = getBeanDefinitionRegistry(); Map<String, Integer> referenceCountMap = new HashMap<>(); String resolvedValue = resolveValue(nodeValue); String newNodeValue = resolvedValue; boolean isClass = isClass(resolvedValue); Integer referenceCount = referenceCountMap.get(resolvedValue); String resolvedValue = resolveValue(nodeValue);
private BeanDefinitionRegistry getBeanDefinitionRegistry() { return beanDefinitionRegistry != null ? beanDefinitionRegistry : getReaderContext().getRegistry(); }
protected void initProperties(Element root) { propertyMap.put(JOB_PARAMETERS_KEY_NAME, initJobParameters()); propertyMap.put(JOB_PROPERTIES_KEY_NAME, initJobProperties(root)); resolvePropertyValues(propertyMap.get(JOB_PARAMETERS_KEY_NAME)); resolvePropertyValues(propertyMap.get(JOB_PROPERTIES_KEY_NAME)); }
private String resolvePropertyValue(String propertyValue) { String resolvedValue = resolveValue(propertyValue); Matcher jobParameterMatcher = OPERATOR_PATTERN.matcher(resolvedValue); while (jobParameterMatcher.find()) { resolvedValue = resolvePropertyValue(resolvedValue); } return resolvedValue; }
@Test public void testGetJobProperties() { Document document = getDocument("/META-INF/batch-jobs/jsrPropertyPreparseTestJob.xml"); @SuppressWarnings("resource") JsrXmlApplicationContext applicationContext = new JsrXmlApplicationContext(); JsrBeanDefinitionDocumentReader documentReader = new JsrBeanDefinitionDocumentReader(applicationContext); documentReader.initProperties(document.getDocumentElement()); Properties documentJobProperties = documentReader.getJobProperties(); assertNotNull(documentJobProperties); assertTrue("Wrong number of job properties", documentJobProperties.size() == 3); assertEquals("jobProperty1Value", documentJobProperties.getProperty("jobProperty1")); assertEquals("jobProperty1Value", documentJobProperties.getProperty("jobProperty2")); assertEquals("", documentJobProperties.getProperty("jobProperty3")); }
@Test public void testJobParametersResolution() { Properties jobParameters = new Properties(); jobParameters.setProperty("jobParameter1", "myfile.txt"); jobParameters.setProperty("jobParameter2", "#{jobProperties['jobProperty2']}"); jobParameters.setProperty("jobParameter3", "#{jobParameters['jobParameter1']}"); @SuppressWarnings("resource") JsrXmlApplicationContext applicationContext = new JsrXmlApplicationContext(jobParameters); applicationContext.setValidating(false); applicationContext.load(new ClassPathResource("jsrBaseContext.xml"), new ClassPathResource("/META-INF/batch.xml"), new ClassPathResource("/META-INF/batch-jobs/jsrPropertyPreparseTestJob.xml")); applicationContext.refresh(); Document document = getDocument("/META-INF/batch-jobs/jsrPropertyPreparseTestJob.xml"); JsrBeanDefinitionDocumentReader documentReader = new JsrBeanDefinitionDocumentReader(applicationContext); documentReader.initProperties(document.getDocumentElement()); Properties resolvedParameters = documentReader.getJobParameters(); assertNotNull(resolvedParameters); assertTrue("Wrong number of job parameters", resolvedParameters.size() == 3); assertEquals("myfile.txt", resolvedParameters.getProperty("jobParameter1")); assertEquals("jobProperty1Value", resolvedParameters.getProperty("jobParameter2")); assertEquals("myfile.txt", resolvedParameters.getProperty("jobParameter3")); }
private void resolvePropertyValues(Properties properties) { for (String propertyKey : properties.stringPropertyNames()) { String resolvedPropertyValue = resolvePropertyValue(properties.getProperty(propertyKey)); if(!properties.getProperty(propertyKey).equals(resolvedPropertyValue)) { properties.setProperty(propertyKey, resolvedPropertyValue); } } }
private Properties initJobParameters() { Properties jobParameters = new Properties(); if (getBeanDefinitionRegistry().containsBeanDefinition(JOB_PARAMETERS_BEAN_DEFINITION_NAME)) { BeanDefinition beanDefinition = getBeanDefinitionRegistry().getBeanDefinition(JOB_PARAMETERS_BEAN_DEFINITION_NAME); Properties properties = (Properties) beanDefinition.getConstructorArgumentValues() .getGenericArgumentValue(Properties.class) .getValue(); if (properties == null) { return new Properties(); } Enumeration<?> propertyNames = properties.propertyNames(); while(propertyNames.hasMoreElements()) { String curName = (String) propertyNames.nextElement(); jobParameters.put(curName, properties.getProperty(curName)); } } return jobParameters; }
protected void initProperties(Element root) { propertyMap.put(JOB_PARAMETERS_KEY_NAME, initJobParameters()); propertyMap.put(JOB_PROPERTIES_KEY_NAME, initJobProperties(root)); resolvePropertyValues(propertyMap.get(JOB_PARAMETERS_KEY_NAME)); resolvePropertyValues(propertyMap.get(JOB_PROPERTIES_KEY_NAME)); }
private String resolvePropertyValue(String propertyValue) { String resolvedValue = resolveValue(propertyValue); Matcher jobParameterMatcher = OPERATOR_PATTERN.matcher(resolvedValue); while (jobParameterMatcher.find()) { resolvedValue = resolvePropertyValue(resolvedValue); } return resolvedValue; }
@Test public void testJobPropertyResolution() { Properties jobParameters = new Properties(); jobParameters.setProperty("file.name", "myfile.txt"); @SuppressWarnings("resource") JsrXmlApplicationContext applicationContext = new JsrXmlApplicationContext(jobParameters); applicationContext.setValidating(false); applicationContext.load(new ClassPathResource("jsrBaseContext.xml"), new ClassPathResource("/META-INF/batch.xml"), new ClassPathResource("/META-INF/batch-jobs/jsrPropertyPreparseTestJob.xml")); applicationContext.refresh(); Document document = getDocument("/META-INF/batch-jobs/jsrPropertyPreparseTestJob.xml"); JsrBeanDefinitionDocumentReader documentReader = new JsrBeanDefinitionDocumentReader(applicationContext); documentReader.initProperties(document.getDocumentElement()); Properties resolvedProperties = documentReader.getJobProperties(); assertNotNull(resolvedProperties); assertTrue("Wrong number of job properties", resolvedProperties.size() == 3); assertEquals("jobProperty1Value", resolvedProperties.getProperty("jobProperty1")); assertEquals("jobProperty1Value", resolvedProperties.getProperty("jobProperty2")); assertEquals("myfile.txt", resolvedProperties.getProperty("jobProperty3")); }
private void resolvePropertyValues(Properties properties) { for (String propertyKey : properties.stringPropertyNames()) { String resolvedPropertyValue = resolvePropertyValue(properties.getProperty(propertyKey)); if(!properties.getProperty(propertyKey).equals(resolvedPropertyValue)) { properties.setProperty(propertyKey, resolvedPropertyValue); } } }
private Properties initJobParameters() { Properties jobParameters = new Properties(); if (getBeanDefinitionRegistry().containsBeanDefinition(JOB_PARAMETERS_BEAN_DEFINITION_NAME)) { BeanDefinition beanDefinition = getBeanDefinitionRegistry().getBeanDefinition(JOB_PARAMETERS_BEAN_DEFINITION_NAME); Properties properties = (Properties) beanDefinition.getConstructorArgumentValues() .getGenericArgumentValue(Properties.class) .getValue(); if (properties == null) { return new Properties(); } Enumeration<?> propertyNames = properties.propertyNames(); while(propertyNames.hasMoreElements()) { String curName = (String) propertyNames.nextElement(); jobParameters.put(curName, properties.getProperty(curName)); } } return jobParameters; }
@Override protected void preProcessXml(Element root) { if (ROOT_JOB_ELEMENT_NAME.equals(root.getLocalName())) { initProperties(root); transformDocument(root); if (LOG.isDebugEnabled()) { LOG.debug("Transformed XML from preProcessXml: " + elementToString(root)); } } }
protected void initProperties(Element root) { propertyMap.put(JOB_PARAMETERS_KEY_NAME, initJobParameters()); propertyMap.put(JOB_PROPERTIES_KEY_NAME, initJobProperties(root)); resolvePropertyValues(propertyMap.get(JOB_PARAMETERS_KEY_NAME)); resolvePropertyValues(propertyMap.get(JOB_PROPERTIES_KEY_NAME)); }
NodeIterator iterator = traversal.createNodeIterator(root, NodeFilter.SHOW_ELEMENT, null, true); BeanDefinitionRegistry registry = getBeanDefinitionRegistry(); Map<String, Integer> referenceCountMap = new HashMap<String, Integer>(); String resolvedValue = resolveValue(nodeValue); String newNodeValue = resolvedValue; boolean isClass = isClass(resolvedValue); Integer referenceCount = referenceCountMap.get(resolvedValue); String resolvedValue = resolveValue(nodeValue);
private String resolvePropertyValue(String propertyValue) { String resolvedValue = resolveValue(propertyValue); Matcher jobParameterMatcher = OPERATOR_PATTERN.matcher(resolvedValue); while (jobParameterMatcher.find()) { resolvedValue = resolvePropertyValue(resolvedValue); } return resolvedValue; }
private void resolvePropertyValues(Properties properties) { for (String propertyKey : properties.stringPropertyNames()) { String resolvedPropertyValue = resolvePropertyValue(properties.getProperty(propertyKey)); if(!properties.getProperty(propertyKey).equals(resolvedPropertyValue)) { properties.setProperty(propertyKey, resolvedPropertyValue); } } }
private BeanDefinitionRegistry getBeanDefinitionRegistry() { return beanDefinitionRegistry != null ? beanDefinitionRegistry : getReaderContext().getRegistry(); }