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:[email protected]">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);
}