Repository: struts
Updated Branches:
  refs/heads/master c570a2b2b -> ea92e9546


WW-4677 Exyends LocaleProvider to be used to validate Locale


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

Branch: refs/heads/master
Commit: ea92e95461386f1ddfda37bb09ec170b8e306ae7
Parents: c570a2b
Author: Lukasz Lenart <lukaszlen...@apache.org>
Authored: Mon Sep 19 09:45:16 2016 +0200
Committer: Lukasz Lenart <lukaszlen...@apache.org>
Committed: Mon Sep 19 09:45:16 2016 +0200

----------------------------------------------------------------------
 .../com/opensymphony/xwork2/ActionSupport.java  | 19 ++++++++-----
 .../xwork2/DefaultLocaleProvider.java           | 11 ++++++++
 .../com/opensymphony/xwork2/LocaleProvider.java | 16 +++++++++++
 .../validator/DelegatingValidatorContext.java   | 22 ++++++++++++++-
 .../struts2/interceptor/I18nInterceptor.java    | 27 +++++++++++++++----
 .../opensymphony/xwork2/ActionSupportTest.java  | 28 ++++++--------------
 .../xwork2/CompositeTextProviderTest.java       | 20 ++++++++++++++
 .../xwork2/TextProviderSupportTest.java         | 10 +++++++
 .../impl/AnnotationXWorkConverterTest.java      |  2 ++
 .../conversion/impl/XWorkConverterTest.java     |  2 ++
 .../xwork2/util/LocalizedTextUtilTest.java      |  4 +++
 .../validator/SimpleActionValidationTest.java   |  5 +++-
 .../StringLengthFieldValidatorTest.java         |  2 ++
 .../validator/VisitorFieldValidatorTest.java    |  1 +
 .../interceptor/FileUploadInterceptorTest.java  |  3 +++
 .../interceptor/I18nInterceptorTest.java        |  5 ++--
 .../struts2/views/jsp/AbstractTagTest.java      |  2 ++
 .../apache/struts2/views/jsp/TextTagTest.java   |  2 ++
 .../struts2/views/jsp/ui/OptGroupTest.java      |  1 +
 19 files changed, 146 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java 
b/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
index 62f24df..012b1f7 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
+++ b/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
@@ -63,14 +63,19 @@ public class ActionSupport implements Action, Validateable, 
ValidationAware, Tex
         return validationAware.getFieldErrors();
     }
 
+    @Override
     public Locale getLocale() {
-        ActionContext ctx = ActionContext.getContext();
-        if (ctx != null) {
-            return ctx.getLocale();
-        } else {
-               LOG.debug("Action context not initialized");
-            return null;
-        }
+        return container.getInstance(LocaleProvider.class).getLocale();
+    }
+
+    @Override
+    public boolean isValidLocaleString(String localeStr) {
+        return 
container.getInstance(LocaleProvider.class).isValidLocaleString(localeStr);
+    }
+
+    @Override
+    public boolean isValidLocale(Locale locale) {
+        return 
container.getInstance(LocaleProvider.class).isValidLocale(locale);
     }
 
     public boolean hasKey(String key) {

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java 
b/core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java
index 09a4daa..1d687bc 100644
--- a/core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java
+++ b/core/src/main/java/com/opensymphony/xwork2/DefaultLocaleProvider.java
@@ -1,8 +1,10 @@
 package com.opensymphony.xwork2;
 
+import com.opensymphony.xwork2.util.LocalizedTextUtil;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.util.Arrays;
 import java.util.Locale;
 
 /**
@@ -22,4 +24,13 @@ public class DefaultLocaleProvider implements LocaleProvider 
{
         }
     }
 
+    @Override
+    public boolean isValidLocaleString(String localeStr) {
+        return isValidLocale(LocalizedTextUtil.localeFromString(localeStr, 
getLocale()));
+    }
+
+    @Override
+    public boolean isValidLocale(Locale locale) {
+        return locale != null && 
Arrays.asList(Locale.getAvailableLocales()).contains(locale);
+    }
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/main/java/com/opensymphony/xwork2/LocaleProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/LocaleProvider.java 
b/core/src/main/java/com/opensymphony/xwork2/LocaleProvider.java
index 9584e4e..9efcfae 100644
--- a/core/src/main/java/com/opensymphony/xwork2/LocaleProvider.java
+++ b/core/src/main/java/com/opensymphony/xwork2/LocaleProvider.java
@@ -39,4 +39,20 @@ public interface LocaleProvider {
      */
     Locale getLocale();
 
+    /**
+     * Validates if provided string is a valid {@link Locale}
+     *
+     * @param localeStr a String representing locale, e.g. en_EN
+     * @return true if valid
+     */
+    boolean isValidLocaleString(String localeStr);
+
+    /**
+     * Validates if provided {@link Locale} is value
+     *
+     * @param locale instance of {@link Locale} to validate
+     * @return true if valid
+     */
+    boolean isValidLocale(Locale locale);
+
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
 
b/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
index cf6de26..abaa761 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
@@ -107,6 +107,16 @@ public class DelegatingValidatorContext implements 
ValidatorContext {
         return localeProvider.getLocale();
     }
 
+    @Override
+    public boolean isValidLocaleString(String localeStr) {
+        return localeProvider.isValidLocaleString(localeStr);
+    }
+
+    @Override
+    public boolean isValidLocale(Locale locale) {
+        return localeProvider.isValidLocale(locale);
+    }
+
     public boolean hasKey(String key) {
        return textProvider.hasKey(key);
     }
@@ -257,7 +267,17 @@ public class DelegatingValidatorContext implements 
ValidatorContext {
      */
     private static class ActionContextLocaleProvider implements LocaleProvider 
{
         public Locale getLocale() {
-            return ActionContext.getContext().getLocale();
+            return 
ActionContext.getContext().getInstance(LocaleProvider.class).getLocale();
+        }
+
+        @Override
+        public boolean isValidLocaleString(String localeStr) {
+            return 
ActionContext.getContext().getInstance(LocaleProvider.class).isValidLocaleString(localeStr);
+        }
+
+        @Override
+        public boolean isValidLocale(Locale locale) {
+            return 
ActionContext.getContext().getInstance(LocaleProvider.class).isValidLocale(locale);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java 
b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
index b7b5d3d..7467a95 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/I18nInterceptor.java
@@ -22,6 +22,8 @@ package org.apache.struts2.interceptor;
 
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.LocaleProvider;
+import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 import com.opensymphony.xwork2.util.LocalizedTextUtil;
 import org.apache.logging.log4j.LogManager;
@@ -102,6 +104,8 @@ public class I18nInterceptor extends AbstractInterceptor {
     protected String requestOnlyParameterName = DEFAULT_REQUESTONLY_PARAMETER;
     protected String attributeName = DEFAULT_SESSION_ATTRIBUTE;
 
+    protected LocaleProvider localeProvider;
+
     // Request-Only = None
     protected enum Storage { COOKIE, SESSION, NONE }
 
@@ -123,6 +127,11 @@ public class I18nInterceptor extends AbstractInterceptor {
         this.attributeName = attributeName;
     }
 
+    @Inject
+    public void setLocaleProvider(LocaleProvider localeProvider) {
+        this.localeProvider = localeProvider;
+    }
+
     @Override
     public String intercept(ActionInvocation invocation) throws Exception {
         if (LOG.isDebugEnabled()) {
@@ -225,17 +234,25 @@ public class I18nInterceptor extends AbstractInterceptor {
     protected Locale getLocaleFromParam(Object requestedLocale) {
         Locale locale = null;
         if (requestedLocale != null) {
-            locale = (requestedLocale instanceof Locale) ?
-                    (Locale) requestedLocale :
-                    
LocalizedTextUtil.localeFromString(requestedLocale.toString(), null);
+            if (requestedLocale instanceof Locale) {
+                locale = (Locale) requestedLocale;
+            } else {
+                String localeStr = requestedLocale.toString();
+                if (localeProvider.isValidLocaleString(localeStr)) {
+                    locale = 
LocalizedTextUtil.localeFromString(requestedLocale.toString(), null);
+                }
+            }
             if (locale != null) {
                 LOG.debug("Applied request locale: {}", locale);
             }
         }
 
-        if (locale != null && 
!Arrays.asList(Locale.getAvailableLocales()).contains(locale)) {
-            locale = Locale.getDefault();
+        if (!localeProvider.isValidLocale(locale)) {
+            Locale defaultLocale = localeProvider.getLocale();
+            LOG.debug("Provided locale {} isn't valid, fallback to default 
locale", locale, defaultLocale);
+            locale = defaultLocale;
         }
+
         return locale;
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java 
b/core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
index cbbd58b..bd47c1c 100644
--- a/core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
+++ b/core/src/test/java/com/opensymphony/xwork2/ActionSupportTest.java
@@ -27,11 +27,18 @@ import java.util.*;
 public class ActionSupportTest extends XWorkTestCase {
 
     private ActionSupport as;
+    private MyActionSupport mas;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
         as = new ActionSupport();
+        container.inject(as);
+
+        ActionContext.getContext().setLocale(new Locale("da"));
+
+        mas = new MyActionSupport();
+        container.inject(mas);
     }
 
     @Override
@@ -153,9 +160,6 @@ public class ActionSupportTest extends XWorkTestCase {
     }
 
     public void testMyActionSupport() throws Exception {
-        ActionContext.getContext().setLocale(new Locale("da"));
-        MyActionSupport mas = new MyActionSupport();
-
         assertEquals("santa", mas.execute());
         assertNotNull(mas.getTexts());
 
@@ -165,9 +169,6 @@ public class ActionSupportTest extends XWorkTestCase {
     }
 
     public void testSimpleGetTexts() throws Exception {
-        ActionContext.getContext().setLocale(new Locale("da"));
-        MyActionSupport mas = new MyActionSupport();
-
         checkGetTexts(mas);
     }
 
@@ -199,9 +200,6 @@ public class ActionSupportTest extends XWorkTestCase {
     }
 
     public void testGetTextsWithArgs() throws Exception {
-        ActionContext.getContext().setLocale(new Locale("da"));
-        MyActionSupport mas = new MyActionSupport();
-
         assertEquals("Hello World", mas.getText("hello", "this is default", 
"from me")); // no args in bundle
         assertEquals("Hello World from me", mas.getText("hello.0", "this is 
default", "from me"));
         assertEquals("this is default", mas.getText("not.in.bundle", "this is 
default", "from me"));
@@ -211,9 +209,6 @@ public class ActionSupportTest extends XWorkTestCase {
     }
 
     public void testGetTextsWithListArgs() throws Exception {
-        ActionContext.getContext().setLocale(new Locale("da"));
-        MyActionSupport mas = new MyActionSupport();
-
         List<Object> args = new ArrayList<>();
         args.add("Santa");
         args.add("loud");
@@ -236,9 +231,6 @@ public class ActionSupportTest extends XWorkTestCase {
     }
 
     public void testGetTextsWithArrayArgs() throws Exception {
-        ActionContext.getContext().setLocale(new Locale("da"));
-        MyActionSupport mas = new MyActionSupport();
-
         String[] args = {"Santa", "loud"};
         assertEquals("Hello World", mas.getText("hello", "this is default", 
args)); // no args in bundle
         assertEquals("Hello World Santa", mas.getText("hello.0", "this is 
default", args)); // only 1 arg in bundle
@@ -293,16 +285,11 @@ public class ActionSupportTest extends XWorkTestCase {
     }
 
     public void testGetBundle() throws Exception {
-        ActionContext.getContext().setLocale(new Locale("da"));
-        MyActionSupport mas = new MyActionSupport();
-
         ResourceBundle rb = 
ResourceBundle.getBundle(MyActionSupport.class.getName(), new Locale("da"));
         assertEquals(rb, mas.getTexts(MyActionSupport.class.getName()));
     }
 
     public void testFormattingSupport() throws Exception {
-        ActionContext.getContext().setLocale(new Locale("da"));
-        MyActionSupport mas = new MyActionSupport();
         ActionContext.getContext().getValueStack().push(mas);
 
         mas.setVal(234d);
@@ -316,6 +303,7 @@ public class ActionSupportTest extends XWorkTestCase {
         ActionContext.getContext().getConversionErrors().put("val", new 
String[]{"4567def"});
         ActionContext.getContext().setLocale(new Locale("da"));
         MyActionSupport mas = new MyActionSupport();
+        container.inject(mas);
         ActionContext.getContext().getValueStack().push(mas);
 
         mas.setVal(234d);

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/com/opensymphony/xwork2/CompositeTextProviderTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/CompositeTextProviderTest.java 
b/core/src/test/java/com/opensymphony/xwork2/CompositeTextProviderTest.java
index 5778898..2dcfa8b 100644
--- a/core/src/test/java/com/opensymphony/xwork2/CompositeTextProviderTest.java
+++ b/core/src/test/java/com/opensymphony/xwork2/CompositeTextProviderTest.java
@@ -82,12 +82,32 @@ public class CompositeTextProviderTest extends 
XWorkTestCase {
                             public Locale getLocale() {
                                 return Locale.ENGLISH;
                             }
+
+                            @Override
+                            public boolean isValidLocaleString(String 
localeStr) {
+                                return true;
+                            }
+
+                            @Override
+                            public boolean isValidLocale(Locale locale) {
+                                return true;
+                            }
                         }),
                 new 
TextProviderSupport(ResourceBundle.getBundle("com.opensymphony.xwork2.validator.CompositeTextProviderTestResourceBundle2"),
                         new LocaleProvider() {
                             public Locale getLocale() {
                                 return Locale.ENGLISH;
                             }
+
+                            @Override
+                            public boolean isValidLocaleString(String 
localeStr) {
+                                return true;
+                            }
+
+                            @Override
+                            public boolean isValidLocale(Locale locale) {
+                                return true;
+                            }
                         })
 
         });

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/com/opensymphony/xwork2/TextProviderSupportTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/TextProviderSupportTest.java 
b/core/src/test/java/com/opensymphony/xwork2/TextProviderSupportTest.java
index cb360f7..6769d0e 100644
--- a/core/src/test/java/com/opensymphony/xwork2/TextProviderSupportTest.java
+++ b/core/src/test/java/com/opensymphony/xwork2/TextProviderSupportTest.java
@@ -112,6 +112,16 @@ public class TextProviderSupportTest extends XWorkTestCase 
{
             public Locale getLocale() {
                 return Locale.ENGLISH;
             }
+
+            @Override
+            public boolean isValidLocaleString(String localeStr) {
+                return true;
+            }
+
+            @Override
+            public boolean isValidLocale(Locale locale) {
+                return true;
+            }
         });
     }
 

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java
index 7302359..df84ed1 100644
--- 
a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java
+++ 
b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/AnnotationXWorkConverterTest.java
@@ -159,6 +159,8 @@ public class AnnotationXWorkConverterTest extends 
XWorkTestCase {
 
     public void testFindConversionErrorMessage() {
         ModelDrivenAnnotationAction action = new ModelDrivenAnnotationAction();
+        container.inject(action);
+
         ValueStack stack = ActionContext.getContext().getValueStack();
         stack.push(action);
         stack.push(action.getModel());

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
index d185c64..be96416 100644
--- 
a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
+++ 
b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkConverterTest.java
@@ -200,6 +200,8 @@ public class XWorkConverterTest extends XWorkTestCase {
 
     public void testFindConversionErrorMessage() {
         ModelDrivenAction action = new ModelDrivenAction();
+        container.inject(action);
+
         stack.push(action);
         stack.push(action.getModel());
 

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/com/opensymphony/xwork2/util/LocalizedTextUtilTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/util/LocalizedTextUtilTest.java 
b/core/src/test/java/com/opensymphony/xwork2/util/LocalizedTextUtilTest.java
index f09bc9b..c14d529 100644
--- a/core/src/test/java/com/opensymphony/xwork2/util/LocalizedTextUtilTest.java
+++ b/core/src/test/java/com/opensymphony/xwork2/util/LocalizedTextUtilTest.java
@@ -54,6 +54,7 @@ public class LocalizedTextUtilTest extends XWorkTestCase {
        
        public void testActionGetTextWithNullObject() throws Exception {
                MyAction action = new MyAction();
+        container.inject(action);
                
                Mock mockActionInvocation = new Mock(ActionInvocation.class);
         mockActionInvocation.expectAndReturn("getAction", action);
@@ -78,6 +79,8 @@ public class LocalizedTextUtilTest extends XWorkTestCase {
        
     public void testActionGetText() throws Exception {
         ModelDrivenAction2 action = new ModelDrivenAction2();
+        container.inject(action);
+
         TestBean2 bean = (TestBean2) action.getModel();
         Bar bar = new Bar();
         bean.setBarObj(bar);
@@ -100,6 +103,7 @@ public class LocalizedTextUtilTest extends XWorkTestCase {
         
LocalizedTextUtil.addDefaultResourceBundle("com/opensymphony/xwork2/util/FindMe");
 
         SimpleAction action = new SimpleAction();
+        container.inject(action);
 
         Mock mockActionInvocation = new Mock(ActionInvocation.class);
         mockActionInvocation.expectAndReturn("getAction", action);

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/com/opensymphony/xwork2/validator/SimpleActionValidationTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/validator/SimpleActionValidationTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/validator/SimpleActionValidationTest.java
index 559162e..3365715 100644
--- 
a/core/src/test/java/com/opensymphony/xwork2/validator/SimpleActionValidationTest.java
+++ 
b/core/src/test/java/com/opensymphony/xwork2/validator/SimpleActionValidationTest.java
@@ -150,7 +150,10 @@ public class SimpleActionValidationTest extends 
XWorkTestCase {
         String messageKey = "does.not.exist";
         validator.setMessageKey(messageKey);
 
-        ValidatorContext validatorContext = new DelegatingValidatorContext(new 
SimpleAction());
+        SimpleAction action = new SimpleAction();
+        container.inject(action);
+
+        ValidatorContext validatorContext = new 
DelegatingValidatorContext(action);
         validator.setValidatorContext(validatorContext);
         validator.validate(this);
         assertTrue(validatorContext.hasActionErrors());

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/com/opensymphony/xwork2/validator/StringLengthFieldValidatorTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/validator/StringLengthFieldValidatorTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/validator/StringLengthFieldValidatorTest.java
index 1fae0a9..b8cf182 100644
--- 
a/core/src/test/java/com/opensymphony/xwork2/validator/StringLengthFieldValidatorTest.java
+++ 
b/core/src/test/java/com/opensymphony/xwork2/validator/StringLengthFieldValidatorTest.java
@@ -154,6 +154,8 @@ public class StringLengthFieldValidatorTest extends 
XWorkTestCase {
                super.setUp();
 
         action = new InternalActionSupport();
+               container.inject(action);
+
         ValueStack valueStack = ActionContext.getContext().getValueStack();
         valueStack.push(action);
 

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java
index 8191767..70e4b3b 100644
--- 
a/core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java
+++ 
b/core/src/test/java/com/opensymphony/xwork2/validator/VisitorFieldValidatorTest.java
@@ -36,6 +36,7 @@ public class VisitorFieldValidatorTest extends XWorkTestCase {
         super.setUp();
 
         action = new VisitorValidatorTestAction();
+        container.inject(action);
 
         TestBean bean = action.getBean();
         Calendar cal = new GregorianCalendar(1900, 01, 01);

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
 
b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
index 4b26b81..ecc624a 100644
--- 
a/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
+++ 
b/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java
@@ -307,6 +307,7 @@ public class FileUploadInterceptorTest extends 
StrutsInternalTestCase {
         assertTrue(ServletFileUpload.isMultipartContent(req));
 
         MyFileupAction action = new MyFileupAction();
+        container.inject(action);
         MockActionInvocation mai = new MockActionInvocation();
         mai.setAction(action);
         mai.setResultCode("success");
@@ -363,6 +364,8 @@ public class FileUploadInterceptorTest extends 
StrutsInternalTestCase {
     protected void setUp() throws Exception {
         super.setUp();
         action = new TestAction();
+        container.inject(action);
+
         interceptor = new FileUploadInterceptor();
         container.inject(interceptor);
         tempDir = File.createTempFile("struts", "fileupload");

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/org/apache/struts2/interceptor/I18nInterceptorTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/struts2/interceptor/I18nInterceptorTest.java 
b/core/src/test/java/org/apache/struts2/interceptor/I18nInterceptorTest.java
index 5089be9..68cbfee 100644
--- a/core/src/test/java/org/apache/struts2/interceptor/I18nInterceptorTest.java
+++ b/core/src/test/java/org/apache/struts2/interceptor/I18nInterceptorTest.java
@@ -23,6 +23,7 @@ package org.apache.struts2.interceptor;
 import com.opensymphony.xwork2.Action;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.DefaultLocaleProvider;
 import com.opensymphony.xwork2.mock.MockActionInvocation;
 import junit.framework.TestCase;
 import org.apache.struts2.ServletActionContext;
@@ -181,8 +182,7 @@ public class I18nInterceptorTest extends TestCase {
         interceptor.intercept(mai);
 
         Locale locale = (Locale) 
session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE);
-        assertNull(locale); // should not be stored here
-        locale = mai.getInvocationContext().getLocale();
+        assertNotNull(locale);
         assertEquals(locale1, locale);
     }
 
@@ -195,6 +195,7 @@ public class I18nInterceptorTest extends TestCase {
 
     public void setUp() throws Exception {
         interceptor = new I18nInterceptor();
+        interceptor.setLocaleProvider(new DefaultLocaleProvider());
         interceptor.init();
         session = new HashMap();
 

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java 
b/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java
index 338793f..ba10f26 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java
@@ -86,6 +86,8 @@ public abstract class AbstractTagTest extends 
StrutsInternalTestCase {
 
     protected void createMocks() throws Exception {
         action = this.getAction();
+        container.inject(action);
+
         stack = ActionContext.getContext().getValueStack();
         context = stack.getContext();
         stack.push(action);

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/org/apache/struts2/views/jsp/TextTagTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/views/jsp/TextTagTest.java 
b/core/src/test/java/org/apache/struts2/views/jsp/TextTagTest.java
index ce38d1d..651fa3d 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/TextTagTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/TextTagTest.java
@@ -227,6 +227,7 @@ public class TextTagTest extends AbstractTagTest {
         ValueStack newStack = 
container.getInstance(ValueStackFactory.class).createValueStack();
         newStack.getContext().put(ActionContext.CONTAINER, container);
         TestAction testAction = new TestAction();
+        container.inject(testAction);
         testAction.setResult("bar");
         newStack.push(testAction);
         request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, 
newStack);
@@ -247,6 +248,7 @@ public class TextTagTest extends AbstractTagTest {
         ValueStack newStack = 
container.getInstance(ValueStackFactory.class).createValueStack();
         newStack.getContext().put(ActionContext.CONTAINER, container);
         TestAction testAction = new TestAction();
+        container.inject(testAction);
         testAction.setResult("bar");
         newStack.push(testAction);
         request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, 
newStack);

http://git-wip-us.apache.org/repos/asf/struts/blob/ea92e954/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java 
b/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java
index 308abca..d9b58c1 100644
--- a/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java
+++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/OptGroupTest.java
@@ -227,6 +227,7 @@ public class OptGroupTest extends AbstractUITagTest {
         selectTag.setListValueKey("valueKey");
 
         LocaleTestAction localeTestAction = new LocaleTestAction();
+        container.inject(localeTestAction);
         
         localeTestAction.setText("LocaleKeyValueTest.ONE","Edno");
         localeTestAction.setText("LocaleKeyValueTest.TWO","Dve");

Reply via email to