From 98d4313537ef9c2f84944b3398e73df970a21df5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Gielen?= Date: Thu, 8 Mar 2007 09:10:31 +0000 Subject: [PATCH] WW-1748: Applied Oleg Gorobets patch to support TextProvider to be configured with struts.properties git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/branches/STRUTS_2_0_X@515978 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/java/org/apache/struts2/StrutsConstants.java | 4 ++++ .../main/java/org/apache/struts2/components/I18n.java | 9 +++++---- .../org/apache/struts2/config/BeanSelectionProvider.java | 5 ++--- .../java/org/apache/struts2/dispatcher/Dispatcher.java | 8 ++++---- core/src/main/resources/struts-default.xml | 4 +++- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java index 651e02559..3fb55a214 100644 --- a/core/src/main/java/org/apache/struts2/StrutsConstants.java +++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java @@ -147,4 +147,8 @@ public final class StrutsConstants { public static final String STRUTS_XWORKCONVERTER = "struts.xworkConverter"; public static final String STRUTS_ALWAYS_SELECT_FULL_NAMESPACE = "struts.mapper.alwaysSelectFullNamespace"; + + /** XWork default text provider */ + public static final String STRUTS_XWORKTEXTPROVIDER = "struts.xworkTextProvider"; + } 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 e7ee754b3..d2919face 100644 --- a/core/src/main/java/org/apache/struts2/components/I18n.java +++ b/core/src/main/java/org/apache/struts2/components/I18n.java @@ -31,6 +31,7 @@ import org.apache.struts2.StrutsException; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.LocaleProvider; import com.opensymphony.xwork2.TextProviderSupport; +import com.opensymphony.xwork2.TextProviderFactory; import com.opensymphony.xwork2.util.LocalizedTextUtil; import com.opensymphony.xwork2.util.ValueStack; @@ -102,10 +103,10 @@ public class I18n extends Component { if (bundle != null) { final Locale locale = (Locale) getStack().getContext().get(ActionContext.LOCALE); - getStack().push(new TextProviderSupport(bundle, new LocaleProvider() { - public Locale getLocale() { - return locale; - } + getStack().push(TextProviderFactory.getInstance(bundle, new LocaleProvider() { + public Locale getLocale() { + return locale; + } })); pushed = true; } diff --git a/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java b/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java index 1ce982bf1..c90c07f4a 100644 --- a/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java +++ b/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java @@ -26,7 +26,6 @@ import java.util.StringTokenizer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.StrutsConstants; -import org.apache.struts2.StrutsException; import org.apache.struts2.dispatcher.mapper.ActionMapper; import org.apache.struts2.dispatcher.multipart.MultiPartRequest; import org.apache.struts2.views.freemarker.FreemarkerManager; @@ -34,6 +33,7 @@ import org.apache.struts2.views.velocity.VelocityManager; import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.ObjectFactory; +import com.opensymphony.xwork2.TextProvider; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.ConfigurationProvider; @@ -41,12 +41,10 @@ import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.ContainerBuilder; import com.opensymphony.xwork2.inject.Context; import com.opensymphony.xwork2.inject.Factory; -import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.inject.Scope; import com.opensymphony.xwork2.util.ClassLoaderUtil; import com.opensymphony.xwork2.util.LocalizedTextUtil; import com.opensymphony.xwork2.util.ObjectTypeDeterminer; -import com.opensymphony.xwork2.util.ObjectTypeDeterminerFactory; import com.opensymphony.xwork2.util.XWorkConverter; import com.opensymphony.xwork2.util.location.LocatableProperties; @@ -154,6 +152,7 @@ public class BeanSelectionProvider implements ConfigurationProvider { public void register(ContainerBuilder builder, LocatableProperties props) { alias(ObjectFactory.class, StrutsConstants.STRUTS_OBJECTFACTORY, builder, props); alias(XWorkConverter.class, StrutsConstants.STRUTS_XWORKCONVERTER, builder, props); + alias(TextProvider.class, StrutsConstants.STRUTS_XWORKTEXTPROVIDER, 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); 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 f0973889f..d96f5feab 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java @@ -52,10 +52,7 @@ import org.apache.struts2.util.ObjectFactoryDestroyable; import org.apache.struts2.views.freemarker.FreemarkerManager; import com.opensymphony.xwork2.util.FileManager; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.ActionProxyFactory; -import com.opensymphony.xwork2.ObjectFactory; +import com.opensymphony.xwork2.*; import com.opensymphony.xwork2.Result; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; @@ -404,6 +401,9 @@ Caused by: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyExcepti ObjectTypeDeterminer objectTypeDeterminer = container.getInstance(ObjectTypeDeterminer.class); ObjectTypeDeterminerFactory.setInstance(objectTypeDeterminer); + TextProvider textProvider = container.getInstance(TextProvider.class); + TextProviderFactory.setInstance(textProvider); + return container; } diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml index ab7605d0d..f17912fb5 100644 --- a/core/src/main/resources/struts-default.xml +++ b/core/src/main/resources/struts-default.xml @@ -35,7 +35,9 @@ - + + +