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/16 10:09:39 UTC
[05/12] struts git commit: Replaces LocaleProvider with
LocaleProviderFactory
Replaces LocaleProvider with LocaleProviderFactory
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/4b022bfb
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/4b022bfb
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/4b022bfb
Branch: refs/heads/master
Commit: 4b022bfbe5f575908e61d84de885ca171fcca7f3
Parents: 3b738ad
Author: Lukasz Lenart <lu...@apache.org>
Authored: Wed Mar 15 09:11:31 2017 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Wed Mar 15 09:11:31 2017 +0100
----------------------------------------------------------------------
.../com/opensymphony/xwork2/ActionSupport.java | 18 ++++++++++++++----
.../xwork2/config/impl/DefaultConfiguration.java | 2 +-
.../providers/XWorkConfigurationProvider.java | 4 +++-
.../conversion/impl/DefaultTypeConverter.java | 4 +++-
.../validator/DelegatingValidatorContext.java | 18 +++++++++++++++---
.../java/org/apache/struts2/StrutsConstants.java | 4 ++++
.../java/org/apache/struts2/components/I18n.java | 5 +++--
.../config/DefaultBeanSelectionProvider.java | 12 +++++++++---
.../org/apache/struts2/dispatcher/Dispatcher.java | 13 ++++++++++---
.../multipart/AbstractMultiPartRequest.java | 8 +++-----
.../interceptor/FileUploadInterceptor.java | 3 ++-
.../struts2/interceptor/I18nInterceptor.java | 5 +++--
core/src/main/resources/struts-default.xml | 2 +-
.../struts2/tiles/StrutsTilesLocaleResolver.java | 5 +++--
14 files changed, 74 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/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 bb7048f..ea4be0d 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
+++ b/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java
@@ -19,6 +19,7 @@ import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.interceptor.ValidationAware;
import com.opensymphony.xwork2.util.ValueStack;
+import net.sf.cglib.core.Local;
import java.io.Serializable;
import java.util.*;
@@ -32,6 +33,7 @@ public class ActionSupport implements Action, Validateable, ValidationAware, Tex
private final ValidationAwareSupport validationAware = new ValidationAwareSupport();
private transient TextProvider textProvider;
+ private transient LocaleProvider localeProvider;
protected Container container;
@@ -61,17 +63,17 @@ public class ActionSupport implements Action, Validateable, ValidationAware, Tex
@Override
public Locale getLocale() {
- return container.getInstance(LocaleProvider.class).getLocale();
+ return getLocaleProvider().getLocale();
}
@Override
public boolean isValidLocaleString(String localeStr) {
- return container.getInstance(LocaleProvider.class).isValidLocaleString(localeStr);
+ return getLocaleProvider().isValidLocaleString(localeStr);
}
@Override
public boolean isValidLocale(Locale locale) {
- return container.getInstance(LocaleProvider.class).isValidLocale(locale);
+ return getLocaleProvider().isValidLocale(locale);
}
public boolean hasKey(String key) {
@@ -272,7 +274,7 @@ public class ActionSupport implements Action, Validateable, ValidationAware, Tex
*
* @return reference to field with TextProvider
*/
- private TextProvider getTextProvider() {
+ protected TextProvider getTextProvider() {
if (textProvider == null) {
TextProviderFactory tpf = container.inject(TextProviderFactory.class);
textProvider = tpf.createInstance(getClass());
@@ -280,6 +282,14 @@ public class ActionSupport implements Action, Validateable, ValidationAware, Tex
return textProvider;
}
+ protected LocaleProvider getLocaleProvider() {
+ if (localeProvider == null) {
+ LocaleProviderFactory localeProviderFactory = container.getInstance(LocaleProviderFactory.class);
+ localeProvider = localeProviderFactory.createLocaleProvider();
+ }
+ return localeProvider;
+ }
+
@Inject
public void setContainer(Container container) {
this.container = container;
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
index 358eb5c..c7c5a92 100644
--- a/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
+++ b/core/src/main/java/com/opensymphony/xwork2/config/impl/DefaultConfiguration.java
@@ -264,7 +264,7 @@ public class DefaultConfiguration implements Configuration {
builder.factory(TextParser.class, OgnlTextParser.class, Scope.SINGLETON);
builder.factory(TextProvider.class, "system", DefaultTextProvider.class, Scope.SINGLETON);
builder.factory(TextProvider.class, TextProviderSupport.class, Scope.SINGLETON);
- builder.factory(LocaleProvider.class, DefaultLocaleProvider.class, Scope.SINGLETON);
+ builder.factory(LocaleProviderFactory.class, DefaultLocaleProviderFactory.class, Scope.SINGLETON);
builder.factory(ObjectTypeDeterminer.class, DefaultObjectTypeDeterminer.class, Scope.SINGLETON);
builder.factory(PropertyAccessor.class, CompoundRoot.class.getName(), CompoundRootAccessor.class, Scope.SINGLETON);
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java b/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
index 853f50e..5c912e1 100644
--- a/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
+++ b/core/src/main/java/com/opensymphony/xwork2/config/providers/XWorkConfigurationProvider.java
@@ -2,6 +2,8 @@ package com.opensymphony.xwork2.config.providers;
import com.opensymphony.xwork2.ActionProxyFactory;
import com.opensymphony.xwork2.DefaultActionProxyFactory;
+import com.opensymphony.xwork2.DefaultLocaleProviderFactory;
+import com.opensymphony.xwork2.LocaleProviderFactory;
import com.opensymphony.xwork2.TextProviderFactory;
import com.opensymphony.xwork2.factory.DefaultUnknownHandlerFactory;
import com.opensymphony.xwork2.factory.UnknownHandlerFactory;
@@ -186,7 +188,7 @@ public class XWorkConfigurationProvider implements ConfigurationProvider {
.factory(TextProvider.class, "system", DefaultTextProvider.class, Scope.SINGLETON)
.factory(TextProvider.class, TextProviderSupport.class, Scope.SINGLETON)
- .factory(LocaleProvider.class, DefaultLocaleProvider.class, Scope.SINGLETON)
+ .factory(LocaleProviderFactory.class, DefaultLocaleProviderFactory.class, Scope.SINGLETON)
.factory(OgnlUtil.class, Scope.SINGLETON)
.factory(CollectionConverter.class, Scope.SINGLETON)
.factory(ArrayConverter.class, Scope.SINGLETON)
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java
index 8b3a9a6..f191680 100644
--- a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java
+++ b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java
@@ -32,6 +32,7 @@ package com.opensymphony.xwork2.conversion.impl;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.LocaleProvider;
+import com.opensymphony.xwork2.LocaleProviderFactory;
import com.opensymphony.xwork2.conversion.TypeConverter;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.Inject;
@@ -349,7 +350,8 @@ public abstract class DefaultTypeConverter implements TypeConverter {
locale = (Locale) context.get(ActionContext.LOCALE);
}
if (locale == null) {
- locale = container.getInstance(LocaleProvider.class).getLocale();
+ LocaleProviderFactory localeProviderFactory = container.getInstance(LocaleProviderFactory.class);
+ locale = localeProviderFactory.createLocaleProvider().getLocale();
}
return locale;
}
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/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 90812bd..b8921e9 100644
--- a/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
+++ b/core/src/main/java/com/opensymphony/xwork2/validator/DelegatingValidatorContext.java
@@ -253,18 +253,30 @@ public class DelegatingValidatorContext implements ValidatorContext {
* An implementation of LocaleProvider which gets the locale from the action context.
*/
private static class ActionContextLocaleProvider implements LocaleProvider {
+
+ private LocaleProvider localeProvider;
+
+ private LocaleProvider getLocaleProvider() {
+ if (localeProvider == null) {
+ LocaleProviderFactory localeProviderFactory = ActionContext.getContext().getInstance(LocaleProviderFactory.class);
+ localeProvider = localeProviderFactory.createLocaleProvider();
+ }
+ return localeProvider;
+ }
+
+ @Override
public Locale getLocale() {
- return ActionContext.getContext().getInstance(LocaleProvider.class).getLocale();
+ return getLocaleProvider().getLocale();
}
@Override
public boolean isValidLocaleString(String localeStr) {
- return ActionContext.getContext().getInstance(LocaleProvider.class).isValidLocaleString(localeStr);
+ return getLocaleProvider().isValidLocaleString(localeStr);
}
@Override
public boolean isValidLocale(Locale locale) {
- return ActionContext.getContext().getInstance(LocaleProvider.class).isValidLocale(locale);
+ return getLocaleProvider().isValidLocale(locale);
}
}
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/java/org/apache/struts2/StrutsConstants.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java
index 3d898ce..1160d88 100644
--- a/core/src/main/java/org/apache/struts2/StrutsConstants.java
+++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java
@@ -201,8 +201,12 @@ public final class StrutsConstants {
public static final String STRUTS_XWORKTEXTPROVIDER = "struts.xworkTextProvider";
/** The {@link com.opensymphony.xwork2.LocaleProvider} implementation class */
+ @Deprecated
public static final String STRUTS_LOCALE_PROVIDER = "struts.localeProvider";
+ /** The {@link com.opensymphony.xwork2.LocaleProviderFactory} implementation class */
+ public static final String STRUTS_LOCALE_PROVIDER_FACTORY = "struts.localeProviderFactory";
+
/** The name of the parameter to create when mapping an id (used by some action mappers) */
public static final String STRUTS_ID_PARAMETER_NAME = "struts.mapper.idParameterName";
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/java/org/apache/struts2/components/I18n.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/components/I18n.java b/core/src/main/java/org/apache/struts2/components/I18n.java
index f934a3e..89e38bb 100644
--- a/core/src/main/java/org/apache/struts2/components/I18n.java
+++ b/core/src/main/java/org/apache/struts2/components/I18n.java
@@ -24,6 +24,7 @@ package org.apache.struts2.components;
import java.io.Writer;
import java.util.ResourceBundle;
+import com.opensymphony.xwork2.LocaleProviderFactory;
import org.apache.struts2.views.annotations.StrutsTag;
import org.apache.struts2.views.annotations.StrutsTagAttribute;
import org.apache.struts2.StrutsException;
@@ -109,8 +110,8 @@ public class I18n extends Component {
}
@Inject
- public void setLocaleProvider(LocaleProvider localeProvider) {
- this.localeProvider = localeProvider;
+ public void setLocaleProviderFactory(LocaleProviderFactory localeProviderFactory) {
+ this.localeProvider = localeProviderFactory.createLocaleProvider();
}
public boolean start(Writer writer) {
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
index a89ae9a..a72bd11 100644
--- a/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
+++ b/core/src/main/java/org/apache/struts2/config/DefaultBeanSelectionProvider.java
@@ -22,6 +22,7 @@
package org.apache.struts2.config;
import com.opensymphony.xwork2.ActionProxyFactory;
+import com.opensymphony.xwork2.LocaleProviderFactory;
import com.opensymphony.xwork2.LocalizedTextProvider;
import com.opensymphony.xwork2.TextProviderFactory;
import com.opensymphony.xwork2.factory.UnknownHandlerFactory;
@@ -29,7 +30,6 @@ import com.opensymphony.xwork2.security.AcceptedPatternsChecker;
import com.opensymphony.xwork2.security.ExcludedPatternsChecker;
import com.opensymphony.xwork2.FileManager;
import com.opensymphony.xwork2.FileManagerFactory;
-import com.opensymphony.xwork2.LocaleProvider;
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.TextProvider;
import com.opensymphony.xwork2.UnknownHandlerManager;
@@ -221,7 +221,13 @@ import org.apache.struts2.views.velocity.VelocityManager;
* <td>com.opensymphony.xwork2.LocaleProvider</td>
* <td>struts.localeProvider</td>
* <td>singleton</td>
- * <td>Allows provide custom TextProvider for whole application</td>
+ * <td>DEPRECATED! Allows provide custom TextProvider for whole application</td>
+ * </tr>
+ * <tr>
+ * <td>com.opensymphony.xwork2.LocaleProviderFactory</td>
+ * <td>struts.localeProviderFactory</td>
+ * <td>singleton</td>
+ * <td>Allows provide custom LocaleProvider for whole application</td>
* </tr>
* <tr>
* <td>org.apache.struts2.components.UrlRenderer</td>
@@ -393,7 +399,7 @@ public class DefaultBeanSelectionProvider extends AbstractBeanSelectionProvider
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(LocaleProviderFactory.class, StrutsConstants.STRUTS_LOCALE_PROVIDER_FACTORY, builder, props);
alias(LocalizedTextProvider.class, StrutsConstants.STRUTS_LOCALIZED_TEXT_PROVIDER, builder, props);
alias(ActionProxyFactory.class, StrutsConstants.STRUTS_ACTIONPROXYFACTORY, builder, props);
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
index 047238f..b7714be 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
@@ -783,9 +783,16 @@ public class Dispatcher {
String content_type = request.getContentType();
if (content_type != null && content_type.contains("multipart/form-data")) {
- MultiPartRequest mpr = getMultiPartRequest();
- LocaleProvider provider = getContainer().getInstance(LocaleProvider.class);
- request = new MultiPartRequestWrapper(mpr, request, getSaveDir(), provider, disableRequestAttributeValueStackLookup);
+ MultiPartRequest multiPartRequest = getMultiPartRequest();
+ LocaleProviderFactory localeProviderFactory = getContainer().getInstance(LocaleProviderFactory.class);
+
+ request = new MultiPartRequestWrapper(
+ multiPartRequest,
+ request,
+ getSaveDir(),
+ localeProviderFactory.createLocaleProvider(),
+ disableRequestAttributeValueStackLookup
+ );
} else {
request = new StrutsRequestWrapper(request, disableRequestAttributeValueStackLookup);
}
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java b/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
index 6c3f1f3..cc20523 100644
--- a/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
+++ b/core/src/main/java/org/apache/struts2/dispatcher/multipart/AbstractMultiPartRequest.java
@@ -1,6 +1,7 @@
package org.apache.struts2.dispatcher.multipart;
import com.opensymphony.xwork2.LocaleProvider;
+import com.opensymphony.xwork2.LocaleProviderFactory;
import com.opensymphony.xwork2.inject.Inject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -70,12 +71,9 @@ public abstract class AbstractMultiPartRequest implements MultiPartRequest {
this.maxSize = Long.parseLong(maxSize);
}
- /**
- * @param provider Injects the Struts locale provider.
- */
@Inject
- public void setLocaleProvider(LocaleProvider provider) {
- defaultLocale = provider.getLocale();
+ public void setLocaleProviderFactory(LocaleProviderFactory localeProviderFactory) {
+ defaultLocale = localeProviderFactory.createLocaleProvider().getLocale();
}
/**
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
index a428b53..b00f2e3 100644
--- a/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/FileUploadInterceptor.java
@@ -455,7 +455,8 @@ public class FileUploadInterceptor extends AbstractInterceptor {
if (action instanceof LocaleProvider) {
localeProvider = (LocaleProvider) action;
} else {
- localeProvider = container.getInstance(LocaleProvider.class);
+ LocaleProviderFactory localeProviderFactory = container.getInstance(LocaleProviderFactory.class);
+ localeProvider = localeProviderFactory.createLocaleProvider();
}
return localeProvider;
}
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/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 4b6c8f5..f97176f 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,7 @@ package org.apache.struts2.interceptor;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.LocaleProvider;
+import com.opensymphony.xwork2.LocaleProviderFactory;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.util.DefaultLocalizedTextProvider;
@@ -93,8 +94,8 @@ public class I18nInterceptor extends AbstractInterceptor {
}
@Inject
- public void setLocaleProvider(LocaleProvider localeProvider) {
- this.localeProvider = localeProvider;
+ public void setLocaleProviderFactory(LocaleProviderFactory localeProviderFactory) {
+ this.localeProvider = localeProviderFactory.createLocaleProvider();
}
@Override
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/core/src/main/resources/struts-default.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml
index 1f516b7..3a4f6ee 100644
--- a/core/src/main/resources/struts-default.xml
+++ b/core/src/main/resources/struts-default.xml
@@ -133,7 +133,7 @@
<bean type="com.opensymphony.xwork2.TextProviderFactory" name="struts" class="com.opensymphony.xwork2.TextProviderFactory" scope="prototype" />
<bean type="com.opensymphony.xwork2.LocalizedTextProvider" name="struts" class="com.opensymphony.xwork2.util.DefaultLocalizedTextProvider" 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" />
+ <bean type="com.opensymphony.xwork2.LocaleProviderFactory" name="struts" class="com.opensymphony.xwork2.DefaultLocaleProviderFactory" scope="singleton" />
<bean type="org.apache.struts2.components.UrlRenderer" name="struts" class="org.apache.struts2.components.ServletUrlRenderer"/>
<bean type="org.apache.struts2.views.util.UrlHelper" name="struts" class="org.apache.struts2.views.util.DefaultUrlHelper"/>
http://git-wip-us.apache.org/repos/asf/struts/blob/4b022bfb/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesLocaleResolver.java
----------------------------------------------------------------------
diff --git a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesLocaleResolver.java b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesLocaleResolver.java
index 2c0ef9d..e75cd48 100644
--- a/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesLocaleResolver.java
+++ b/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesLocaleResolver.java
@@ -21,6 +21,7 @@ package org.apache.struts2.tiles;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.LocaleProvider;
+import com.opensymphony.xwork2.LocaleProviderFactory;
import com.opensymphony.xwork2.config.ConfigurationException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -46,9 +47,9 @@ public class StrutsTilesLocaleResolver implements LocaleResolver {
throw new ConfigurationException("There is no ActionContext for current request!");
}
- LocaleProvider provider = ctx.getInstance(LocaleProvider.class);
+ LocaleProviderFactory localeProviderFactory = ctx.getInstance(LocaleProviderFactory.class);
- return provider.getLocale();
+ return localeProviderFactory.createLocaleProvider().getLocale();
}
}