From a193e1051fc2db06e0f97bf3c30bc2b000f12755 Mon Sep 17 00:00:00 2001 From: Michael Minella Date: Thu, 20 Dec 2012 15:40:02 -0600 Subject: [PATCH 1/2] BATCH-1938: Upgraded to Spring 3.2.0.RELEASE --- .../scope/util/PlaceholderTargetSource.java | 59 ++++++++++++++----- spring-batch-parent/pom.xml | 2 +- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java index 65b1cb1d6..c2f5b3887 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/scope/util/PlaceholderTargetSource.java @@ -16,6 +16,7 @@ package org.springframework.batch.core.scope.util; import java.beans.PropertyEditor; +import java.lang.reflect.Field; import java.util.Date; import java.util.List; import java.util.Map; @@ -56,9 +57,9 @@ import org.springframework.util.StringValueResolver; * non-primitive values directly by making the whole bean property value into a * placeholder (e.g. value="%{foo}" where foo is a * property in the context). - * + * * @author Dave Syer - * + * */ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements InitializingBean { @@ -76,7 +77,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I /** * Public setter for the context factory. Used to construct the context root * whenever placeholders are replaced in a bean definition. - * + * * @param contextFactory the {@link ContextFactory} */ public void setContextFactory(ContextFactory contextFactory) { @@ -85,10 +86,11 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I /* * (non-Javadoc) - * + * * @see * org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */ + @Override public void afterPropertiesSet() { Assert.notNull(contextFactory, "The ContextFactory must be set."); beanName = getTargetBeanName() + "#" + contextFactory.getContextId(); @@ -96,7 +98,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I /* * (non-Javadoc) - * + * * @see org.springframework.aop.target.LazyInitTargetSource#getTarget() */ @Override @@ -116,9 +118,16 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I beanFactory.copyConfigurationFrom(listableBeanFactory); final TypeConverter contextTypeConverter = new TypeConverter() { + @Override @SuppressWarnings({ "unchecked", "rawtypes" }) public Object convertIfNecessary(Object value, Class requiredType, MethodParameter methodParam) throws TypeMismatchException { + return doConvertIfNecessary(value, requiredType, + methodParam); + } + + private Object doConvertIfNecessary(Object value, + Class requiredType, Object param) { Object result = null; if (value instanceof String) { String key = (String) value; @@ -155,12 +164,30 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I result = value.toString(); } } - return result != null ? result : typeConverter.convertIfNecessary(value, requiredType, methodParam); + + if(result != null) { + return result; + } + else if(param instanceof Field) { + return typeConverter.convertIfNecessary(value, requiredType, (Field) param); + } + else { + return typeConverter.convertIfNecessary(value, requiredType, (MethodParameter) param); + } } + @Override @SuppressWarnings("rawtypes") public Object convertIfNecessary(Object value, Class requiredType) throws TypeMismatchException { - return convertIfNecessary(value, requiredType, null); + return doConvertIfNecessary(value, requiredType, null); + } + + @Override + public Object convertIfNecessary(Object value, + Class requiredType, Field field) + throws TypeMismatchException { + return doConvertIfNecessary(value, requiredType, + field); } }; beanFactory.setTypeConverter(contextTypeConverter); @@ -220,7 +247,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I try { // Give it one chance to convert - this forces the default editors // to be registered - result = (String) typeConverter.convertIfNecessary(value, String.class); + result = typeConverter.convertIfNecessary(value, String.class); } catch (TypeMismatchException e) { // ignore @@ -287,7 +314,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I * Determine whether the input is a whole key in the form * %{...}, i.e. starting with the correct prefix, ending with * the correct suffix and containing only one of each. - * + * * @param value a String with placeholder patterns * @return true if the value is a key */ @@ -299,9 +326,9 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I /** * A {@link BeanDefinitionVisitor} that will replace embedded placeholders * with values from the provided context. - * + * * @author Dave Syer - * + * */ private final class PlaceholderBeanDefinitionVisitor extends BeanDefinitionVisitor { @@ -309,6 +336,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I super(new PlaceholderStringValueResolver(typeConverter)); } + @Override @SuppressWarnings({ "unchecked", "rawtypes" }) protected Object resolveValue(Object value) { @@ -367,14 +395,14 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I else if (value instanceof BeanDefinition) { BeanDefinition newValue = new GenericBeanDefinition((BeanDefinition) value); - visitBeanDefinition((BeanDefinition) newValue); + visitBeanDefinition(newValue); value = newValue; } else if (value instanceof BeanDefinitionHolder) { BeanDefinition newValue = new GenericBeanDefinition(((BeanDefinitionHolder) value).getBeanDefinition()); - visitBeanDefinition((BeanDefinition) newValue); + visitBeanDefinition(newValue); value = newValue; } @@ -398,6 +426,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I this.typeConverter = typeConverter; } + @Override public String resolveStringValue(String strVal) { if (!strVal.contains(PLACEHOLDER_PREFIX)) { return strVal; @@ -407,7 +436,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I /** * Convenience method to replace all the placeholders in the input. - * + * * @param typeConverter a {@link TypeConverter} that can be used to * convert placeholder keys to context values * @param value the value to replace placeholders in @@ -454,7 +483,7 @@ public class PlaceholderTargetSource extends SimpleBeanTargetSource implements I Class requiredType, TypeConverter typeConverter) { Object property = convertFromContext(key, requiredType); if (property != null) { - result.replace(first, next + 1, (String) typeConverter.convertIfNecessary(property, String.class)); + result.replace(first, next + 1, typeConverter.convertIfNecessary(property, String.class)); return true; } return false; diff --git a/spring-batch-parent/pom.xml b/spring-batch-parent/pom.xml index 4a6d0960c..039854940 100644 --- a/spring-batch-parent/pom.xml +++ b/spring-batch-parent/pom.xml @@ -29,7 +29,7 @@ - 3.1.2.RELEASE + 3.2.0.RELEASE 1.1.2.RELEASE 4.10 1.0.0.RELEASE From c38a096fe0535ee0a25b17cdfe6deb9c9be0c388 Mon Sep 17 00:00:00 2001 From: Michael Minella Date: Thu, 20 Dec 2012 15:53:41 -0600 Subject: [PATCH 2/2] BATCH-1938: Updated pom to reference Spring 3.2.0.RELEASE --- archetypes/simple-cli/pom.xml | 4 ++-- spring-batch-core/pom.xml | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/archetypes/simple-cli/pom.xml b/archetypes/simple-cli/pom.xml index 3769bdaf6..ad3ed2ae9 100644 --- a/archetypes/simple-cli/pom.xml +++ b/archetypes/simple-cli/pom.xml @@ -13,7 +13,7 @@ the project jar on the classpath and run the CommandLineJobRunner directly or with "java -jar launch-context.xml job1". - 3.1.2.RELEASE + 3.2.0.RELEASE 2.2.0.BUILD-SNAPSHOT false 4.10 @@ -154,7 +154,7 @@ - org.eclipse.m2e diff --git a/spring-batch-core/pom.xml b/spring-batch-core/pom.xml index f7e12e584..c36143482 100644 --- a/spring-batch-core/pom.xml +++ b/spring-batch-core/pom.xml @@ -41,7 +41,9 @@ hsqldb - com.h2databaseh21.2.132 + com.h2database + h2 + 1.2.132 commons-io