Author: lukaszlenart Date: Fri Jul 20 20:44:32 2012 New Revision: 1363947 URL: http://svn.apache.org/viewvc?rev=1363947&view=rev Log: WW-3843 adds proper extension points
Added: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java struts/struts2/trunk/core/src/main/resources/struts-default.xml struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/MockConfiguration.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkBasicConverter.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java Fri Jul 20 20:44:32 2012 @@ -233,4 +233,10 @@ public final class StrutsConstants { /** The{@link org.apache.struts2.views.util.UrlHelper} implementation class **/ public static final String STRUTS_URL_HELPER = "struts.view.urlHelper"; + /** {@link com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter} **/ + public static final String STRUTS_CONVERTER_COLLECTION = "struts.converter.collection"; + public static final String STRUTS_CONVERTER_ARRAY = "struts.converter.array"; + public static final String STRUTS_CONVERTER_DATE = "struts.converter.date"; + public static final String STRUTS_CONVERTER_NUMBER = "struts.converter.number"; + public static final String STRUTS_CONVERTER_STRING = "struts.converter.string"; } Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java Fri Jul 20 20:44:32 2012 @@ -27,10 +27,16 @@ import com.opensymphony.xwork2.FileManag import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.TextProvider; import com.opensymphony.xwork2.UnknownHandlerManager; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.ConfigurationProvider; import com.opensymphony.xwork2.conversion.ObjectTypeDeterminer; +import com.opensymphony.xwork2.conversion.impl.ArrayConverter; +import com.opensymphony.xwork2.conversion.impl.CollectionConverter; +import com.opensymphony.xwork2.conversion.impl.DateConverter; +import com.opensymphony.xwork2.conversion.impl.NumberConverter; +import com.opensymphony.xwork2.conversion.impl.StringConverter; import com.opensymphony.xwork2.conversion.impl.XWorkConverter; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.ContainerBuilder; @@ -198,6 +204,35 @@ import java.util.StringTokenizer; * <td>Used to create {@link FileManager} instance to access files on the File System as also to monitor if reload is needed, * can be implemented / overwritten to meet specific an application server needs * </td> + * <tr> + * <td>com.opensymphony.xwork2.conversion.impl.CollectionConverter</td> + * <td>struts.converter.collection</td> + * <td>singleton</td> + * <td>Converter used to convert any object to Collection and back</td> + * </tr> + * <tr> + * <td>com.opensymphony.xwork2.conversion.impl.ArrayConverter</td> + * <td>struts.converter.array</td> + * <td>singleton</td> + * <td>Converter used to convert any object to Array and back</td> + * </tr> + * <tr> + * <td>com.opensymphony.xwork2.conversion.impl.DateConverter</td> + * <td>struts.converter.date</td> + * <td>singleton</td> + * <td>Converter used to convert any object to Date and back</td> + * </tr> + * <tr> + * <td>com.opensymphony.xwork2.conversion.impl.NumberConverter</td> + * <td>struts.converter.number</td> + * <td>singleton</td> + * <td>Converter used to convert any object to Number and back</td> + * </tr> + * <tr> + * <td>com.opensymphony.xwork2.conversion.impl.StringConverter</td> + * <td>struts.converter.string</td> + * <td>singleton</td> + * <td>Converter used to convert any object to String and back</td> * </tr> * </table> * @@ -263,22 +298,28 @@ public class BeanSelectionProvider imple alias(UnknownHandlerManager.class, StrutsConstants.STRUTS_UNKNOWN_HANDLER_MANAGER, builder, props); alias(UrlHelper.class, StrutsConstants.STRUTS_URL_HELPER, builder, props); + alias(CollectionConverter.class, StrutsConstants.STRUTS_CONVERTER_COLLECTION, builder, props); + alias(ArrayConverter.class, StrutsConstants.STRUTS_CONVERTER_ARRAY, builder, props); + alias(DateConverter.class, StrutsConstants.STRUTS_CONVERTER_DATE, builder, props); + alias(NumberConverter.class, StrutsConstants.STRUTS_CONVERTER_NUMBER, builder, props); + alias(StringConverter.class, StrutsConstants.STRUTS_CONVERTER_STRING, builder, props); + if ("true".equalsIgnoreCase(props.getProperty(StrutsConstants.STRUTS_DEVMODE))) { props.setProperty(StrutsConstants.STRUTS_I18N_RELOAD, "true"); props.setProperty(StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, "true"); props.setProperty(StrutsConstants.STRUTS_FREEMARKER_TEMPLATES_CACHE, "false"); props.setProperty(StrutsConstants.STRUTS_FREEMARKER_TEMPLATES_CACHE_UPDATE_DELAY, "0"); // Convert struts properties into ones that xwork expects - props.setProperty("devMode", "true"); + props.setProperty(XWorkConstants.DEV_MODE, "true"); } else { - props.setProperty("devMode", "false"); + props.setProperty(XWorkConstants.DEV_MODE, "false"); } // Convert Struts properties into XWork properties - convertIfExist(props, StrutsConstants.STRUTS_LOG_MISSING_PROPERTIES, "logMissingProperties"); - convertIfExist(props, StrutsConstants.STRUTS_ENABLE_OGNL_EXPRESSION_CACHE, "enableOGNLExpressionCache"); - convertIfExist(props, StrutsConstants.STRUTS_ALLOW_STATIC_METHOD_ACCESS, "allowStaticMethodAccess"); - convertIfExist(props, StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, "reloadXmlConfiguration"); + convertIfExist(props, StrutsConstants.STRUTS_LOG_MISSING_PROPERTIES, XWorkConstants.LOG_MISSING_PROPERTIES); + convertIfExist(props, StrutsConstants.STRUTS_ENABLE_OGNL_EXPRESSION_CACHE, XWorkConstants.ENABLE_OGNL_EXPRESSION_CACHE); + convertIfExist(props, StrutsConstants.STRUTS_ALLOW_STATIC_METHOD_ACCESS, XWorkConstants.ALLOW_STATIC_METHOD_ACCESS); + convertIfExist(props, StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, XWorkConstants.RELOAD_XML_CONFIGURATION); LocalizedTextUtil.addDefaultResourceBundle("org/apache/struts2/struts-messages"); loadCustomResourceBundles(props); Modified: struts/struts2/trunk/core/src/main/resources/struts-default.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/struts-default.xml?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/core/src/main/resources/struts-default.xml (original) +++ struts/struts2/trunk/core/src/main/resources/struts-default.xml Fri Jul 20 20:44:32 2012 @@ -65,16 +65,14 @@ <bean type="org.apache.struts2.components.template.TemplateEngine" name="jsp" class="org.apache.struts2.components.template.JspTemplateEngine" /> <bean type="com.opensymphony.xwork2.conversion.impl.XWorkConverter" name="struts" class="com.opensymphony.xwork2.conversion.impl.XWorkConverter" /> - <bean type="com.opensymphony.xwork2.conversion.impl.XWorkConverter" name="xwork1" class="com.opensymphony.xwork2.conversion.impl.XWorkConverter" /> <bean class="com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter" /> - <bean type="com.opensymphony.xwork2.conversion.TypeConverter" name="collection" class="com.opensymphony.xwork2.conversion.impl.CollectionConverter" scope="singleton"/> - <bean type="com.opensymphony.xwork2.conversion.TypeConverter" name="array" class="com.opensymphony.xwork2.conversion.impl.ArrayConverter" scope="singleton"/> - <bean type="com.opensymphony.xwork2.conversion.TypeConverter" name="date" class="com.opensymphony.xwork2.conversion.impl.DateConverter" scope="singleton"/> - <bean type="com.opensymphony.xwork2.conversion.TypeConverter" name="number" class="com.opensymphony.xwork2.conversion.impl.NumberConverter" scope="singleton"/> - <bean type="com.opensymphony.xwork2.conversion.TypeConverter" name="string" class="com.opensymphony.xwork2.conversion.impl.StringConverter" scope="singleton"/> + <bean type="com.opensymphony.xwork2.conversion.impl.CollectionConverter" name="struts" class="com.opensymphony.xwork2.conversion.impl.CollectionConverter" scope="singleton"/> + <bean type="com.opensymphony.xwork2.conversion.impl.ArrayConverter" name="struts" class="com.opensymphony.xwork2.conversion.impl.ArrayConverter" scope="singleton"/> + <bean type="com.opensymphony.xwork2.conversion.impl.DateConverter" name="struts" class="com.opensymphony.xwork2.conversion.impl.DateConverter" scope="singleton"/> + <bean type="com.opensymphony.xwork2.conversion.impl.NumberConverter" name="struts" class="com.opensymphony.xwork2.conversion.impl.NumberConverter" scope="singleton"/> + <bean type="com.opensymphony.xwork2.conversion.impl.StringConverter" name="struts" class="com.opensymphony.xwork2.conversion.impl.StringConverter" scope="singleton"/> - <bean type="com.opensymphony.xwork2.TextProvider" name="xwork1" class="com.opensymphony.xwork2.TextProviderSupport" scope="default" /> <bean type="com.opensymphony.xwork2.TextProvider" name="struts" class="com.opensymphony.xwork2.TextProviderSupport" scope="default" /> <bean type="org.apache.struts2.components.UrlRenderer" name="struts" class="org.apache.struts2.components.ServletUrlRenderer"/> Added: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java?rev=1363947&view=auto ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java (added) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/XWorkConstants.java Fri Jul 20 20:44:32 2012 @@ -0,0 +1,18 @@ +package com.opensymphony.xwork2; + +/** + * Constants used across framework + */ +public final class XWorkConstants { + + public static final String COLLECTION_CONVERTER = "collectionConverter"; + public static final String DATE_CONVERTER = "dateConverter"; + public static final String NUMBER_CONVERTER = "numberConverter"; + public static final String STRING_CONVERTER = "stringConverter"; + public static final String ARRAY_CONVERTER = "arrayConverter"; + public static final String DEV_MODE = "devMode"; + public static final String LOG_MISSING_PROPERTIES = "logMissingProperties"; + public static final String ENABLE_OGNL_EXPRESSION_CACHE = "enableOGNLExpressionCache"; + public static final String RELOAD_XML_CONFIGURATION = "reloadXmlConfiguration"; + public static final String ALLOW_STATIC_METHOD_ACCESS = "allowStaticMethodAccess"; +} Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java Fri Jul 20 20:44:32 2012 @@ -21,6 +21,7 @@ import com.opensymphony.xwork2.FileManag import com.opensymphony.xwork2.FileManagerFactory; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.TextProvider; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.ConfigurationProvider; @@ -289,18 +290,18 @@ public class DefaultConfiguration implem builder.factory(ValueStackFactory.class, OgnlValueStackFactory.class, Scope.SINGLETON); builder.factory(XWorkConverter.class, Scope.SINGLETON); builder.factory(XWorkBasicConverter.class, Scope.SINGLETON); - builder.factory(TypeConverter.class, "collection", CollectionConverter.class, Scope.SINGLETON); - builder.factory(TypeConverter.class, "array", ArrayConverter.class, Scope.SINGLETON); - builder.factory(TypeConverter.class, "date", DateConverter.class, Scope.SINGLETON); - builder.factory(TypeConverter.class, "number", NumberConverter.class, Scope.SINGLETON); - builder.factory(TypeConverter.class, "string", StringConverter.class, Scope.SINGLETON); + builder.factory(TypeConverter.class, XWorkConstants.COLLECTION_CONVERTER, CollectionConverter.class, Scope.SINGLETON); + builder.factory(TypeConverter.class, XWorkConstants.ARRAY_CONVERTER, ArrayConverter.class, Scope.SINGLETON); + builder.factory(TypeConverter.class, XWorkConstants.DATE_CONVERTER, DateConverter.class, Scope.SINGLETON); + builder.factory(TypeConverter.class, XWorkConstants.NUMBER_CONVERTER, NumberConverter.class, Scope.SINGLETON); + builder.factory(TypeConverter.class, XWorkConstants.STRING_CONVERTER, StringConverter.class, Scope.SINGLETON); builder.factory(TextProvider.class, "system", DefaultTextProvider.class, Scope.SINGLETON); builder.factory(ObjectTypeDeterminer.class, DefaultObjectTypeDeterminer.class, Scope.SINGLETON); builder.factory(PropertyAccessor.class, CompoundRoot.class.getName(), CompoundRootAccessor.class, Scope.SINGLETON); builder.factory(OgnlUtil.class, Scope.SINGLETON); - builder.constant("devMode", "false"); - builder.constant("logMissingProperties", "false"); - builder.constant("reloadXmlConfiguration", "false"); + builder.constant(XWorkConstants.DEV_MODE, "false"); + builder.constant(XWorkConstants.LOG_MISSING_PROPERTIES, "false"); + builder.constant(XWorkConstants.RELOAD_XML_CONFIGURATION, "false"); return builder.create(true); } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/MockConfiguration.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/MockConfiguration.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/MockConfiguration.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/impl/MockConfiguration.java Fri Jul 20 20:44:32 2012 @@ -15,6 +15,7 @@ */ package com.opensymphony.xwork2.config.impl; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.ConfigurationProvider; @@ -56,8 +57,8 @@ public class MockConfiguration implement builder.factory(Configuration.class, MockConfiguration.class, Scope.SINGLETON); LocatableProperties props = new LocatableProperties(); new XWorkConfigurationProvider().register(builder, props); - builder.constant("devMode", "false"); - builder.constant("reloadXmlConfiguration", "true"); + builder.constant(XWorkConstants.DEV_MODE, "false"); + builder.constant(XWorkConstants.RELOAD_XML_CONFIGURATION, "true"); container = builder.create(true); } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java Fri Jul 20 20:44:32 2012 @@ -9,12 +9,12 @@ import com.opensymphony.xwork2.FileManag import com.opensymphony.xwork2.TextProvider; import com.opensymphony.xwork2.TextProviderSupport; import com.opensymphony.xwork2.UnknownHandlerManager; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.ConfigurationProvider; import com.opensymphony.xwork2.conversion.NullHandler; import com.opensymphony.xwork2.conversion.ObjectTypeDeterminer; -import com.opensymphony.xwork2.conversion.TypeConverter; import com.opensymphony.xwork2.conversion.impl.ArrayConverter; import com.opensymphony.xwork2.conversion.impl.CollectionConverter; import com.opensymphony.xwork2.conversion.impl.DateConverter; @@ -124,15 +124,15 @@ public class XWorkConfigurationProvider .factory(TextProvider.class, TextProviderSupport.class, Scope.SINGLETON) .factory(OgnlUtil.class, Scope.SINGLETON) .factory(XWorkBasicConverter.class, Scope.SINGLETON) - .factory(TypeConverter.class, "collection", CollectionConverter.class, Scope.SINGLETON) - .factory(TypeConverter.class, "array", ArrayConverter.class, Scope.SINGLETON) - .factory(TypeConverter.class, "date", DateConverter.class, Scope.SINGLETON) - .factory(TypeConverter.class, "number", NumberConverter.class, Scope.SINGLETON) - .factory(TypeConverter.class, "string", StringConverter.class, Scope.SINGLETON); - props.setProperty("devMode", Boolean.FALSE.toString()); - props.setProperty("logMissingProperties", Boolean.FALSE.toString()); - props.setProperty("enableOGNLExpressionCache", Boolean.TRUE.toString()); - props.setProperty("reloadXmlConfiguration", Boolean.FALSE.toString()); + .factory(CollectionConverter.class, Scope.SINGLETON) + .factory(ArrayConverter.class, Scope.SINGLETON) + .factory(DateConverter.class, Scope.SINGLETON) + .factory(NumberConverter.class, Scope.SINGLETON) + .factory(StringConverter.class, Scope.SINGLETON); + props.setProperty(XWorkConstants.DEV_MODE, Boolean.FALSE.toString()); + props.setProperty(XWorkConstants.LOG_MISSING_PROPERTIES, Boolean.FALSE.toString()); + props.setProperty(XWorkConstants.ENABLE_OGNL_EXPRESSION_CACHE, Boolean.TRUE.toString()); + props.setProperty(XWorkConstants.RELOAD_XML_CONFIGURATION, Boolean.FALSE.toString()); } } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkBasicConverter.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkBasicConverter.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkBasicConverter.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/XWorkBasicConverter.java Fri Jul 20 20:44:32 2012 @@ -16,6 +16,7 @@ package com.opensymphony.xwork2.conversion.impl; import com.opensymphony.xwork2.ObjectFactory; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.XWorkException; import com.opensymphony.xwork2.conversion.TypeConverter; import com.opensymphony.xwork2.inject.Inject; @@ -46,19 +47,6 @@ import java.util.Map; * <p/> Note that with arrays the type conversion will defer to the type of the array elements and try to convert each * item individually. As with any other type conversion, if the conversion can't be performed the standard type * conversion error reporting is used to indicate a problem occurred while processing the type conversion. - * <p/> As from version 2.3.2 you can override default converters by implementting {@link TypeConverter} interface - * and specifying beans in struts.xml as follow: - * <bean type="com.opensymphony.xwork2.conversion.TypeConverter" name="collection" class="com.application.MyCollectionConverter" scope="singleton"/> - * <p/> - * There are five types of converters defined: - * <ul> - * <li>collection</li> - * <li>array</li> - * <li>date</li> - * <li>number</li> - * <li>string</li> - * </ul> - * <p/> * <!-- END SNIPPET: javadoc --> * * @author <a href="mailto:pligh...@gmail.com">Pat Lightbody</a> @@ -153,14 +141,6 @@ public class XWorkBasicConverter extends return result; } - private Object doConvertToArray(Map<String, Object> context, Object o, Member member, String prop, Object value, Class toType) { - TypeConverter converter = objectFactory.buildConverter("array"); - if (converter == null) { - throw new XWorkException("TypeConverter with name [array] must be registered first!"); - } - return converter.convertValue(context, o, member, prop, value, toType); - } - private Object doConvertToCharacter(Object value) { if (value instanceof String) { String cStr = (String) value; @@ -190,33 +170,41 @@ public class XWorkBasicConverter extends } private Object doConvertToCollection(Map<String, Object> context, Object o, Member member, String prop, Object value, Class toType) { - TypeConverter converter = objectFactory.buildConverter("collection"); + TypeConverter converter = objectFactory.buildConverter(CollectionConverter.class); + if (converter == null) { + throw new XWorkException("TypeConverter with name [#0] must be registered first!", XWorkConstants.COLLECTION_CONVERTER); + } + return converter.convertValue(context, o, member, prop, value, toType); + } + + private Object doConvertToArray(Map<String, Object> context, Object o, Member member, String prop, Object value, Class toType) { + TypeConverter converter = objectFactory.buildConverter(ArrayConverter.class); if (converter == null) { - throw new XWorkException("TypeConverter with name [collection] must be registered first!"); + throw new XWorkException("TypeConverter with name [#0] must be registered first!", XWorkConstants.ARRAY_CONVERTER); } return converter.convertValue(context, o, member, prop, value, toType); } private Object doConvertToDate(Map<String, Object> context, Object value, Class toType) { - TypeConverter converter = objectFactory.buildConverter("date"); + TypeConverter converter = objectFactory.buildConverter(DateConverter.class); if (converter == null) { - throw new XWorkException("TypeConverter with name [date] must be registered first!"); + throw new XWorkException("TypeConverter with name [#0] must be registered first!", XWorkConstants.DATE_CONVERTER); } return converter.convertValue(context, null, null, null, value, toType); } private Object doConvertToNumber(Map<String, Object> context, Object value, Class toType) { - TypeConverter converter = objectFactory.buildConverter("number"); + TypeConverter converter = objectFactory.buildConverter(NumberConverter.class); if (converter == null) { - throw new XWorkException("TypeConverter with name [number] must be registered first!"); + throw new XWorkException("TypeConverter with name [#0] must be registered first!", XWorkConstants.NUMBER_CONVERTER); } return converter.convertValue(context, null, null, null, value, toType); } private Object doConvertToString(Map<String, Object> context, Object value) { - TypeConverter converter = objectFactory.buildConverter("string"); + TypeConverter converter = objectFactory.buildConverter(StringConverter.class); if (converter == null) { - throw new XWorkException("TypeConverter with name [string] must be registered first!"); + throw new XWorkException("TypeConverter with name [#0] must be registered first!", XWorkConstants.STRING_CONVERTER); } return converter.convertValue(context, null, null, null, value, null); } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/AliasInterceptor.java Fri Jul 20 20:44:32 2012 @@ -19,6 +19,7 @@ package com.opensymphony.xwork2.intercep import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ValidationAware; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.config.entities.ActionConfig; import com.opensymphony.xwork2.util.ValueStack; @@ -95,7 +96,7 @@ public class AliasInterceptor extends Ab protected ValueStackFactory valueStackFactory; static boolean devMode = false; - @Inject("devMode") + @Inject(XWorkConstants.DEV_MODE) public static void setDevMode(String mode) { devMode = "true".equals(mode); } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java Fri Jul 20 20:44:32 2012 @@ -18,6 +18,7 @@ package com.opensymphony.xwork2.intercep import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ValidationAware; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler; import com.opensymphony.xwork2.conversion.impl.XWorkConverter; import com.opensymphony.xwork2.inject.Inject; @@ -145,7 +146,7 @@ public class ParametersInterceptor exten this.valueStackFactory = valueStackFactory; } - @Inject("devMode") + @Inject(XWorkConstants.DEV_MODE) public static void setDevMode(String mode) { devMode = "true".equals(mode); } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/StaticParametersInterceptor.java Fri Jul 20 20:44:32 2012 @@ -18,6 +18,7 @@ package com.opensymphony.xwork2.intercep import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ValidationAware; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.config.entities.ActionConfig; import com.opensymphony.xwork2.config.entities.Parameterizable; @@ -95,7 +96,7 @@ public class StaticParametersInterceptor this.valueStackFactory = valueStackFactory; } - @Inject("devMode") + @Inject(XWorkConstants.DEV_MODE) public static void setDevMode(String mode) { devMode = "true".equals(mode); } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java Fri Jul 20 20:44:32 2012 @@ -15,6 +15,7 @@ */ package com.opensymphony.xwork2.ognl; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.conversion.impl.XWorkConverter; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.CompoundRoot; @@ -55,7 +56,7 @@ public class OgnlUtil { this.defaultConverter = new OgnlTypeConverterWrapper(conv); } - @Inject("devMode") + @Inject(XWorkConstants.DEV_MODE) public static void setDevMode(String mode) { devMode = "true".equals(mode); } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java Fri Jul 20 20:44:32 2012 @@ -17,6 +17,7 @@ package com.opensymphony.xwork2.ognl; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.TextProvider; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.XWorkException; import com.opensymphony.xwork2.conversion.impl.XWorkConverter; import com.opensymphony.xwork2.inject.Container; @@ -95,7 +96,7 @@ public class OgnlValueStack implements S ((OgnlContext) context).setKeepLastEvaluation(false); } - @Inject("devMode") + @Inject(XWorkConstants.DEV_MODE) public void setDevMode(String mode) { devMode = "true".equalsIgnoreCase(mode); } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java?rev=1363947&r1=1363946&r2=1363947&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/accessor/CompoundRootAccessor.java Fri Jul 20 20:44:32 2012 @@ -15,6 +15,7 @@ */ package com.opensymphony.xwork2.ognl.accessor; +import com.opensymphony.xwork2.XWorkConstants; import com.opensymphony.xwork2.XWorkException; import com.opensymphony.xwork2.ognl.OgnlValueStack; import com.opensymphony.xwork2.inject.Inject; @@ -58,7 +59,7 @@ public class CompoundRootAccessor implem static boolean devMode = false; - @Inject("devMode") + @Inject(XWorkConstants.DEV_MODE) public static void setDevMode(String mode) { devMode = "true".equals(mode); }