[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