diff --git a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java index 77d63338e..e43efaa83 100644 --- a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java +++ b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java @@ -42,6 +42,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; +import org.apache.struts2.conversion.StrutsTypeConverterHolder; +import org.apache.struts2.conversion.StrutsTypeConverterCreator; import java.util.*; @@ -243,7 +245,7 @@ public class DefaultConfiguration implements Configuration { builder.factory(ResultFactory.class, DefaultResultFactory.class, Scope.SINGLETON); builder.factory(InterceptorFactory.class, DefaultInterceptorFactory.class, Scope.SINGLETON); builder.factory(com.opensymphony.xwork2.factory.ValidatorFactory.class, com.opensymphony.xwork2.factory.DefaultValidatorFactory.class, Scope.SINGLETON); - builder.factory(ConverterFactory.class, DefaultConverterFactory.class, Scope.SINGLETON); + builder.factory(ConverterFactory.class, StrutsConverterFactory.class, Scope.SINGLETON); builder.factory(UnknownHandlerFactory.class, DefaultUnknownHandlerFactory.class, Scope.SINGLETON); builder.factory(FileManager.class, "system", DefaultFileManager.class, Scope.SINGLETON); @@ -257,8 +259,8 @@ public class DefaultConfiguration implements Configuration { builder.factory(ConversionPropertiesProcessor.class, DefaultConversionPropertiesProcessor.class, Scope.SINGLETON); builder.factory(ConversionFileProcessor.class, DefaultConversionFileProcessor.class, Scope.SINGLETON); builder.factory(ConversionAnnotationProcessor.class, DefaultConversionAnnotationProcessor.class, Scope.SINGLETON); - builder.factory(TypeConverterCreator.class, DefaultTypeConverterCreator.class, Scope.SINGLETON); - builder.factory(TypeConverterHolder.class, DefaultTypeConverterHolder.class, Scope.SINGLETON); + builder.factory(TypeConverterCreator.class, StrutsTypeConverterCreator.class, Scope.SINGLETON); + builder.factory(TypeConverterHolder.class, StrutsTypeConverterHolder.class, Scope.SINGLETON); builder.factory(XWorkBasicConverter.class, Scope.SINGLETON); builder.factory(TypeConverter.class, StrutsConstants.STRUTS_CONVERTER_COLLECTION, CollectionConverter.class, Scope.SINGLETON); diff --git a/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java b/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java index 7adb69e49..1b0486460 100644 --- a/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java +++ b/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java @@ -56,8 +56,8 @@ import com.opensymphony.xwork2.conversion.impl.DefaultConversionAnnotationProces import com.opensymphony.xwork2.conversion.impl.DefaultConversionFileProcessor; import com.opensymphony.xwork2.conversion.impl.DefaultConversionPropertiesProcessor; import com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer; -import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverterCreator; -import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverterHolder; +import org.apache.struts2.conversion.StrutsTypeConverterCreator; +import org.apache.struts2.conversion.StrutsTypeConverterHolder; import com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler; import com.opensymphony.xwork2.conversion.impl.NumberConverter; import com.opensymphony.xwork2.conversion.impl.StringConverter; @@ -66,7 +66,7 @@ import com.opensymphony.xwork2.conversion.impl.XWorkConverter; import com.opensymphony.xwork2.factory.ActionFactory; import com.opensymphony.xwork2.factory.ConverterFactory; import com.opensymphony.xwork2.factory.DefaultActionFactory; -import com.opensymphony.xwork2.factory.DefaultConverterFactory; +import com.opensymphony.xwork2.factory.StrutsConverterFactory; import com.opensymphony.xwork2.factory.DefaultInterceptorFactory; import com.opensymphony.xwork2.factory.DefaultResultFactory; import com.opensymphony.xwork2.factory.InterceptorFactory; @@ -112,7 +112,6 @@ import ognl.PropertyAccessor; import org.apache.struts2.StrutsConstants; import org.apache.struts2.dispatcher.HttpParameters; import org.apache.struts2.dispatcher.Parameter; -import org.apache.struts2.factory.PrefixBasedActionProxyFactory; import java.util.ArrayList; import java.util.Collection; @@ -148,7 +147,7 @@ public class XWorkConfigurationProvider implements ConfigurationProvider { .factory(ResultFactory.class, DefaultResultFactory.class) .factory(InterceptorFactory.class, DefaultInterceptorFactory.class) .factory(com.opensymphony.xwork2.factory.ValidatorFactory.class, com.opensymphony.xwork2.factory.DefaultValidatorFactory.class) - .factory(ConverterFactory.class, DefaultConverterFactory.class) + .factory(ConverterFactory.class, StrutsConverterFactory.class) .factory(UnknownHandlerFactory.class, DefaultUnknownHandlerFactory.class) .factory(ActionProxyFactory.class, DefaultActionProxyFactory.class, Scope.SINGLETON) @@ -159,8 +158,8 @@ public class XWorkConfigurationProvider implements ConfigurationProvider { .factory(ConversionPropertiesProcessor.class, DefaultConversionPropertiesProcessor.class, Scope.SINGLETON) .factory(ConversionFileProcessor.class, DefaultConversionFileProcessor.class, Scope.SINGLETON) .factory(ConversionAnnotationProcessor.class, DefaultConversionAnnotationProcessor.class, Scope.SINGLETON) - .factory(TypeConverterCreator.class, DefaultTypeConverterCreator.class, Scope.SINGLETON) - .factory(TypeConverterHolder.class, DefaultTypeConverterHolder.class, Scope.SINGLETON) + .factory(TypeConverterCreator.class, StrutsTypeConverterCreator.class, Scope.SINGLETON) + .factory(TypeConverterHolder.class, StrutsTypeConverterHolder.class, Scope.SINGLETON) .factory(FileManager.class, "system", DefaultFileManager.class, Scope.SINGLETON) .factory(FileManagerFactory.class, DefaultFileManagerFactory.class, Scope.SINGLETON) diff --git a/core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java b/core/src/main/java/com/opensymphony/xwork2/factory/StrutsConverterFactory.java similarity index 87% rename from core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java rename to core/src/main/java/com/opensymphony/xwork2/factory/StrutsConverterFactory.java index 73a45b128..2c873e60b 100644 --- a/core/src/main/java/com/opensymphony/xwork2/factory/DefaultConverterFactory.java +++ b/core/src/main/java/com/opensymphony/xwork2/factory/StrutsConverterFactory.java @@ -29,9 +29,9 @@ import java.util.Map; /** * Default implementation */ -public class DefaultConverterFactory implements ConverterFactory { +public class StrutsConverterFactory implements ConverterFactory { - private static final Logger LOG = LogManager.getLogger(DefaultConverterFactory.class); + private static final Logger LOG = LogManager.getLogger(StrutsConverterFactory.class); private Container container; @@ -42,7 +42,7 @@ public class DefaultConverterFactory implements ConverterFactory { public TypeConverter buildConverter(Class converterClass, Map extraContext) throws Exception { LOG.debug("Creating converter of type [{}]", converterClass.getCanonicalName()); - return container.getInstance(converterClass); + return container.inject(converterClass); } } diff --git a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverterCreator.java b/core/src/main/java/org/apache/struts2/conversion/StrutsTypeConverterCreator.java similarity index 65% rename from core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverterCreator.java rename to core/src/main/java/org/apache/struts2/conversion/StrutsTypeConverterCreator.java index 6bfb19e3b..eee8ff7df 100644 --- a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverterCreator.java +++ b/core/src/main/java/org/apache/struts2/conversion/StrutsTypeConverterCreator.java @@ -16,18 +16,17 @@ * specific language governing permissions and limitations * under the License. */ -package com.opensymphony.xwork2.conversion.impl; +package org.apache.struts2.conversion; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.conversion.TypeConverter; import com.opensymphony.xwork2.conversion.TypeConverterCreator; import com.opensymphony.xwork2.inject.Inject; -import com.opensymphony.xwork2.ognl.XWorkTypeConverterWrapper; /** * Default implementation of {@link TypeConverterCreator} */ -public class DefaultTypeConverterCreator implements TypeConverterCreator { +public class StrutsTypeConverterCreator implements TypeConverterCreator { private ObjectFactory objectFactory; @@ -37,24 +36,16 @@ public class DefaultTypeConverterCreator implements TypeConverterCreator { } public TypeConverter createTypeConverter(String className) throws Exception { - Object obj = objectFactory.buildBean(className, null); - return getTypeConverter(obj); + Class clazz = objectFactory.getClassInstance(className); + return createTypeConverter(clazz); } public TypeConverter createTypeConverter(Class clazz) throws Exception { - Object obj = objectFactory.buildBean(clazz, null); - return getTypeConverter(obj); - } - - protected TypeConverter getTypeConverter(Object obj) { - if (obj instanceof TypeConverter) { - return (TypeConverter) obj; - - // For backwards compatibility - } else if (obj instanceof ognl.TypeConverter) { - return new XWorkTypeConverterWrapper((ognl.TypeConverter) obj); + if (TypeConverter.class.isAssignableFrom(clazz)) { + Class converterClass = (Class) clazz; + return objectFactory.buildConverter(converterClass, null); } else { - throw new IllegalArgumentException("Type converter class " + obj.getClass() + " doesn't implement com.opensymphony.xwork2.conversion.TypeConverter"); + throw new IllegalArgumentException("Type converter class " + clazz.getName() + " doesn't implement " + TypeConverter.class.getName()); } } diff --git a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverterHolder.java b/core/src/main/java/org/apache/struts2/conversion/StrutsTypeConverterHolder.java similarity index 96% rename from core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverterHolder.java rename to core/src/main/java/org/apache/struts2/conversion/StrutsTypeConverterHolder.java index f179251d4..b7e31adae 100644 --- a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverterHolder.java +++ b/core/src/main/java/org/apache/struts2/conversion/StrutsTypeConverterHolder.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package com.opensymphony.xwork2.conversion.impl; +package org.apache.struts2.conversion; import com.opensymphony.xwork2.conversion.TypeConverter; import com.opensymphony.xwork2.conversion.TypeConverterHolder; @@ -28,7 +28,7 @@ import java.util.Map; /** * Default implementation of {@link TypeConverterHolder} */ -public class DefaultTypeConverterHolder implements TypeConverterHolder { +public class StrutsTypeConverterHolder implements TypeConverterHolder { /** * Record class and its type converter mapping. diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index 61100b6d2..d4e28c386 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -69,7 +69,7 @@ - + @@ -114,8 +114,8 @@ - - + + diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml index a6cf3735f..b2779461d 100644 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml +++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml @@ -54,11 +54,11 @@ - - + + - + diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml index c694b8937..c04dc9eb9 100644 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml +++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml @@ -54,11 +54,11 @@ - - + + - + diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml index ce5f01633..816d65407 100644 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml +++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml @@ -54,11 +54,11 @@ - - + + - + diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml index dd6a41c4d..0a2f09d1d 100644 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml +++ b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml @@ -54,11 +54,11 @@ - - + + - +