private void parseCustomCheckpointAlgorithm(Element element, ParserContext parserContext, MutablePropertyValues propertyValues, String stepName) { List<Element> elements = DomUtils.getChildElementsByTagName(element, CHECKPOINT_ALGORITHM_ELEMENT); if(elements.size() == 1) { Element checkpointAlgorithmElement = elements.get(0); String name = checkpointAlgorithmElement.getAttribute(REF_ATTRIBUTE); if(StringUtils.hasText(name)) { propertyValues.addPropertyValue("stepChunkCompletionPolicy", new RuntimeBeanReference(name)); } new PropertyParser(name, parserContext, BatchArtifactType.STEP_ARTIFACT, stepName).parseProperties(checkpointAlgorithmElement); } else if(elements.size() > 1){ parserContext.getReaderContext().error( "The <checkpoint-algorithm/> element may not appear more than once in a single <" + element.getNodeName() + "/>.", element); } } }
private void parseReducerElement(Element element, ParserContext parserContext, MutablePropertyValues factoryBeanProperties) { Element reducerElement = DomUtils.getChildElementByTagName(element, REDUCER_ELEMENT); if(reducerElement != null) { String reducerName = reducerElement.getAttribute(REF); factoryBeanProperties.add(PARTITION_REDUCER_PROPERTY, new RuntimeBeanReference(reducerName)); new PropertyParser(reducerName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(reducerElement); } }
private void parseAnalyzerElement(Element element, ParserContext parserContext, MutablePropertyValues properties) { Element analyzerElement = DomUtils.getChildElementByTagName(element, ANALYZER_ELEMENT); if(analyzerElement != null) { String analyzerName = analyzerElement.getAttribute(REF); properties.add(PARTITION_ANALYZER_PROPERTY, new RuntimeBeanReference(analyzerName)); new PropertyParser(analyzerName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(analyzerElement); } }
private void parseMapperElement(Element element, ParserContext parserContext, MutablePropertyValues properties) { Element mapperElement = DomUtils.getChildElementByTagName(element, MAPPER_ELEMENT); if(mapperElement != null) { String mapperName = mapperElement.getAttribute(REF); properties.add(PARTITION_MAPPER_PROPERTY, new RuntimeBeanReference(mapperName)); new PropertyParser(mapperName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(mapperElement); } }
new PropertyParser(artifactName, parserContext, BatchArtifactType.STEP_ARTIFACT, stepName).parseProperties(nestedElement); } else if(name.equals(PROCESSOR_ELEMENT)) { if (StringUtils.hasText(artifactName)) { new PropertyParser(artifactName, parserContext, BatchArtifactType.STEP_ARTIFACT, stepName).parseProperties(nestedElement); } else if(name.equals(WRITER_ELEMENT)) { if (StringUtils.hasText(artifactName)) { new PropertyParser(artifactName, parserContext, BatchArtifactType.STEP_ARTIFACT, stepName).parseProperties(nestedElement); } else if(name.equals(SKIPPABLE_EXCEPTION_CLASSES_ELEMENT)) { ManagedMap<TypedStringValue, Boolean> exceptionClasses = new ExceptionElementParser().parse(element, parserContext, SKIPPABLE_EXCEPTION_CLASSES_ELEMENT);
public void parseBatchlet(Element batchletElement, AbstractBeanDefinition bd, ParserContext parserContext, String stepName) { bd.setBeanClass(StepFactoryBean.class); bd.setAttribute("isNamespaceStep", false); String taskletRef = batchletElement.getAttribute(REF); if (StringUtils.hasText(taskletRef)) { bd.getPropertyValues().addPropertyValue("stepTasklet", new RuntimeBeanReference(taskletRef)); } bd.setRole(BeanDefinition.ROLE_SUPPORT); bd.setSource(parserContext.extractSource(batchletElement)); new PropertyParser(taskletRef, parserContext, BatchArtifactType.STEP_ARTIFACT, stepName).parseProperties(batchletElement); } }
protected void parsePartitionPlan(Element element, ParserContext parserContext, String stepName, MutablePropertyValues properties) { Element planElement = DomUtils.getChildElementByTagName(element, PLAN_ELEMENT); if(planElement != null) { String partitions = planElement.getAttribute(PARTITIONS_ATTRIBUTE); String threads = planElement.getAttribute(THREADS_ATTRIBUTE); if(!StringUtils.hasText(threads)) { threads = partitions; } List<Element> partitionProperties = DomUtils.getChildElementsByTagName(planElement, PROPERTIES_ELEMENT); if(partitionProperties != null) { for (Element partition : partitionProperties) { String partitionStepName = stepName + ":partition" + partition.getAttribute("partition"); new PropertyParser(partitionStepName, parserContext, BatchArtifactType.STEP, partitionStepName).parseProperty(partition); } } properties.add(THREADS_PROPERTY, threads); properties.add(PARTITIONS_PROPERTY, partitions); } } }
new PropertyParser(jobName, parserContext, BatchArtifactType.JOB).parseProperties(element);
private void parseCollectorElement(Element element, ParserContext parserContext, MutablePropertyValues factoryBeanProperties, MutablePropertyValues properties) { Element collectorElement = DomUtils.getChildElementByTagName(element, COLLECTOR_ELEMENT); if(collectorElement != null) { // Only needed if a collector is used registerCollectorAnalyzerQueue(parserContext); properties.add(PARTITION_QUEUE_PROPERTY, new RuntimeBeanReference(name + "PartitionQueue")); properties.add(PARTITION_LOCK_PROPERTY, new RuntimeBeanReference(name + "PartitionLock")); factoryBeanProperties.add("partitionQueue", new RuntimeBeanReference(name + "PartitionQueue")); factoryBeanProperties.add("partitionLock", new RuntimeBeanReference(name + "PartitionLock")); String collectorName = collectorElement.getAttribute(REF); factoryBeanProperties.add(LISTENERS_PROPERTY, new RuntimeBeanReference(collectorName)); new PropertyParser(collectorName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(collectorElement); } }
private ManagedList<AbstractBeanDefinition> parseListeners(Element element, ParserContext parserContext, String stepName) { List<Element> listenersElements = DomUtils.getChildElementsByTagName(element, LISTENERS_ELEMENT); ManagedList<AbstractBeanDefinition> listeners = new ManagedList<>(); if (listenersElements.size() == 1) { Element listenersElement = listenersElements.get(0); CompositeComponentDefinition compositeDef = new CompositeComponentDefinition(listenersElement.getTagName(), parserContext.extractSource(element)); parserContext.pushContainingComponent(compositeDef); listeners.setMergeEnabled(false); List<Element> listenerElements = DomUtils.getChildElementsByTagName(listenersElement, LISTENER_ELEMENT); for (Element listenerElement : listenerElements) { String beanName = listenerElement.getAttribute(REF_ATTRIBUTE); BeanDefinitionBuilder bd = BeanDefinitionBuilder.genericBeanDefinition(listenerType); bd.addPropertyValue("delegate", new RuntimeBeanReference(beanName)); applyListenerScope(beanName, parserContext.getRegistry()); listeners.add(bd.getBeanDefinition()); new PropertyParser(beanName, parserContext, getBatchArtifactType(stepName), stepName).parseProperties(listenerElement); } parserContext.popAndRegisterContainingComponent(); } else if (listenersElements.size() > 1) { parserContext.getReaderContext().error( "The '<listeners/>' element may not appear more than once in a single " + element.getLocalName(), element); } return listeners; }
public Collection<BeanDefinition> parse(Element element, ParserContext parserContext, String jobFactoryRef) { BeanDefinitionBuilder factoryBuilder = BeanDefinitionBuilder.genericBeanDefinition(); AbstractBeanDefinition factoryDefinition = factoryBuilder.getRawBeanDefinition(); factoryDefinition.setBeanClass(DecisionStepFactoryBean.class); BeanDefinitionBuilder stateBuilder = BeanDefinitionBuilder.genericBeanDefinition(JsrStepState.class); String idAttribute = element.getAttribute(ID_ATTRIBUTE); parserContext.registerBeanComponent(new BeanComponentDefinition(factoryDefinition, idAttribute)); stateBuilder.addConstructorArgReference(idAttribute); String refAttribute = element.getAttribute(REF_ATTRIBUTE); factoryDefinition.getPropertyValues().add("decider", new RuntimeBeanReference(refAttribute)); factoryDefinition.getPropertyValues().add("name", idAttribute); if(StringUtils.hasText(jobFactoryRef)) { factoryDefinition.setAttribute("jobParserJobFactoryBeanRef", jobFactoryRef); } new PropertyParser(refAttribute, parserContext, BatchArtifactType.STEP_ARTIFACT, idAttribute).parseProperties(element); return FlowParser.getNextElements(parserContext, stateBuilder.getBeanDefinition(), element); } }
new PropertyParser(stepName, parserContext, BatchArtifactType.STEP, stepName).parseProperties(element);
private void parseAnalyzerElement(Element element, ParserContext parserContext, MutablePropertyValues properties) { Element analyzerElement = DomUtils.getChildElementByTagName(element, ANALYZER_ELEMENT); if(analyzerElement != null) { String analyzerName = analyzerElement.getAttribute(REF); properties.add(PARTITION_ANALYZER_PROPERTY, new RuntimeBeanReference(analyzerName)); new PropertyParser(analyzerName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(analyzerElement); } }
private void parseReducerElement(Element element, ParserContext parserContext, MutablePropertyValues factoryBeanProperties) { Element reducerElement = DomUtils.getChildElementByTagName(element, REDUCER_ELEMENT); if(reducerElement != null) { String reducerName = reducerElement.getAttribute(REF); factoryBeanProperties.add(PARTITION_REDUCER_PROPERTY, new RuntimeBeanReference(reducerName)); new PropertyParser(reducerName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(reducerElement); } }
private void paserMapperElement(Element element, ParserContext parserContext, MutablePropertyValues properties) { Element mapperElement = DomUtils.getChildElementByTagName(element, MAPPER_ELEMENT); if(mapperElement != null) { String mapperName = mapperElement.getAttribute(REF); properties.add(PARTITION_MAPPER_PROPERTY, new RuntimeBeanReference(mapperName)); new PropertyParser(mapperName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(mapperElement); } }
private void parseMapperElement(Element element, ParserContext parserContext, MutablePropertyValues properties) { Element mapperElement = DomUtils.getChildElementByTagName(element, MAPPER_ELEMENT); if(mapperElement != null) { String mapperName = mapperElement.getAttribute(REF); properties.add(PARTITION_MAPPER_PROPERTY, new RuntimeBeanReference(mapperName)); new PropertyParser(mapperName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(mapperElement); } }
private void parseMapperElement(Element element, ParserContext parserContext, MutablePropertyValues properties) { Element mapperElement = DomUtils.getChildElementByTagName(element, MAPPER_ELEMENT); if(mapperElement != null) { String mapperName = mapperElement.getAttribute(REF); properties.add(PARTITION_MAPPER_PROPERTY, new RuntimeBeanReference(mapperName)); new PropertyParser(mapperName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(mapperElement); } }
private void parseAnalyzerElement(Element element, ParserContext parserContext, MutablePropertyValues properties) { Element analyzerElement = DomUtils.getChildElementByTagName(element, ANALYZER_ELEMENT); if(analyzerElement != null) { String analyzerName = analyzerElement.getAttribute(REF); properties.add(PARTITION_ANALYZER_PROPERTY, new RuntimeBeanReference(analyzerName)); new PropertyParser(analyzerName, parserContext, BatchArtifactType.STEP_ARTIFACT, name).parseProperties(analyzerElement); } }
public void parseBatchlet(Element batchletElement, AbstractBeanDefinition bd, ParserContext parserContext, String stepName) { bd.setBeanClass(StepFactoryBean.class); bd.setAttribute("isNamespaceStep", false); String taskletRef = batchletElement.getAttribute(REF); if (StringUtils.hasText(taskletRef)) { bd.getPropertyValues().addPropertyValue("stepTasklet", new RuntimeBeanReference(taskletRef)); } bd.setRole(BeanDefinition.ROLE_SUPPORT); bd.setSource(parserContext.extractSource(batchletElement)); new PropertyParser(taskletRef, parserContext, BatchArtifactType.STEP_ARTIFACT, stepName).parseProperties(batchletElement); } }
public void parseBatchlet(Element batchletElement, AbstractBeanDefinition bd, ParserContext parserContext, String stepName) { bd.setBeanClass(StepFactoryBean.class); bd.setAttribute("isNamespaceStep", false); String taskletRef = batchletElement.getAttribute(REF); if (StringUtils.hasText(taskletRef)) { bd.getPropertyValues().addPropertyValue("stepTasklet", new RuntimeBeanReference(taskletRef)); } bd.setRole(BeanDefinition.ROLE_SUPPORT); bd.setSource(parserContext.extractSource(batchletElement)); new PropertyParser(taskletRef, parserContext, BatchArtifactType.STEP_ARTIFACT, stepName).parseProperties(batchletElement); } }