Initial commit of package detangle work
This commit is contained in:
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package org.springframework.batch.core.configuration.xml;
|
||||
|
||||
import org.springframework.batch.core.jsr.configuration.xml.JobFactoryBean;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.step.AbstractStep;
|
||||
import org.springframework.beans.BeansException;
|
||||
@@ -127,14 +126,7 @@ public class CoreNamespacePostProcessor implements BeanPostProcessor, BeanFactor
|
||||
if (jobRepository == null) {
|
||||
fb.setJobRepository((JobRepository) applicationContext.getBean(DEFAULT_JOB_REPOSITORY_NAME));
|
||||
}
|
||||
} else if(bean instanceof JobFactoryBean) {
|
||||
JobFactoryBean fb = (JobFactoryBean) bean;
|
||||
JobRepository jobRepository = fb.getJobRepository();
|
||||
if (jobRepository == null) {
|
||||
fb.setJobRepository((JobRepository) applicationContext.getBean(DEFAULT_JOB_REPOSITORY_NAME));
|
||||
}
|
||||
}
|
||||
else if (bean instanceof StepParserStepFactoryBean) {
|
||||
} else if (bean instanceof StepParserStepFactoryBean) {
|
||||
StepParserStepFactoryBean<?, ?> fb = (StepParserStepFactoryBean<?, ?>) bean;
|
||||
JobRepository jobRepository = fb.getJobRepository();
|
||||
if (jobRepository == null) {
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright 2014 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.batch.core.jsr.configuration.xml;
|
||||
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
|
||||
/**
|
||||
* @author Michael Minella
|
||||
*/
|
||||
public class JsrNamespacePostProcessor implements BeanPostProcessor, ApplicationContextAware {
|
||||
|
||||
private static final String DEFAULT_JOB_REPOSITORY_NAME = "jobRepository";
|
||||
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||
this.applicationContext = applicationContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
|
||||
if(bean instanceof JobFactoryBean) {
|
||||
JobFactoryBean fb = (JobFactoryBean) bean;
|
||||
JobRepository jobRepository = fb.getJobRepository();
|
||||
if (jobRepository == null) {
|
||||
fb.setJobRepository((JobRepository) applicationContext.getBean(DEFAULT_JOB_REPOSITORY_NAME));
|
||||
}
|
||||
}
|
||||
|
||||
return bean;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
|
||||
return bean;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -15,11 +15,9 @@
|
||||
*/
|
||||
package org.springframework.batch.core.jsr.configuration.xml;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.springframework.batch.core.jsr.configuration.support.BatchPropertyBeanPostProcessor;
|
||||
import org.springframework.batch.core.jsr.launch.support.BatchPropertyBeanPostProcessor;
|
||||
import org.springframework.batch.core.jsr.configuration.support.JsrAutowiredAnnotationBeanPostProcessor;
|
||||
import org.springframework.batch.core.jsr.configuration.support.JsrBeanScopeBeanFactoryPostProcessor;
|
||||
import org.springframework.batch.core.jsr.partition.support.JsrBeanScopeBeanFactoryPostProcessor;
|
||||
import org.springframework.batch.core.jsr.configuration.support.ThreadLocalClassloaderBeanPostProcessor;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.support.AbstractBeanDefinition;
|
||||
@@ -27,6 +25,8 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.xml.ParserContext;
|
||||
import org.springframework.context.annotation.AnnotationConfigUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* Utility methods used in parsing of the JSR-352 batch namespace and related helpers.
|
||||
*
|
||||
@@ -41,6 +41,7 @@ class JsrNamespaceUtils {
|
||||
private static final String BEAN_SCOPE_POST_PROCESSOR_BEAN_NAME = "beanScopeBeanPostProcessor";
|
||||
private static final String BATCH_PROPERTY_CONTEXT_BEAN_CLASS_NAME = "org.springframework.batch.core.jsr.configuration.support.BatchPropertyContext";
|
||||
private static final String BATCH_PROPERTY_CONTEXT_BEAN_NAME = "batchPropertyContext";
|
||||
private static final String JSR_NAMESPACE_POST_PROCESSOR = "jsrNamespacePostProcessor";
|
||||
|
||||
static void autoregisterJsrBeansForNamespace(ParserContext parserContext) {
|
||||
autoRegisterJobProperties(parserContext);
|
||||
@@ -49,6 +50,11 @@ class JsrNamespaceUtils {
|
||||
autoRegisterThreadLocalClassloaderBeanPostProcessor(parserContext);
|
||||
autoRegisterBeanScopeBeanFactoryPostProcessor(parserContext);
|
||||
autoRegisterBatchPropertyContext(parserContext);
|
||||
autoRegisterNamespacePostProcessor(parserContext);
|
||||
}
|
||||
|
||||
private static void autoRegisterNamespacePostProcessor(ParserContext parserContext) {
|
||||
registerPostProcessor(parserContext, JsrNamespacePostProcessor.class, BeanDefinition.ROLE_INFRASTRUCTURE, JSR_NAMESPACE_POST_PROCESSOR);
|
||||
}
|
||||
|
||||
private static void autoRegisterBeanScopeBeanFactoryPostProcessor(
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright 2014 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.batch.core.jsr.configuration.xml;
|
||||
|
||||
import org.springframework.batch.core.jsr.JsrStepListenerMetaData;
|
||||
import org.springframework.batch.core.listener.ListenerMetaData;
|
||||
import org.springframework.batch.core.listener.StepListenerFactoryBean;
|
||||
import org.springframework.batch.core.listener.StepListenerMetaData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Michael Minella
|
||||
*/
|
||||
public class JsrStepListenerFactoryBean extends StepListenerFactoryBean {
|
||||
|
||||
@Override
|
||||
protected ListenerMetaData getMetaDataFromPropertyName(String propertyName) {
|
||||
ListenerMetaData metaData = StepListenerMetaData.fromPropertyName(propertyName);
|
||||
|
||||
if(metaData == null) {
|
||||
metaData = JsrStepListenerMetaData.fromPropertyName(propertyName);
|
||||
}
|
||||
|
||||
return metaData;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ListenerMetaData[] getMetaDataValues() {
|
||||
List<ListenerMetaData> values = new ArrayList<ListenerMetaData>();
|
||||
Collections.addAll(values, StepListenerMetaData.values());
|
||||
Collections.addAll(values, JsrStepListenerMetaData.values());
|
||||
|
||||
return values.toArray(new ListenerMetaData[values.size()]);
|
||||
}
|
||||
}
|
||||
@@ -15,11 +15,8 @@
|
||||
*/
|
||||
package org.springframework.batch.core.jsr.configuration.xml;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.springframework.batch.core.jsr.configuration.support.BatchArtifactType;
|
||||
import org.springframework.batch.core.jsr.job.flow.support.state.JsrStepState;
|
||||
import org.springframework.batch.core.listener.StepListenerFactoryBean;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.config.RuntimeBeanReference;
|
||||
import org.springframework.beans.factory.parsing.BeanComponentDefinition;
|
||||
@@ -32,6 +29,8 @@ import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Parser for the <step /> element defined by JSR-352.
|
||||
*
|
||||
@@ -75,7 +74,7 @@ public class StepParser extends AbstractSingleBeanDefinitionParser {
|
||||
allowStartIfCompletValue = Boolean.valueOf(allowStartIfComplete);
|
||||
}
|
||||
|
||||
new ListenerParser(StepListenerFactoryBean.class, "listeners").parseListeners(element, parserContext, bd, stepName);
|
||||
new ListenerParser(JsrStepListenerFactoryBean.class, "listeners").parseListeners(element, parserContext, bd, stepName);
|
||||
new PropertyParser(stepName, parserContext, BatchArtifactType.STEP, stepName).parseProperties(element);
|
||||
|
||||
// look at all nested elements
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.batch.core.jsr.configuration.support;
|
||||
package org.springframework.batch.core.jsr.launch.support;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Field;
|
||||
@@ -26,6 +26,8 @@ import javax.batch.api.BatchProperty;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.batch.core.jsr.configuration.support.BatchPropertyContext;
|
||||
import org.springframework.batch.core.jsr.configuration.support.JsrExpressionParser;
|
||||
import org.springframework.batch.core.scope.StepScope;
|
||||
import org.springframework.batch.core.scope.context.StepContext;
|
||||
import org.springframework.batch.core.scope.context.StepSynchronizationManager;
|
||||
@@ -13,11 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.batch.core.jsr.configuration.support;
|
||||
|
||||
import javax.batch.api.partition.PartitionAnalyzer;
|
||||
import javax.batch.api.partition.PartitionMapper;
|
||||
import javax.batch.api.partition.PartitionReducer;
|
||||
package org.springframework.batch.core.jsr.partition.support;
|
||||
|
||||
import org.springframework.batch.core.jsr.configuration.xml.StepFactoryBean;
|
||||
import org.springframework.batch.core.jsr.partition.JsrPartitionHandler;
|
||||
@@ -29,6 +25,10 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
import org.springframework.beans.factory.config.RuntimeBeanReference;
|
||||
import org.springframework.beans.factory.support.AbstractBeanDefinition;
|
||||
|
||||
import javax.batch.api.partition.PartitionAnalyzer;
|
||||
import javax.batch.api.partition.PartitionMapper;
|
||||
import javax.batch.api.partition.PartitionReducer;
|
||||
|
||||
/**
|
||||
* In order for property resolution to occur correctly within the scope of a JSR-352
|
||||
* batch job, initialization of job level artifacts must occur on the same thread that
|
||||
@@ -15,12 +15,7 @@
|
||||
*/
|
||||
package org.springframework.batch.core.listener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.batch.core.StepListener;
|
||||
import org.springframework.batch.core.jsr.JsrStepListenerMetaData;
|
||||
|
||||
/**
|
||||
* This {@link AbstractListenerFactoryBean} implementation is used to create a
|
||||
@@ -36,22 +31,12 @@ public class StepListenerFactoryBean extends AbstractListenerFactoryBean<StepLis
|
||||
|
||||
@Override
|
||||
protected ListenerMetaData getMetaDataFromPropertyName(String propertyName) {
|
||||
ListenerMetaData metaData = StepListenerMetaData.fromPropertyName(propertyName);
|
||||
|
||||
if(metaData == null) {
|
||||
metaData = JsrStepListenerMetaData.fromPropertyName(propertyName);
|
||||
}
|
||||
|
||||
return metaData;
|
||||
return StepListenerMetaData.fromPropertyName(propertyName);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ListenerMetaData[] getMetaDataValues() {
|
||||
List<ListenerMetaData> values = new ArrayList<ListenerMetaData>();
|
||||
Collections.addAll(values, StepListenerMetaData.values());
|
||||
Collections.addAll(values, JsrStepListenerMetaData.values());
|
||||
|
||||
return values.toArray(new ListenerMetaData[0]);
|
||||
return StepListenerMetaData.values();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user