You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by cr...@apache.org on 2006/05/23 07:31:59 UTC

svn commit: r408835 - in /struts/shale/trunk/core-library/src/java/org/apache/shale/remoting: Constants.java faces/MappingsHelper.java

Author: craigmcc
Date: Mon May 22 22:31:59 2006
New Revision: 408835

URL: http://svn.apache.org/viewvc?rev=408835&view=rev
Log:
Explicitly support identification of the Faces Servlet instance to be used
for remoting requests.  By default, the last servlet definition for servlet
class javax.faces.webapp.FacesServlet will be used.

JIRA Issue:  SHALE-178
Patch Supplied By:  Ed Burns <edburns AT acm.org>

Modified:
    struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/Constants.java
    struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/faces/MappingsHelper.java

Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/Constants.java
URL: http://svn.apache.org/viewvc/struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/Constants.java?rev=408835&r1=408834&r2=408835&view=diff
==============================================================================
--- struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/Constants.java (original)
+++ struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/Constants.java Mon May 22 22:31:59 2006
@@ -63,6 +63,16 @@
 
 
     /**
+     * <p>Context initialization parameter defining the name of the
+     * Faces Servlet to be used for remoting requests.  If not specified,
+     * the last (or only) servlet definition for a servlet whose class is
+     * <code>javax.faces.webapp.FacesServlet</code> is used.</p>
+     */
+    public static final String FACES_SERVLET_NAME_PARAM=
+            "org.apache.shale.remoting.FACES_SERVLET_NAME";
+
+
+    /**
      * <p>Context initialization parameter containing the fully qualified
      * class name of the {@link Mapping} implementation class to use.  If
      * not specified, <code>org.apache.shale.remoting.impl.MappingImpl</code>

Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/faces/MappingsHelper.java
URL: http://svn.apache.org/viewvc/struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/faces/MappingsHelper.java?rev=408835&r1=408834&r2=408835&view=diff
==============================================================================
--- struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/faces/MappingsHelper.java (original)
+++ struts/shale/trunk/core-library/src/java/org/apache/shale/remoting/faces/MappingsHelper.java Mon May 22 22:31:59 2006
@@ -333,28 +333,27 @@
         }
 
         // Identify the servlet name of the JavaServer Faces controller servlet
-        String name = null;
-        NodeList servletNodes = document.getElementsByTagName("servlet");
-        for (int i = 0; i < servletNodes.getLength(); i++) {
-            Node servletNode = servletNodes.item(i);
-            String servletName = null;
-            String servletClass = null;
-            NodeList kids = servletNode.getChildNodes();
-            for (int j = 0; j < kids.getLength(); j++) {
-                Node kid = kids.item(j);
-                if ("servlet-name".equals(kid.getNodeName())) {
-                    servletName = text(kid);
-                } else if ("servlet-class".equals(kid.getNodeName())) {
-                    servletClass = text(kid);
+        String name =
+                context.getExternalContext().getInitParameter(Constants.FACES_SERVLET_NAME_PARAM);
+        if (null == name) {
+            NodeList servletNodes = document.getElementsByTagName("servlet");
+            for (int i = 0; i < servletNodes.getLength(); i++) {
+                Node servletNode = servletNodes.item(i);
+                String servletName = null;
+                String servletClass = null;
+                NodeList kids = servletNode.getChildNodes();
+                for (int j = 0; j < kids.getLength(); j++) {
+                    Node kid = kids.item(j);
+                    if ("servlet-name".equals(kid.getNodeName())) {
+                        servletName = text(kid);
+                    } else if ("servlet-class".equals(kid.getNodeName())) {
+                        servletClass = text(kid);
+                    }
+                }
+                if ("javax.faces.webapp.FacesServlet".equals(servletClass)) {
+                    name = servletName;
                 }
             }
-            if ("javax.faces.webapp.FacesServlet".equals(servletClass)) {
-                name = servletName;
-//                break;
-            }
-        }
-        if (name == null) {
-            return new String[0];
         }
 
         // Identify the URL patterns to which this servlet is mapped