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 2017/03/14 18:36:06 UTC

[13/24] struts git commit: Merge branch 'injectable-context' into localized-bean

Merge branch 'injectable-context' into localized-bean


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/d1fbf6a8
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/d1fbf6a8
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/d1fbf6a8

Branch: refs/heads/master
Commit: d1fbf6a8972908fac3a41ec0e2756fe4eec1afb6
Parents: 6c19875 8852e3d
Author: Lukasz Lenart <lu...@apache.org>
Authored: Mon Mar 13 08:20:42 2017 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Mon Mar 13 08:20:42 2017 +0100

----------------------------------------------------------------------
 .../com/opensymphony/xwork2/ActionSupport.java  |   7 +-
 .../xwork2/TextProviderFactory.java             |  29 ++--
 .../providers/XWorkConfigurationProvider.java   |   4 +
 .../AnnotationActionValidatorManager.java       |   8 +-
 .../DefaultActionValidatorManager.java          |  13 +-
 .../validator/DelegatingValidatorContext.java   |  33 +----
 .../validator/validators/ValidatorSupport.java  |  10 +-
 .../validators/VisitorFieldValidator.java       |  25 +++-
 .../org/apache/struts2/StrutsConstants.java     |   2 +
 .../org/apache/struts2/components/I18n.java     |   5 +-
 .../config/DefaultBeanSelectionProvider.java    |   2 +
 .../interceptor/FileUploadInterceptor.java      |   8 +-
 core/src/main/resources/struts-default.xml      |   1 +
 .../opensymphony/xwork2/ActionSupportTest.java  |   6 +-
 .../validator/ActionValidatorManagerTest.java   |  34 +++--
 .../AnnotationActionValidatorManagerTest.java   |  20 ++-
 .../ConversionErrorFieldValidatorTest.java      |   5 +-
 .../validator/DoubleRangeValidatorTest.java     |  12 +-
 .../xwork2/validator/DummyValidatorContext.java | 144 ++++++++++++++++++
 .../xwork2/validator/EmailValidatorTest.java    |  13 +-
 .../validator/ExpressionValidatorTest.java      |  10 +-
 .../validator/GenericValidatorContext.java      | 146 -------------------
 .../validator/RegexFieldValidatorTest.java      |  20 ++-
 ...onversionErrorFieldValidatorSupportTest.java |  11 +-
 .../validator/SimpleActionValidationTest.java   |   2 +-
 .../StringLengthFieldValidatorTest.java         |   3 +-
 .../xwork2/validator/StringValidatorTest.java   |  21 ++-
 .../xwork2/validator/URLValidatorTest.java      |  15 +-
 .../validator/VisitorFieldValidatorTest.java    |   7 +-
 .../AppendingValidatorContextTest.java          |  25 +++-
 .../validators/DateRangeFieldValidatorTest.java |  12 +-
 .../validators/IntRangeFieldValidatorTest.java  |  16 +-
 .../validators/LongRangeFieldValidatorTest.java |  16 +-
 .../validators/RequiredStringValidatorTest.java |  14 +-
 .../ShortRangeFieldValidatorTest.java           |  16 +-
 .../apache/struts2/views/jsp/TextTagTest.java   |   4 +-
 .../struts2/views/jsp/ui/TooltipTest.java       |   9 +-
 .../com/opensymphony/xwork2/TestBean.properties |   2 +-
 .../interceptor/BeanValidationInterceptor.java  |  10 +-
 .../interceptor/OValValidationInterceptor.java  |  11 +-
 .../struts2/tiles/I18NAttributeEvaluator.java   |   7 +-
 41 files changed, 442 insertions(+), 316 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/d1fbf6a8/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
----------------------------------------------------------------------
diff --cc core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
index de0b963,ff27731..2adab77
--- a/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
+++ b/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
@@@ -178,9 -178,11 +179,12 @@@ public class XWorkConfigurationProvide
                  .factory(NullHandler.class, Object.class.getName(), InstantiatingNullHandler.class, Scope.SINGLETON)
                  .factory(ActionValidatorManager.class, AnnotationActionValidatorManager.class, Scope.SINGLETON)
                  .factory(ActionValidatorManager.class, "no-annotations", DefaultActionValidatorManager.class, Scope.SINGLETON)
+ 
+                 .factory(TextProviderFactory.class, Scope.SINGLETON)
 +                .factory(LocalizedTextUtil.class, LocalizedTextUtil.class, Scope.SINGLETON)
                  .factory(TextProvider.class, "system", DefaultTextProvider.class, Scope.SINGLETON)
                  .factory(TextProvider.class, TextProviderSupport.class, Scope.SINGLETON)
+ 
                  .factory(LocaleProvider.class, DefaultLocaleProvider.class, Scope.SINGLETON)
                  .factory(OgnlUtil.class, Scope.SINGLETON)
                  .factory(CollectionConverter.class, Scope.SINGLETON)

http://git-wip-us.apache.org/repos/asf/struts/blob/d1fbf6a8/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
----------------------------------------------------------------------
diff --cc core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
index e35d7a8,79507bb..90812bd
--- a/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
+++ b/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
@@@ -71,13 -68,10 +68,13 @@@ public class DelegatingValidatorContex
       * the validation context are created based on the class.
       *
       * @param clazz the class to initialize the context with.
 +     *
 +     * @deprecated will be removed, do not use!
       */
 +    @Deprecated
      public DelegatingValidatorContext(Class clazz) {
          localeProvider = new ActionContextLocaleProvider();
-         textProvider = new TextProviderFactory().createInstance(clazz, localeProvider);
+         textProvider = new TextProviderFactory().createInstance(clazz);
          validationAware = new LoggingValidationAware(clazz);
      }
  

http://git-wip-us.apache.org/repos/asf/struts/blob/d1fbf6a8/core/src/main/java/org/apache/struts2/StrutsConstants.java
----------------------------------------------------------------------
diff --cc core/src/main/java/org/apache/struts2/StrutsConstants.java
index 99eb18e,7ae2a5f..3d898ce
--- a/core/src/main/java/org/apache/struts2/StrutsConstants.java
+++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java
@@@ -307,5 -307,5 +307,7 @@@ public final class StrutsConstants 
  
      public static final String STRUTS_SMI_METHOD_REGEX = "struts.strictMethodInvocation.methodRegex";
  
+     public static final String STRUTS_TEXT_PROVIDER_FACTORY = "struts.textProviderFactory";
++
 +    public static final String STRUTS_LOCALIZED_TEXT_PROVIDER = "struts.localizedTextProvider";
  }

http://git-wip-us.apache.org/repos/asf/struts/blob/d1fbf6a8/core/src/main/java/org/apache/struts2/components/I18n.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/struts/blob/d1fbf6a8/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
----------------------------------------------------------------------
diff --cc core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
index b417333,7835185..d048f5f
--- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
+++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
@@@ -387,9 -388,9 +388,10 @@@ public class DefaultBeanSelectionProvid
          alias(TypeConverterHolder.class, StrutsConstants.STRUTS_CONVERTER_HOLDER, builder, props);
  
          alias(TextProvider.class, StrutsConstants.STRUTS_XWORKTEXTPROVIDER, builder, props, Scope.PROTOTYPE);
+         alias(TextProviderFactory.class, StrutsConstants.STRUTS_TEXT_PROVIDER_FACTORY, builder, props, Scope.PROTOTYPE);
 -
          alias(LocaleProvider.class, StrutsConstants.STRUTS_LOCALE_PROVIDER, builder, props);
 +        alias(LocalizedTextUtil.class, StrutsConstants.STRUTS_LOCALIZED_TEXT_PROVIDER, builder, props);
 +
          alias(ActionProxyFactory.class, StrutsConstants.STRUTS_ACTIONPROXYFACTORY, builder, props);
          alias(ObjectTypeDeterminer.class, StrutsConstants.STRUTS_OBJECTTYPEDETERMINER, builder, props);
          alias(ActionMapper.class, StrutsConstants.STRUTS_MAPPER_CLASS, builder, props);

http://git-wip-us.apache.org/repos/asf/struts/blob/d1fbf6a8/core/src/main/resources/struts-default.xml
----------------------------------------------------------------------
diff --cc core/src/main/resources/struts-default.xml
index d8e80f1,a870c4c..0efdfba
--- a/core/src/main/resources/struts-default.xml
+++ b/core/src/main/resources/struts-default.xml
@@@ -130,7 -130,7 +130,8 @@@
      <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.TextProviderFactory" name="struts" class="com.opensymphony.xwork2.TextProviderFactory" scope="prototype" />
 +    <bean type="com.opensymphony.xwork2.util.LocalizedTextUtil" name="struts" class="com.opensymphony.xwork2.util.LocalizedTextUtil" scope="singleton" />
      <bean type="com.opensymphony.xwork2.TextProvider" name="struts" class="com.opensymphony.xwork2.TextProviderSupport" scope="prototype" />
      <bean type="com.opensymphony.xwork2.LocaleProvider" name="struts" class="com.opensymphony.xwork2.DefaultLocaleProvider" scope="singleton" />
  

http://git-wip-us.apache.org/repos/asf/struts/blob/d1fbf6a8/core/src/test/java/com/opensymphony/xwork2/validator/DummyValidatorContext.java
----------------------------------------------------------------------
diff --cc core/src/test/java/com/opensymphony/xwork2/validator/DummyValidatorContext.java
index 0000000,9d3400f..e0f5f33
mode 000000,100644..100644
--- a/core/src/test/java/com/opensymphony/xwork2/validator/DummyValidatorContext.java
+++ b/core/src/test/java/com/opensymphony/xwork2/validator/DummyValidatorContext.java
@@@ -1,0 -1,145 +1,144 @@@
+ /*
+  * Copyright 2002-2003,2009 The Apache Software Foundation.
+  * 
+  * Licensed under the Apache License, Version 2.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  * 
+  *      http://www.apache.org/licenses/LICENSE-2.0
+  * 
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+ package com.opensymphony.xwork2.validator;
+ 
+ import com.opensymphony.xwork2.TextProviderFactory;
+ 
+ import java.util.*;
+ 
+ 
+ /**
+  * Dummy validator context to use to capture error messages.
+  *
+  * @author Mark Woon
+  * @author Matthew Payne
+  */
+ public class DummyValidatorContext extends DelegatingValidatorContext {
+ 
+     private Collection<String> actionErrors;
+     private Collection<String> actionMessages;
+     private Map<String, List<String>> fieldErrors;
+ 
+ 
+     public DummyValidatorContext(Object object, TextProviderFactory tpf) {
+         super(object, tpf);
+     }
+ 
 -
+     @Override
+     public synchronized void setActionErrors(Collection<String> errorMessages) {
+         this.actionErrors = errorMessages;
+     }
+ 
+     @Override
+     public synchronized Collection<String> getActionErrors() {
+         return new ArrayList<>(internalGetActionErrors());
+     }
+ 
+     @Override
+     public synchronized void setActionMessages(Collection<String> messages) {
+         this.actionMessages = messages;
+     }
+ 
+     @Override
+     public synchronized Collection<String> getActionMessages() {
+         return new ArrayList<String>(internalGetActionMessages());
+     }
+ 
+     @Override
+     public synchronized void setFieldErrors(Map<String, List<String>> errorMap) {
+         this.fieldErrors = errorMap;
+     }
+ 
+     /**
+      * Get the field specific errors.
+      *
+      * @return an unmodifiable Map with errors mapped from fieldname (String) to Collection of String error messages
+      */
+     @Override
+     public synchronized Map<String, List<String>> getFieldErrors() {
+         return new HashMap<String, List<String>>(internalGetFieldErrors());
+     }
+ 
+     @Override
+     public synchronized void addActionError(String anErrorMessage) {
+         internalGetActionErrors().add(anErrorMessage);
+     }
+ 
+     /**
+      * Add an Action level message to this Action
+      */
+     @Override
+     public void addActionMessage(String aMessage) {
+         internalGetActionMessages().add(aMessage);
+     }
+ 
+     @Override
+     public synchronized void addFieldError(String fieldName, String errorMessage) {
+         final Map<String, List<String>> errors = internalGetFieldErrors();
+         List<String> thisFieldErrors = errors.get(fieldName);
+ 
+         if (thisFieldErrors == null) {
+             thisFieldErrors = new ArrayList<>();
+             errors.put(fieldName, thisFieldErrors);
+         }
+ 
+         thisFieldErrors.add(errorMessage);
+     }
+ 
+     @Override
+     public synchronized boolean hasActionErrors() {
+         return (actionErrors != null) && !actionErrors.isEmpty();
+     }
+ 
+     /**
+      * Note that this does not have the same meaning as in WW 1.x
+      *
+      * @return (hasActionErrors() || hasFieldErrors())
+      */
+     @Override
+     public synchronized boolean hasErrors() {
+         return (hasActionErrors() || hasFieldErrors());
+     }
+ 
+     @Override
+     public synchronized boolean hasFieldErrors() {
+         return (fieldErrors != null) && !fieldErrors.isEmpty();
+     }
+ 
+     private Collection<String> internalGetActionErrors() {
+         if (actionErrors == null) {
+             actionErrors = new ArrayList<>();
+         }
+ 
+         return actionErrors;
+     }
+ 
+     private Collection<String> internalGetActionMessages() {
+         if (actionMessages == null) {
+             actionMessages = new ArrayList<>();
+         }
+ 
+         return actionMessages;
+     }
+ 
+     private Map<String, List<String>> internalGetFieldErrors() {
+         if (fieldErrors == null) {
+             fieldErrors = new HashMap<>();
+         }
+ 
+         return fieldErrors;
+     }
+ }