[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