Author: musachy
Date: Tue Dec 16 09:47:24 2008
New Revision: 727100

URL: http://svn.apache.org/viewvc?rev=727100&view=rev
Log:
XW-640 Support multiple unknown handlers

Modified:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java
    struts/struts2/trunk/core/src/main/resources/struts-default.xml
    
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java?rev=727100&r1=727099&r2=727100&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java 
(original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsConstants.java 
Tue Dec 16 09:47:24 2008
@@ -193,4 +193,6 @@
     /** The {...@link org.apache.struts2.dispatcher.StaticContentLoader} 
implementation class */
     public static final String STRUTS_STATIC_CONTENT_LOADER = 
"struts.staticContentLoader";
 
+    /** The {...@link com.opensymphony.xwork2.UnknownHandlerManager} 
implementation class */
+    public static final String STRUTS_UNKNOWN_HANDLER_MANAGER = 
"struts.unknownHandlerManager";
 }

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java?rev=727100&r1=727099&r2=727100&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java
 Tue Dec 16 09:47:24 2008
@@ -36,6 +36,7 @@
 import com.opensymphony.xwork2.ActionProxyFactory;
 import com.opensymphony.xwork2.ObjectFactory;
 import com.opensymphony.xwork2.TextProvider;
+import com.opensymphony.xwork2.UnknownHandlerManager;
 import com.opensymphony.xwork2.config.Configuration;
 import com.opensymphony.xwork2.config.ConfigurationException;
 import com.opensymphony.xwork2.config.ConfigurationProvider;
@@ -46,10 +47,7 @@
 import com.opensymphony.xwork2.inject.Context;
 import com.opensymphony.xwork2.inject.Factory;
 import com.opensymphony.xwork2.inject.Scope;
-import com.opensymphony.xwork2.util.ClassLoaderUtil;
-import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.PatternMatcher;
-import com.opensymphony.xwork2.util.ValueStackFactory;
+import com.opensymphony.xwork2.util.*;
 import com.opensymphony.xwork2.util.location.LocatableProperties;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
@@ -218,6 +216,7 @@
         alias(ReflectionContextFactory.class, 
StrutsConstants.STRUTS_REFLECTIONCONTEXTFACTORY, builder, props);
         alias(PatternMatcher.class, StrutsConstants.STRUTS_PATTERNMATCHER, 
builder, props);
         alias(StaticContentLoader.class, 
StrutsConstants.STRUTS_STATIC_CONTENT_LOADER, builder, props);
+        alias(UnknownHandlerManager.class, 
StrutsConstants.STRUTS_UNKNOWN_HANDLER_MANAGER, builder, props);
 
         if 
("true".equalsIgnoreCase(props.getProperty(StrutsConstants.STRUTS_DEVMODE))) {
             props.setProperty(StrutsConstants.STRUTS_I18N_RELOAD, "true");

Modified: struts/struts2/trunk/core/src/main/resources/struts-default.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/struts-default.xml?rev=727100&r1=727099&r2=727100&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/struts-default.xml (original)
+++ struts/struts2/trunk/core/src/main/resources/struts-default.xml Tue Dec 16 
09:47:24 2008
@@ -96,6 +96,7 @@
     <bean class="org.apache.struts2.views.jsp.ui.OgnlTool" />
 
     <bean type="org.apache.struts2.dispatcher.StaticContentLoader" 
class="org.apache.struts2.dispatcher.DefaultStaticContentLoader" name="struts" 
/>
+    <bean type="com.opensymphony.xwork2.UnknownHandlerManager" 
class="com.opensymphony.xwork2.DefaultUnknownHandlerManager" name="struts" />
 
     <!--  Silly workarounds for OGNL since there is currently no way to flush 
its internal caches -->
     <bean type="ognl.PropertyAccessor" name="java.util.ArrayList" 
class="com.opensymphony.xwork2.ognl.accessor.XWorkListPropertyAccessor" />

Modified: 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java?rev=727100&r1=727099&r2=727100&view=diff
==============================================================================
--- 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
 (original)
+++ 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
 Tue Dec 16 09:47:24 2008
@@ -24,6 +24,7 @@
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.DefaultActionInvocation;
 import com.opensymphony.xwork2.Result;
+import com.opensymphony.xwork2.UnknownHandlerManager;
 import com.opensymphony.xwork2.config.entities.ActionConfig;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.logging.Logger;
@@ -81,9 +82,9 @@
                     method = getAction().getClass().getMethod(altMethodName, 
new Class[0]);
                 } catch (NoSuchMethodException e1) {
                     // well, give the unknown handler a shot
-                    if (unknownHandler != null) {
+                    if (unknownHandlerManager.hasUnknownHandlers()) {
                         try {
-                            methodResult = 
unknownHandler.handleUnknownActionMethod(action, methodName);
+                            methodResult = 
unknownHandlerManager.handleUnknownMethod(action, methodName);
                             methodCalled = true;
                         } catch (NoSuchMethodException e2) {
                             // throw the original one


Reply via email to