You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2013/04/18 08:19:53 UTC
svn commit: r1469181 - in /struts/struts2/trunk:
plugins/convention/src/test/java/org/apache/struts2/convention/
xwork-core/src/main/java/com/opensymphony/xwork2/
xwork-core/src/main/java/com/opensymphony/xwork2/ognl/
xwork-core/src/main/java/com/opens...
Author: lukaszlenart
Date: Thu Apr 18 06:19:52 2013
New Revision: 1469181
URL: http://svn.apache.org/r1469181
Log:
WW-4046 Solves failing test and uses ActionContext to create validators
Modified:
struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlReflectionProvider.java
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/reflection/ReflectionProvider.java
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/spring/SpringObjectFactoryTest.java
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java
Modified: struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java?rev=1469181&r1=1469180&r2=1469181&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java (original)
+++ struts/struts2/trunk/plugins/convention/src/test/java/org/apache/struts2/convention/PackageBasedActionConfigBuilderTest.java Thu Apr 18 06:19:52 2013
@@ -760,9 +760,9 @@ public class PackageBasedActionConfigBui
public void setProperties(Map<String, ?> properties, Object o) {
}
- public void setProperties(Map<String, String> properties, Object o, Map<String, Object> context, boolean throwPropertyExceptions) throws ReflectionException {
+ public void setProperties(Map<String, ?> properties, Object o, Map<String, Object> context, boolean throwPropertyExceptions) throws ReflectionException {
if (o instanceof ActionChainResult) {
- ((ActionChainResult)o).setActionName(properties.get("actionName"));
+ ((ActionChainResult)o).setActionName(String.valueOf(properties.get("actionName")));
}
}
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java?rev=1469181&r1=1469180&r2=1469181&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ObjectFactory.java Thu Apr 18 06:19:52 2013
@@ -251,8 +251,8 @@ public class ObjectFactory implements Se
* @param extraContext a Map of extra context which uses the same keys as the {@link com.opensymphony.xwork2.ActionContext}
*/
public Validator buildValidator(String className, Map<String, Object> params, Map<String, Object> extraContext) throws Exception {
- Validator validator = (Validator) buildBean(className, null);
- reflectionProvider.setProperties(params, validator);
+ Validator validator = (Validator) buildBean(className, extraContext);
+ reflectionProvider.setProperties(params, validator, extraContext);
return validator;
}
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlReflectionProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlReflectionProvider.java?rev=1469181&r1=1469180&r2=1469181&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlReflectionProvider.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlReflectionProvider.java Thu Apr 18 06:19:52 2013
@@ -45,12 +45,11 @@ public class OgnlReflectionProvider impl
}
}
- public void setProperties(Map<String, String> props, Object o, Map<String, Object> context) {
+ public void setProperties(Map<String, ?> props, Object o, Map<String, Object> context) {
ognlUtil.setProperties(props, o, context);
}
- public void setProperties(Map<String, String> props, Object o, Map<String, Object> context,
- boolean throwPropertyExceptions) throws ReflectionException{
+ public void setProperties(Map<String, ?> props, Object o, Map<String, Object> context, boolean throwPropertyExceptions) throws ReflectionException{
ognlUtil.setProperties(props, o, context, throwPropertyExceptions);
}
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/reflection/ReflectionProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/reflection/ReflectionProvider.java?rev=1469181&r1=1469180&r2=1469181&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/reflection/ReflectionProvider.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/reflection/ReflectionProvider.java Thu Apr 18 06:19:52 2013
@@ -23,7 +23,7 @@ public interface ReflectionProvider {
* @param o the object
* @param context the action context
*/
- void setProperties(Map<String, String> props, Object o, Map<String, Object> context);
+ void setProperties(Map<String, ?> props, Object o, Map<String, Object> context);
/**
* Sets the object's properties using the default type converter.
@@ -34,7 +34,7 @@ public interface ReflectionProvider {
* @param throwPropertyExceptions boolean which tells whether it should throw exceptions for
* problems setting the properties
*/
- void setProperties(Map<String, String> props, Object o, Map<String, Object> context, boolean throwPropertyExceptions) throws ReflectionException;
+ void setProperties(Map<String, ?> props, Object o, Map<String, Object> context, boolean throwPropertyExceptions) throws ReflectionException;
/**
* Sets the properties on the object using the default context, defaulting to not throwing
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java?rev=1469181&r1=1469180&r2=1469181&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFactory.java Thu Apr 18 06:19:52 2013
@@ -15,6 +15,7 @@
*/
package com.opensymphony.xwork2.validator;
+import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.XWorkException;
import com.opensymphony.xwork2.config.ConfigurationException;
@@ -29,9 +30,14 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URL;
-import java.util.*;
-import java.util.zip.ZipInputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
/**
@@ -64,7 +70,7 @@ public class DefaultValidatorFactory imp
try {
// instantiate the validator, and set configured parameters
//todo - can this use the ThreadLocal?
- validator = objectFactory.buildValidator(className, cfg.getParams(), null); // ActionContext.getContext().getContextMap());
+ validator = objectFactory.buildValidator(className, cfg.getParams(), ActionContext.getContext().getContextMap());
} catch (Exception e) {
final String msg = "There was a problem creating a Validator of type " + className + " : caused by " + e.getMessage();
throw new XWorkException(msg, e, cfg);
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java?rev=1469181&r1=1469180&r2=1469181&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/DefaultValidatorFileParser.java Thu Apr 18 06:19:52 2013
@@ -15,6 +15,7 @@
*/
package com.opensymphony.xwork2.validator;
+import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.config.ConfigurationException;
import com.opensymphony.xwork2.config.providers.XmlHelper;
@@ -127,7 +128,7 @@ public class DefaultValidatorFileParser
try {
// catch any problems here
- objectFactory.buildValidator(className, new HashMap<String, Object>(), null);
+ objectFactory.buildValidator(className, new HashMap<String, Object>(), ActionContext.getContext().getContextMap());
validators.put(name, className);
} catch (Exception e) {
throw new ConfigurationException("Unable to load validator class " + className, e, validatorElement);
Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/spring/SpringObjectFactoryTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/spring/SpringObjectFactoryTest.java?rev=1469181&r1=1469180&r2=1469181&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/spring/SpringObjectFactoryTest.java (original)
+++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/spring/SpringObjectFactoryTest.java Thu Apr 18 06:19:52 2013
@@ -52,6 +52,7 @@ import org.springframework.context.Appli
import org.springframework.context.support.StaticApplicationContext;
import java.util.HashMap;
+import java.util.Map;
// TODO: Document properly
@@ -114,7 +115,8 @@ public class SpringObjectFactoryTest ext
}
public void testFallsBackToDefaultObjectFactoryValidatorBuilding() throws Exception {
- Validator validator = objectFactory.buildValidator(RequiredStringValidator.class.getName(), new HashMap<String, Object>(), null);
+ Map<String,Object> extraContext = new HashMap<String, Object>();
+ Validator validator = objectFactory.buildValidator(RequiredStringValidator.class.getName(), new HashMap<String, Object>(), extraContext);
assertEquals(RequiredStringValidator.class, validator.getClass());
}
@@ -150,7 +152,8 @@ public class SpringObjectFactoryTest ext
public void testObtainValidatorBySpringName() throws Exception {
sac.registerPrototype("expression-validator", ExpressionValidator.class, new MutablePropertyValues());
- Validator validator = objectFactory.buildValidator("expression-validator", new HashMap<String, Object>(), null);
+ Map<String, Object> extraContext = new HashMap<String, Object>();
+ Validator validator = objectFactory.buildValidator("expression-validator", new HashMap<String, Object>(), extraContext);
assertEquals(ExpressionValidator.class, validator.getClass());
}
Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java?rev=1469181&r1=1469180&r2=1469181&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java (original)
+++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java Thu Apr 18 06:19:52 2013
@@ -1,5 +1,6 @@
package com.opensymphony.xwork2.validator;
+import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.DefaultActionInvocation;
@@ -33,9 +34,8 @@ import com.opensymphony.xwork2.validator
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
+import java.util.Locale;
/**
* Simple test to check if validation Annotations match given validator class
@@ -44,7 +44,7 @@ public class AnnotationValidationConfigu
public void testValidationAnnotation() throws Exception {
// given
- AnnotationActionValidatorManager manager = createValidationManager(AnnotationValidationAction.class);
+ AnnotationActionValidatorManager manager = createValidationManager(AnnotationValidationAction.class, Locale.US);
// when
List<Validator> validators = manager.getValidators(AnnotationValidationAction.class, null);
@@ -58,7 +58,7 @@ public class AnnotationValidationConfigu
public void testValidationAnnotationExpParams() throws Exception {
// given
- AnnotationActionValidatorManager manager = createValidationManager(AnnotationValidationExpAction.class);
+ AnnotationActionValidatorManager manager = createValidationManager(AnnotationValidationExpAction.class, Locale.US);
// when
List<Validator> validators = manager.getValidators(AnnotationValidationExpAction.class, null);
@@ -265,7 +265,7 @@ public class AnnotationValidationConfigu
assertTrue(Arrays.equals(new String[]{"one", "two", "three"}, validator.getMessageParameters()));
}
- private AnnotationActionValidatorManager createValidationManager(final Class<? extends ActionSupport> actionClass) throws Exception {
+ private AnnotationActionValidatorManager createValidationManager(final Class<? extends ActionSupport> actionClass, Locale locale) throws Exception {
loadConfigurationProviders(new ConfigurationProvider() {
public void destroy() {
@@ -290,10 +290,12 @@ public class AnnotationValidationConfigu
}
});
- Map<String, Object> context = new HashMap<String, Object>();
- ActionInvocation invocation = new DefaultActionInvocation(context, true);
+ // ActionContext is destroyed during rebuilding configuration
+ ActionContext.getContext().setLocale(locale);
+
+ ActionInvocation invocation = new DefaultActionInvocation(ActionContext.getContext().getContextMap(), true);
container.inject(invocation);
- invocation.init(actionProxyFactory.createActionProxy("", "annotation", null, context));
+ invocation.init(actionProxyFactory.createActionProxy("", "annotation", null, ActionContext.getContext().getContextMap()));
AnnotationActionValidatorManager manager = new AnnotationActionValidatorManager();
container.inject(manager);