[jboss-cvs] JBossAS SVN: r106181 - projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/deployer.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jun 18 16:28:28 EDT 2010
Author: stan.silvert at jboss.com
Date: 2010-06-18 16:28:27 -0400 (Fri, 18 Jun 2010)
New Revision: 106181
Modified:
projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/deployer/JSFImplManagementDeployer.java
Log:
JBAS-8112 JSF Deployer fails if FacesServlet declared in web-fragment.xml
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-18 20:17:36 UTC (rev 106180)
+++ projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/deployer/JSFImplManagementDeployer.java 2010-06-18 20:28:27 UTC (rev 106181)
@@ -34,6 +34,8 @@
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.metadata.javaee.spec.ParamValueMetaData;
import org.jboss.metadata.web.spec.ServletMetaData;
+import org.jboss.metadata.web.spec.ServletsMetaData;
+import org.jboss.metadata.web.spec.WebFragmentMetaData;
import org.jboss.metadata.web.spec.WebMetaData;
import org.jboss.util.StringPropertyReplacer;
@@ -129,14 +131,24 @@
return jsfImplMetatData.get(implName);
}
- private boolean isJSFDeployment(WebMetaData metaData)
+ private boolean isJSFDeployment(VFSDeploymentUnit unit, WebMetaData metaData)
{
if (getContextParam(JSF_CONFIG_PARAM, metaData) != null) return true;
- // need to check in web fragments as well?
- if (metaData.getServlets() == null) return false;
+ // is a JSF servlet in WEB-INF/web.xml?
+ if (hasJSFServlet(metaData.getServlets())) return true;
- for (ServletMetaData servletMetaData : metaData.getServlets())
+ // is a JSF servlet in a web-fragment.xml?
+ if (isJSFServletInWebFragment(unit)) return true;
+
+ return false;
+ }
+
+ private boolean hasJSFServlet(ServletsMetaData servlets)
+ {
+ if (servlets == null) return false;
+
+ for (ServletMetaData servletMetaData : servlets)
{
String servletClass = servletMetaData.getServletClass();
if (this.facesServlets.contains(servletClass))
@@ -145,9 +157,27 @@
}
}
- return false;
+ return false;
}
+ private boolean isJSFServletInWebFragment(VFSDeploymentUnit unit)
+ {
+ String fragmentName = WebFragmentMetaData.class.getName();
+ Map<String, Object> attachments = unit.getAttachments();
+
+ for (Map.Entry<String, Object> entry : attachments.entrySet())
+ {
+ WebFragmentMetaData fragment = null;
+ if (entry.getKey().startsWith(fragmentName))
+ {
+ fragment = (WebFragmentMetaData)entry.getValue();
+ if (hasJSFServlet(fragment.getServlets())) return true;
+ }
+ }
+
+ return false;
+ }
+
private String getContextParam(String paramName, WebMetaData metaData)
{
List<ParamValueMetaData> contextParams = metaData.getContextParams();
@@ -173,7 +203,7 @@
@Override
public void deploy(VFSDeploymentUnit unit, WebMetaData metaData) throws DeploymentException
{
- if (!isJSFDeployment(metaData) || isWarBundlesJSF(metaData)) return;
+ if (!isJSFDeployment(unit, metaData) || isWarBundlesJSF(metaData)) return;
JSFImplMetaData jsfImpl = findWhichJSFImplToUse(metaData);
unit.addAttachment(JSFImplMetaData.class, jsfImpl);
More information about the jboss-cvs-commits
mailing list