[jboss-cvs] JBossAS SVN: r106352 - in projects/jboss-jsf-int/trunk: jboss-faces/src/main/java/org/jboss/web/jsf/integration/config and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 30 15:54:43 EDT 2010


Author: stan.silvert at jboss.com
Date: 2010-06-30 15:54:43 -0400 (Wed, 30 Jun 2010)
New Revision: 106352

Modified:
   projects/jboss-jsf-int/trunk/jboss-faces/src/main/java/org/jboss/web/jsf/integration/config/JBossMojarra20ConfigureListener.java
   projects/jboss-jsf-int/trunk/jboss-faces/src/main/java/org/jboss/web/jsf/integration/config/JBossMojarraConfigureListener.java
   projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/deployer/JSFImplManagementDeployer.java
   projects/jboss-jsf-int/trunk/pom.xml
Log:
JBAS-8100 Auto-add FacesServlet if faces-config found


Modified: projects/jboss-jsf-int/trunk/jboss-faces/src/main/java/org/jboss/web/jsf/integration/config/JBossMojarra20ConfigureListener.java
===================================================================
--- projects/jboss-jsf-int/trunk/jboss-faces/src/main/java/org/jboss/web/jsf/integration/config/JBossMojarra20ConfigureListener.java	2010-06-30 19:17:22 UTC (rev 106351)
+++ projects/jboss-jsf-int/trunk/jboss-faces/src/main/java/org/jboss/web/jsf/integration/config/JBossMojarra20ConfigureListener.java	2010-06-30 19:54:43 UTC (rev 106352)
@@ -40,6 +40,7 @@
 {
     private static Logger LOG = Logger.getLogger(JBossMojarra20ConfigureListener.class);
 
+    @Override
     public void doVersionSpecificInitialization()
     {
        addBeanValidatorFactory();

Modified: projects/jboss-jsf-int/trunk/jboss-faces/src/main/java/org/jboss/web/jsf/integration/config/JBossMojarraConfigureListener.java
===================================================================
--- projects/jboss-jsf-int/trunk/jboss-faces/src/main/java/org/jboss/web/jsf/integration/config/JBossMojarraConfigureListener.java	2010-06-30 19:17:22 UTC (rev 106351)
+++ projects/jboss-jsf-int/trunk/jboss-faces/src/main/java/org/jboss/web/jsf/integration/config/JBossMojarraConfigureListener.java	2010-06-30 19:54:43 UTC (rev 106352)
@@ -75,12 +75,12 @@
     {
        if (hasJSFServlet()) return;
 
-       ServletRegistration reg =
+       ServletRegistration.Dynamic facesServlet =
                   servletContext.addServlet("FacesServlet",
                                             "javax.faces.webapp.FacesServlet");
-       reg.addMapping("/faces/*", "*.jsf", "*.faces");
+       facesServlet.addMapping("/faces/*", "*.jsf", "*.faces");
 
-       // TODO: Find out if/why Mojarra really needs this
+       // Tells Mojarra that FacesServlet was added programatically
        servletContext.setAttribute(RIConstants.FACES_INITIALIZER_MAPPINGS_ADDED, Boolean.TRUE);
     }
 

Modified: projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/deployer/JSFImplManagementDeployer.java
===================================================================
--- projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/deployer/JSFImplManagementDeployer.java	2010-06-30 19:17:22 UTC (rev 106351)
+++ projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/deployer/JSFImplManagementDeployer.java	2010-06-30 19:54:43 UTC (rev 106352)
@@ -21,6 +21,7 @@
  */
 package org.jboss.jsf.deployer;
 
+import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 
@@ -39,6 +40,9 @@
 import org.jboss.metadata.web.spec.WebFragmentMetaData;
 import org.jboss.metadata.web.spec.WebMetaData;
 import org.jboss.util.StringPropertyReplacer;
+import org.jboss.vfs.VirtualFile;
+import org.jboss.vfs.VirtualFileFilter;
+import org.jboss.vfs.util.SuffixMatchFilter;
 
 /**
  * The Deployer is responsible for building metadata for the available JSF
@@ -55,6 +59,9 @@
     private static final String JSF_CONFIG_FILES_PARAM = "javax.faces.CONFIG_FILES";
     private static final String WAR_BUNDLES_JSF_PARAM = "org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL";
 
+    private static final VirtualFileFilter JAR_FILTER = new SuffixMatchFilter(".jar");
+    private static final VirtualFileFilter FACES_CONFIG_FILTER = new SuffixMatchFilter(".faces-config.xml");
+
     private Collection<String> facesServlets;
 
     private String defaultJSFConfiguration;
@@ -135,24 +142,49 @@
        return jsfImplMetatData.get(implName);
     }
 
-    private boolean isJSFDeployment(VFSDeploymentUnit unit, WebMetaData metaData)
+    private boolean isJSFDeployment(VFSDeploymentUnit unit, WebMetaData metaData) throws DeploymentException
     {
-       if (getContextParam(JSF_CONFIG_PARAM, metaData) != null) return true;
+       return
+          (getContextParam(JSF_CONFIG_PARAM, metaData) != null) ||
 
-       if (getContextParam(JSF_CONFIG_FILES_PARAM, metaData) != null) return true;
+          (getContextParam(JSF_CONFIG_FILES_PARAM, metaData) != null) ||
 
-       if (unit.getFile("WEB-INF/faces-config.xml") != null) return true;
+          (unit.getFile("WEB-INF/faces-config.xml") != null) ||
        
-       // is a JSF servlet in WEB-INF/web.xml?
-       if (hasJSFServlet(metaData.getServlets())) return true;
+          isJSFServletInWebInfWebXml(metaData.getServlets()) ||
 
-       // is a JSF servlet in a web-fragment.xml?
-       if (isJSFServletInWebFragment(unit)) return true;
+          isJSFServletInWebFragment(unit) ||
 
+          isFacesConfigInWebInfLibJar(unit);
+    }
+
+    private boolean isFacesConfigInWebInfLibJar(VFSDeploymentUnit unit) throws DeploymentException
+    {
+       VirtualFile webInfLib = unit.getFile("WEB-INF/lib");
+       if (webInfLib == null) return false;
+
+       try
+       {
+          for (VirtualFile jarFile : webInfLib.getChildren(JAR_FILTER))
+          {
+             VirtualFile metaInf = jarFile.getChild("META-INF");
+             if (!metaInf.exists()) return false;
+
+             VirtualFile facesConfig = metaInf.getChild("faces-config.xml");
+             if (facesConfig.exists()) return true;
+
+             if (!metaInf.getChildren(FACES_CONFIG_FILTER).isEmpty()) return true;
+          }
+       }
+       catch (IOException e)
+       {
+          throw DeploymentException.rethrowAsDeploymentException("Unable to search WEB-INF/lib for faces-config files", e);
+       }
+
        return false;
     }
 
-    private boolean hasJSFServlet(ServletsMetaData servlets)
+    private boolean isJSFServletInWebInfWebXml(ServletsMetaData servlets)
     {
        if (servlets == null) return false;
 
@@ -179,7 +211,7 @@
           if (entry.getKey().startsWith(fragmentName))
           {
              fragment = (WebFragmentMetaData)entry.getValue();
-             if (hasJSFServlet(fragment.getServlets())) return true;
+             if (isJSFServletInWebInfWebXml(fragment.getServlets())) return true;
           }
        }
 

Modified: projects/jboss-jsf-int/trunk/pom.xml
===================================================================
--- projects/jboss-jsf-int/trunk/pom.xml	2010-06-30 19:17:22 UTC (rev 106351)
+++ projects/jboss-jsf-int/trunk/pom.xml	2010-06-30 19:54:43 UTC (rev 106352)
@@ -126,7 +126,6 @@
          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-compiler-plugin</artifactId>
-            <version>2.0.2</version>
             <configuration>
                <source>1.5</source>
                <target>1.5</target>



More information about the jboss-cvs-commits mailing list