Return-Path: X-Original-To: apmail-struts-commits-archive@minotaur.apache.org Delivered-To: apmail-struts-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 58ED1FCD9 for ; Thu, 18 Apr 2013 06:20:22 +0000 (UTC) Received: (qmail 75915 invoked by uid 500); 18 Apr 2013 06:20:21 -0000 Delivered-To: apmail-struts-commits-archive@struts.apache.org Received: (qmail 75577 invoked by uid 500); 18 Apr 2013 06:20:20 -0000 Mailing-List: contact commits-help@struts.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@struts.apache.org Delivered-To: mailing list commits@struts.apache.org Received: (qmail 75546 invoked by uid 99); 18 Apr 2013 06:20:19 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Apr 2013 06:20:19 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 Apr 2013 06:20:15 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id CD238238889B; Thu, 18 Apr 2013 06:19:53 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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... Date: Thu, 18 Apr 2013 06:19:53 -0000 To: commits@struts.apache.org From: lukaszlenart@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130418061953.CD238238889B@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 properties, Object o) { } - public void setProperties(Map properties, Object o, Map context, boolean throwPropertyExceptions) throws ReflectionException { + public void setProperties(Map properties, Object o, Map 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 params, Map 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 props, Object o, Map context) { + public void setProperties(Map props, Object o, Map context) { ognlUtil.setProperties(props, o, context); } - public void setProperties(Map props, Object o, Map context, - boolean throwPropertyExceptions) throws ReflectionException{ + public void setProperties(Map props, Object o, Map 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 props, Object o, Map context); + void setProperties(Map props, Object o, Map 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 props, Object o, Map context, boolean throwPropertyExceptions) throws ReflectionException; + void setProperties(Map props, Object o, Map 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(), null); + objectFactory.buildValidator(className, new HashMap(), 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(), null); + Map extraContext = new HashMap(); + Validator validator = objectFactory.buildValidator(RequiredStringValidator.class.getName(), new HashMap(), 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(), null); + Map extraContext = new HashMap(); + Validator validator = objectFactory.buildValidator("expression-validator", new HashMap(), 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 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 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 actionClass) throws Exception { + private AnnotationActionValidatorManager createValidationManager(final Class actionClass, Locale locale) throws Exception { loadConfigurationProviders(new ConfigurationProvider() { public void destroy() { @@ -290,10 +290,12 @@ public class AnnotationValidationConfigu } }); - Map context = new HashMap(); - 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);