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 [EMAIL PROTECTED] 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