Return-Path: X-Original-To: apmail-geronimo-scm-archive@www.apache.org Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 60F471B87 for ; Tue, 26 Apr 2011 06:51:51 +0000 (UTC) Received: (qmail 67586 invoked by uid 500); 26 Apr 2011 06:51:51 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 67416 invoked by uid 500); 26 Apr 2011 06:51:50 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 67400 invoked by uid 99); 26 Apr 2011 06:51:48 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Apr 2011 06:51:48 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Apr 2011 06:51:47 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 4E3A92388994; Tue, 26 Apr 2011 06:51:27 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1096672 - /geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java Date: Tue, 26 Apr 2011 06:51:27 -0000 To: scm@geronimo.apache.org From: xuhaihong@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110426065127.4E3A92388994@eris.apache.org> 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 faceletsLibraries = new HashSet(); + 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. emptyList(); } + protected List 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 faceletsLibraries = new ArrayList(); + 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. 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 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 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()) {