[jboss-cvs] JBossAS SVN: r86679 - in projects/jboss-jsf-int/trunk: jsf-deployer/src/main/java/org/jboss/jsf/integration and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Apr 2 12:27:37 EDT 2009
Author: stan.silvert at jboss.com
Date: 2009-04-02 12:27:36 -0400 (Thu, 02 Apr 2009)
New Revision: 86679
Modified:
projects/jboss-jsf-int/trunk/cargo/src/test/java/org/jboss/jsf/integration/test/DeployJSF20Test.java
projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/integration/JSFDeployer.java
projects/jboss-jsf-int/trunk/jsf12test/src/main/webapp/WEB-INF/web.xml
projects/jboss-jsf-int/trunk/jsf20test/src/main/webapp/WEB-INF/web.xml
projects/jboss-jsf-int/trunk/jsfbundledtest/
Log:
JBAS-6638 Move JSF integration into a deployer
Modified: projects/jboss-jsf-int/trunk/cargo/src/test/java/org/jboss/jsf/integration/test/DeployJSF20Test.java
===================================================================
--- projects/jboss-jsf-int/trunk/cargo/src/test/java/org/jboss/jsf/integration/test/DeployJSF20Test.java 2009-04-02 15:47:00 UTC (rev 86678)
+++ projects/jboss-jsf-int/trunk/cargo/src/test/java/org/jboss/jsf/integration/test/DeployJSF20Test.java 2009-04-02 16:27:36 UTC (rev 86679)
@@ -56,7 +56,7 @@
return new TestSuite( DeployJSF20Test.class );
}
- public void testRunningInJSF12()
+ public void testRunningInJSF20()
{
assertEquals(2, Environment.getJSFMajorVersion());
assertEquals(0, Environment.getJSFMinorVersion());
Modified: projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/integration/JSFDeployer.java
===================================================================
--- projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/integration/JSFDeployer.java 2009-04-02 15:47:00 UTC (rev 86678)
+++ projects/jboss-jsf-int/trunk/jsf-deployer/src/main/java/org/jboss/jsf/integration/JSFDeployer.java 2009-04-02 16:27:36 UTC (rev 86679)
@@ -1,6 +1,6 @@
/*
* JBoss, Home of Professional Open Source
-* Copyright 2008, JBoss Inc., and individual contributors as indicated
+* Copyright 2009, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
@@ -72,13 +72,14 @@
public class JSFDeployer extends AbstractSimpleVFSRealDeployer<JBossWebMetaData>
{
private static final VirtualFileFilter JAR_FILTER = new SuffixMatchFilter(".jar");
+ private static final String JSF_PROFILE_PARAM = "org.jboss.jbossfaces.JSF_PROFILE_NAME";
+ private static final String WAR_BUNDLES_JSF_PARAM = "org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL";
private Collection<String> facesServlets;
- private Web25MetaData jsfWebMD;
-
+ private URL deployerBaseURL;
private String defaultJSFImplementation;
- private Map<String,String> jsfImplementations;
+ private Map<String,URL> jsfImplementations;
private Map<String,Web25MetaData> jsfImplWebXmls = new HashMap<String,Web25MetaData>();
/**
@@ -95,16 +96,15 @@
// We have to run before the classloading is setup
setStage(DeploymentStages.POST_PARSE);
-
-
}
- public void start()
+ public void start() throws MalformedURLException
{
log.info("Initializing JSF Integration Deployer...");
// only need to do this once for each JSF profile
parseJSFImplWebMetaData();
+ this.deployerBaseURL = new URL(findDeployerBaseURL());
log.info("JBoss JSF Integration Deployer is initialized");
}
@@ -124,7 +124,7 @@
for (Iterator<String> impls = jsfImplementations.keySet().iterator(); impls.hasNext();)
{
String jsfImpl = impls.next();
- String implLocation = jsfImplementations.get(jsfImpl);
+ String implLocation = jsfImplementations.get(jsfImpl).toString();
//URL webXml = this.getClass().getClassLoader().getResource(implLocation + "/web.xml");
// if (webXml == null)
@@ -163,9 +163,19 @@
this.defaultJSFImplementation = defaultJSFImplementation;
}
- public void setJsfImplementations(Map<String,String> jsfImplementations)
+ public void setJsfImplementations(Map<String,String> jsfImpls) throws MalformedURLException
{
- this.jsfImplementations = jsfImplementations;
+ this.jsfImplementations = new HashMap<String,URL>(jsfImpls.size());
+
+ for (Iterator<String> impls = jsfImpls.keySet().iterator(); impls.hasNext();)
+ {
+ String implName = impls.next();
+ String strURL = StringPropertyReplacer.replaceProperties(jsfImpls.get(implName));
+ log.debug("%%%%%%%%%%%%%");
+ log.debug("Putting " + implName + " : " + strURL);
+ log.debug("%%%%%%%%%%%%%");
+ jsfImplementations.put(implName, new URL(strURL));
+ }
}
private boolean isJSFDeployment(JBossWebMetaData metaData)
@@ -178,88 +188,153 @@
return false;
}
+ private String getContextParam(String paramName, JBossWebMetaData metaData)
+ {
+ List<ParamValueMetaData> contextParams = metaData.getContextParams();
+ for (Iterator<ParamValueMetaData> params = contextParams.iterator(); params.hasNext();)
+ {
+ ParamValueMetaData param = params.next();
+ if (param.getParamName().equals(paramName)) return param.getParamValue();
+ }
+
+ return null;
+ }
+
@Override
public void deploy(VFSDeploymentUnit unit, JBossWebMetaData metaData) throws DeploymentException
{
if (!isJSFDeployment(metaData)) return;
- //mergeWebXml(metaData);
+ String warBundlesJSF = getContextParam(WAR_BUNDLES_JSF_PARAM, metaData);
+ if ((warBundlesJSF != null) && (warBundlesJSF.equalsIgnoreCase("true"))) return;
+
+ String jsfImplToUse = findWhichJSFImplToUse(metaData);
+ if (!this.jsfImplementations.containsKey(jsfImplToUse))
+ throw new DeploymentException("JSF profile name " + jsfImplToUse +
+ " is not defined in jsf.deployer/META-INF/jsf-integration-deployer-jboss-beans.xml");
+
+ log.debug("Using JSF profile name=" + jsfImplToUse);
+
+ mergeWebXml(metaData, this.jsfImplWebXmls.get(jsfImplToUse));
- /* try
+ try
{
- addClasspaths(unit);
+ addClasspath(unit, this.deployerBaseURL);
+ addClasspath(unit, this.jsfImplementations.get(jsfImplToUse));
}
catch (MalformedURLException e)
{
throw DeploymentException.rethrowAsDeploymentException("Malformed URL", e);
- } */
+ }
- log.info("Added JSF to " + unit.getName());
+ log.info("Added JSF profile " + jsfImplToUse + " to " + unit.getName());
}
- /*
- private void addClasspaths(VFSDeploymentUnit unit) throws MalformedURLException
+
+ private String findWhichJSFImplToUse(JBossWebMetaData metaData)
{
- if (classpathUrls == null) return;
+ String implToUse = getContextParam(JSF_PROFILE_PARAM, metaData);
+ if (implToUse != null) return implToUse;
- for (String testUrl : classpathUrls)
+ return this.defaultJSFImplementation;
+ }
+
+ //TODO: Figure out why this version of addClasspath works, but the commented
+ // one below does not. This one adds too much to the classpath.
+ private void addClasspath(VFSDeploymentUnit unit, URL url) throws MalformedURLException
+ {
+
+
+ try
{
- testUrl = StringPropertyReplacer.replaceProperties(testUrl);
- URL url = new URL(testUrl);
+ VirtualFile vFile = VFS.getRoot(url);
+ unit.addClassPath(vFile);
- try
- {
- VirtualFile vFile = VFS.getRoot(url);
- unit.addClassPath(vFile);
-
- // add jar files if url is a directory
- if (!vFile.isLeaf())
- {
- for (VirtualFile jarFile : vFile.getChildrenRecursively(JAR_FILTER))
- {
- unit.addClassPath(jarFile);
- }
+ // add jar files if url is a directory
+ if (!vFile.isLeaf())
+ {
+ for (VirtualFile jarFile : vFile.getChildrenRecursively(JAR_FILTER))
+ {
+ log.debug("Adding " + jarFile + " to classpath for " + unit.getName());
+ unit.addClassPath(jarFile);
}
}
- catch (IOException e)
+ }
+ catch (IOException e)
+ {
+ log.warn("Unable to add URL to classpath: " + url.toString());
+ }
+ }
+
+ /* private void addClasspath(VFSDeploymentUnit unit, URL url) throws MalformedURLException
+ {
+ try
+ {
+ VFS vfs = VFS.getVFS(url);
+
+ // add jar files to the classpath
+ for (VirtualFile jarFile : vfs.getChildren(JAR_FILTER))
{
- log.warn("Unable to add URL to classpath: " + url.toString());
+ log.debug("Adding " + jarFile + " to classpath for " + unit.getName());
+ unit.addClassPath(jarFile);
}
}
- } */
+ catch (IOException e)
+ {
+ log.warn("Unable to add URL to classpath: " + url.toString());
+ }
+ } */
// merge the JSF impl's web.xml with the WAR's web.xml
- private void mergeWebXml(JBossWebMetaData metaData)
+ private void mergeWebXml(JBossWebMetaData webAppMetaData, Web25MetaData jsfImplWebMetaData)
{
- FiltersMetaData filters = metaData.getFilters();
- if (filters == null) filters = new FiltersMetaData();
- filters.addAll(jsfWebMD.getFilters());
- metaData.setFilters(filters);
+ if (jsfImplWebMetaData.getFilters() != null)
+ {
+ FiltersMetaData filters = webAppMetaData.getFilters();
+ if (filters == null) filters = new FiltersMetaData();
+ filters.addAll(jsfImplWebMetaData.getFilters());
+ webAppMetaData.setFilters(filters);
+ }
- List<FilterMappingMetaData> filterMappings = metaData.getFilterMappings();
- if (filterMappings == null) filterMappings = new ArrayList<FilterMappingMetaData>();
- filterMappings.addAll(jsfWebMD.getFilterMappings());
- metaData.setFilterMappings(filterMappings);
+ if (jsfImplWebMetaData.getFilterMappings() != null)
+ {
+ List<FilterMappingMetaData> filterMappings = webAppMetaData.getFilterMappings();
+ if (filterMappings == null) filterMappings = new ArrayList<FilterMappingMetaData>();
+ filterMappings.addAll(jsfImplWebMetaData.getFilterMappings());
+ webAppMetaData.setFilterMappings(filterMappings);
+ }
- JBossServletsMetaData servlets = metaData.getServlets();
- if (servlets == null) servlets = new JBossServletsMetaData();
- ServletsMetaData servletsMD = jsfWebMD.getServlets();
- servlets.addAll(makeJBossServletsMetaData(servletsMD));
- metaData.setServlets(servlets);
+ if (jsfImplWebMetaData.getServlets() != null)
+ {
+ JBossServletsMetaData servlets = webAppMetaData.getServlets();
+ if (servlets == null) servlets = new JBossServletsMetaData();
+ ServletsMetaData servletsMD = jsfImplWebMetaData.getServlets();
+ servlets.addAll(makeJBossServletsMetaData(servletsMD));
+ webAppMetaData.setServlets(servlets);
+ }
- List<ServletMappingMetaData> servletMappings = metaData.getServletMappings();
- if (servletMappings == null) servletMappings = new ArrayList<ServletMappingMetaData>();
- servletMappings.addAll(jsfWebMD.getServletMappings());
- metaData.setServletMappings(servletMappings);
+ if (jsfImplWebMetaData.getServletMappings() != null)
+ {
+ List<ServletMappingMetaData> servletMappings = webAppMetaData.getServletMappings();
+ if (servletMappings == null) servletMappings = new ArrayList<ServletMappingMetaData>();
+ servletMappings.addAll(jsfImplWebMetaData.getServletMappings());
+ webAppMetaData.setServletMappings(servletMappings);
+ }
- List<ParamValueMetaData> contextParams = metaData.getContextParams();
- if (contextParams == null) contextParams = new ArrayList<ParamValueMetaData>();
- contextParams.addAll(jsfWebMD.getContextParams());
- metaData.setContextParams(contextParams);
+ if (jsfImplWebMetaData.getContextParams() != null)
+ {
+ List<ParamValueMetaData> contextParams = webAppMetaData.getContextParams();
+ if (contextParams == null) contextParams = new ArrayList<ParamValueMetaData>();
+ contextParams.addAll(jsfImplWebMetaData.getContextParams());
+ webAppMetaData.setContextParams(contextParams);
+ }
- List<ListenerMetaData> listeners = metaData.getListeners();
- if (listeners == null) listeners = new ArrayList<ListenerMetaData>();
- listeners.addAll(jsfWebMD.getListeners());
- metaData.setListeners(listeners);
+ if (jsfImplWebMetaData.getListeners() != null)
+ {
+ List<ListenerMetaData> listeners = webAppMetaData.getListeners();
+ if (listeners == null) listeners = new ArrayList<ListenerMetaData>();
+ listeners.addAll(jsfImplWebMetaData.getListeners());
+ webAppMetaData.setListeners(listeners);
+ }
}
private Collection<JBossServletMetaData> makeJBossServletsMetaData(ServletsMetaData servletsMD)
Modified: projects/jboss-jsf-int/trunk/jsf12test/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/jboss-jsf-int/trunk/jsf12test/src/main/webapp/WEB-INF/web.xml 2009-04-02 15:47:00 UTC (rev 86678)
+++ projects/jboss-jsf-int/trunk/jsf12test/src/main/webapp/WEB-INF/web.xml 2009-04-02 16:27:36 UTC (rev 86679)
@@ -6,8 +6,8 @@
<web-app>
<context-param>
- <param-name>org.jboss.jsf.integration.jsfprofile</param-name>
- <param-value>Mojarra1.2</param-value>
+ <param-name>org.jboss.jbossfaces.JSF_PROFILE_NAME</param-name>
+ <param-value>Mojarra-1.2</param-value>
</context-param>
<servlet>
Modified: projects/jboss-jsf-int/trunk/jsf20test/src/main/webapp/WEB-INF/web.xml
===================================================================
--- projects/jboss-jsf-int/trunk/jsf20test/src/main/webapp/WEB-INF/web.xml 2009-04-02 15:47:00 UTC (rev 86678)
+++ projects/jboss-jsf-int/trunk/jsf20test/src/main/webapp/WEB-INF/web.xml 2009-04-02 16:27:36 UTC (rev 86679)
@@ -6,8 +6,8 @@
<web-app>
<context-param>
- <param-name>org.jboss.jsf.integration.jsfprofile</param-name>
- <param-value>Mojarra2.0</param-value>
+ <param-name>org.jboss.jbossfaces.JSF_PROFILE_NAME</param-name>
+ <param-value>Mojarra-2.0</param-value>
</context-param>
<servlet>
Property changes on: projects/jboss-jsf-int/trunk/jsfbundledtest
___________________________________________________________________
Name: svn:ignore
+ target
More information about the jboss-cvs-commits
mailing list