You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2011/04/26 08:51:27 UTC

svn commit: r1096672 - /geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java

Author: xuhaihong
Date: Tue Apr 26 06:51:26 2011
New Revision: 1096672

URL: http://svn.apache.org/viewvc?rev=1096672&view=rev
Log:
GERONIMO-5932 javax.faces.FACELETS_LIBRARIES is not searched in the web.xml

Modified:
    geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java

Modified: geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java?rev=1096672&r1=1096671&r2=1096672&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java (original)
+++ geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java Tue Apr 26 06:51:26 2011
@@ -17,8 +17,6 @@
 
 package org.apache.geronimo.myfaces.deployment;
 
-import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.annotation.Annotation;
@@ -36,8 +34,6 @@ import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.jar.JarFile;
 import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
 import javax.faces.component.FacesComponent;
 import javax.faces.component.behavior.FacesBehavior;
 import javax.faces.context.ExternalContext;
@@ -69,7 +65,6 @@ import org.apache.geronimo.kernel.Naming
 import org.apache.geronimo.kernel.config.ConfigurationStore;
 import org.apache.geronimo.kernel.repository.Environment;
 import org.apache.geronimo.kernel.util.IOUtils;
-import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.myfaces.FacesConfigDigester;
 import org.apache.geronimo.myfaces.LifecycleProviderGBean;
 import org.apache.geronimo.myfaces.config.resource.ConfigurationResource;
@@ -271,7 +266,11 @@ public class MyFacesModuleBuilderExtensi
         AbstractName myFacesWebAppContextName = moduleContext.getNaming().createChildName(moduleName, "myFacesWebAppContext", "MyFacesWebAppContext");
         GBeanData myFacesWebAppContextData = new GBeanData(myFacesWebAppContextName, MyFacesWebAppContext.class);
 
-        myFacesWebAppContextData.setAttribute("faceletConfigResources", JSF_FACELET_CONFIG_RESOURCES.get(earContext.getGeneralData()));
+        Set<ConfigurationResource> faceletsLibraries = new HashSet<ConfigurationResource>();
+        faceletsLibraries.addAll(JSF_FACELET_CONFIG_RESOURCES.get(earContext.getGeneralData()));
+        faceletsLibraries.addAll(getContextFaceletsLibraries(webApp, webModule));
+        myFacesWebAppContextData.setAttribute("faceletConfigResources", faceletsLibraries);
+
         ClassLoader deploymentClassLoader = new BundleClassLoader(bundle);
         ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
         try {
@@ -408,6 +407,28 @@ public class MyFacesModuleBuilderExtensi
         return Collections.<FacesConfig> emptyList();
     }
 
+    protected List<ConfigurationResource> getContextFaceletsLibraries(WebApp webApp, WebModule webModule) throws DeploymentException {
+        String moduleNamePrefix = webModule.isStandAlone() ? "" : webModule.getTargetPath() + "/";
+        for (ParamValue paramValue : webApp.getContextParam()) {
+            if (paramValue.getParamName().trim().equals("javax.faces.FACELETS_LIBRARIES")) {
+                List<ConfigurationResource> faceletsLibraries = new ArrayList<ConfigurationResource>();
+                String configFiles = paramValue.getParamValue().trim();
+                StringTokenizer st = new StringTokenizer(configFiles, ";", false);
+                while (st.hasMoreTokens()) {
+                    String faceletsLibrary = st.nextToken().trim();
+                    if (!faceletsLibrary.isEmpty()) {
+                        if (faceletsLibrary.startsWith("/")) {
+                            faceletsLibrary = faceletsLibrary.substring(1);
+                        }
+                        faceletsLibraries.add(new ConfigurationResource(null, moduleNamePrefix + faceletsLibrary));
+                    }
+                }
+                return faceletsLibraries;
+            }
+        }
+        return Collections.<ConfigurationResource> emptyList();
+    }
+
     protected FacesConfig getStandardFacesConfig() {
         try {
             //TODO A better way to find the standard faces configuration file ?
@@ -491,7 +512,7 @@ public class MyFacesModuleBuilderExtensi
                 bundle.getBundleContext().ungetService(reference);
             }
         }
-        //2 WEB-INF/classes/META-INF folder        
+        //2 WEB-INF/classes/META-INF folder
         Enumeration<URL> classesEn = bundle.findEntries(moduleNamePrefix + "WEB-INF/classes/META-INF/", "*faces-config.xml", false);
         if (classesEn != null) {
             while (classesEn.hasMoreElements()) {
@@ -565,7 +586,7 @@ public class MyFacesModuleBuilderExtensi
                 bundle.getBundleContext().ungetService(reference);
             }
         }
-        //2 WEB-INF/classes/META-INF folder        
+        //2 WEB-INF/classes/META-INF folder
         Enumeration<URL> classesEn = bundle.findEntries(moduleNamePrefix + "WEB-INF/classes/META-INF/", "*.tag-lib.xml", false);
         if (classesEn != null) {
             while (classesEn.hasMoreElements()) {
@@ -582,7 +603,7 @@ public class MyFacesModuleBuilderExtensi
             }
         }
         return metaInfConfigurationResources;
-    }    
+    }
 
     private boolean hasFacesServlet(WebApp webApp) {
         for (Servlet servlet : webApp.getServlet()) {