You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2012/03/13 18:38:55 UTC

svn commit: r1300255 - in /myfaces/core/trunk/impl/src: main/java/org/apache/myfaces/view/facelets/ main/java/org/apache/myfaces/view/facelets/compiler/ main/java/org/apache/myfaces/view/facelets/tag/composite/ test/java/org/apache/myfaces/view/facelet...

Author: lu4242
Date: Tue Mar 13 17:38:54 2012
New Revision: 1300255

URL: http://svn.apache.org/viewvc?rev=1300255&view=rev
Log:
MYFACES-3500 [perf] cache ResourceHandler instance used by facelets compiler TagLibrary

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewHandler.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/Compiler.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TagLibraryConfig.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/compiler/TagLibraryTestCase.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java?rev=1300255&r1=1300254&r2=1300255&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java Tue Mar 13 17:38:54 2012
@@ -2462,7 +2462,7 @@ public class FaceletViewDeclarationLangu
         compiler.addTagLibrary(new JstlCoreLibrary());
         compiler.addTagLibrary(new JstlFnLibrary());
         compiler.addTagLibrary(new CompositeLibrary());
-        compiler.addTagLibrary(new CompositeResourceLibrary());
+        compiler.addTagLibrary(new CompositeResourceLibrary(context));
 
         String param = WebConfigParamUtils.getStringInitParameter(eContext, PARAMS_LIBRARIES);
         if (param != null)
@@ -2477,7 +2477,7 @@ public class FaceletViewDeclarationLangu
                         throw new FileNotFoundException(library);
                     }
 
-                    TagLibrary tl = TagLibraryConfig.create(src);
+                    TagLibrary tl = TagLibraryConfig.create(context, src);
                     if (tl != null)
                     {
                         compiler.addTagLibrary(tl);

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewHandler.java?rev=1300255&r1=1300254&r2=1300255&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewHandler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewHandler.java Tue Mar 13 17:38:54 2012
@@ -300,7 +300,7 @@ public class FaceletViewHandler extends 
                     {
                         throw new FileNotFoundException(libs[i]);
                     }
-                    libObj = TagLibraryConfig.create(src);
+                    libObj = TagLibraryConfig.create(ctx, src);
                     c.addTagLibrary(libObj);
                     log.fine("Successfully Loaded Library: " + libs[i]);
                 }

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/Compiler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/Compiler.java?rev=1300255&r1=1300254&r2=1300255&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/Compiler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/Compiler.java Tue Mar 13 17:38:54 2012
@@ -98,7 +98,7 @@ public abstract class Compiler
         try
         {
             TagLibraryConfig cfg = new TagLibraryConfig();
-            cfg.loadImplicit(this);
+            cfg.loadImplicit(FacesContext.getCurrentInstance(), this);
 
             if (!this.createTagLibrary().containsNamespace(UILibrary.NAMESPACE))
             {

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TagLibraryConfig.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TagLibraryConfig.java?rev=1300255&r1=1300254&r2=1300255&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TagLibraryConfig.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TagLibraryConfig.java Tue Mar 13 17:38:54 2012
@@ -84,16 +84,17 @@ public final class TagLibraryConfig
     {
         private String _compositeLibraryName;
         
+        private final ResourceHandler _resourceHandler;
         private Pattern _acceptPatterns;
         private String _extension;
         private String[] _defaultSuffixesArray;
         
-        public TagLibraryImpl(String namespace)
+        public TagLibraryImpl(FacesContext facesContext, String namespace)
         {
             super(namespace);
             _compositeLibraryName = null;
-            
-            ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
+            _resourceHandler = facesContext.getApplication().getResourceHandler();
+            ExternalContext externalContext = facesContext.getExternalContext();
             
             _acceptPatterns = loadAcceptPattern(externalContext);
 
@@ -219,15 +220,12 @@ public final class TagLibraryConfig
             
             if (!result && _compositeLibraryName != null && containsNamespace(ns))
             {
-                ResourceHandler resourceHandler = 
-                    FacesContext.getCurrentInstance().getApplication().getResourceHandler();
-
                 for (String defaultSuffix : _defaultSuffixesArray)
                 {
                     String resourceName = localName + defaultSuffix;
                     if (handles(resourceName))
                     {
-                        Resource compositeComponentResource = resourceHandler.createResource(
+                        Resource compositeComponentResource = _resourceHandler.createResource(
                                 resourceName, _compositeLibraryName);
                         
                         if (compositeComponentResource != null)
@@ -249,9 +247,6 @@ public final class TagLibraryConfig
             
             if (tagHandler == null && _compositeLibraryName != null && containsNamespace(ns))
             {
-                ResourceHandler resourceHandler = 
-                    FacesContext.getCurrentInstance().getApplication().getResourceHandler();
-
                 for (String defaultSuffix : _defaultSuffixesArray)
                 {
                     String resourceName = localName + defaultSuffix;
@@ -266,7 +261,7 @@ public final class TagLibraryConfig
                         // (resourceName, libraryName) will be used to derive the real instance
                         // to use in a view, based on the locale used.
                         Resource compositeComponentResource = new CompositeResouceWrapper(
-                            resourceHandler.createResource(resourceName, _compositeLibraryName));
+                            _resourceHandler.createResource(resourceName, _compositeLibraryName));
                         
                         if (compositeComponentResource != null)
                         {
@@ -416,6 +411,8 @@ public final class TagLibraryConfig
     private static class LibraryHandler extends DefaultHandler
     {
         private final URL source;
+        
+        private final FacesContext facesContext;
 
         private TagLibrary library;
 
@@ -445,10 +442,11 @@ public final class TagLibraryConfig
         
         private String compositeLibraryName;
         
-        public LibraryHandler(URL source)
+        public LibraryHandler(FacesContext facesContext, URL source)
         {
             this.source = source;
             this.buffer = new StringBuffer(64);
+            this.facesContext = facesContext;
         }
 
         public TagLibrary getLibrary()
@@ -470,7 +468,7 @@ public final class TagLibraryConfig
                 }
                 else if ("namespace".equals(qName))
                 {
-                    this.library = new TagLibraryImpl(this.captureBuffer());
+                    this.library = new TagLibraryImpl(facesContext, this.captureBuffer());
                     if (this.compositeLibraryName != null)
                     {
                         ((TagLibraryImpl)this.library).setCompositeLibrary(compositeLibraryName);
@@ -760,14 +758,14 @@ public final class TagLibraryConfig
         super();
     }
 
-    public static TagLibrary create(URL url) throws IOException
+    public static TagLibrary create(FacesContext facesContext, URL url) throws IOException
     {
         InputStream is = null;
         TagLibrary t = null;
         URLConnection conn = null;
         try
         {
-            ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
+            ExternalContext externalContext = facesContext.getExternalContext();
             boolean schemaValidating = false;
 
             // validate XML
@@ -782,7 +780,7 @@ public final class TagLibraryConfig
             }
             
             // parse file
-            LibraryHandler handler = new LibraryHandler(url);
+            LibraryHandler handler = new LibraryHandler(facesContext, url);
             SAXParser parser = createSAXParser(handler, externalContext, schemaValidating);
             conn = url.openConnection();
             conn.setUseCaches(false);
@@ -812,11 +810,11 @@ public final class TagLibraryConfig
         return t;
     }
 
-    public void loadImplicit(Compiler compiler) throws IOException
+    public void loadImplicit(FacesContext facesContext, Compiler compiler) throws IOException
     {
         //URL[] urls = Classpath.search(cl, "META-INF/", SUFFIX);
         //for (int i = 0; i < urls.length; i++)
-        ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
+        ExternalContext externalContext = facesContext.getExternalContext();
         FaceletConfigResourceProvider provider = FaceletConfigResourceProviderFactory.
             getFacesConfigResourceProviderFactory(externalContext).
                 createFaceletConfigResourceProvider(externalContext);
@@ -826,7 +824,7 @@ public final class TagLibraryConfig
             try
             {
                 //TagLibrary tl = create(urls[i]);
-                TagLibrary tl = create(url);
+                TagLibrary tl = create(facesContext, url);
                 if (tl != null)
                 {
                     compiler.addTagLibrary(tl);

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java?rev=1300255&r1=1300254&r2=1300255&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java Tue Mar 13 17:38:54 2012
@@ -51,13 +51,15 @@ public class CompositeResourceLibrary im
 {
     public final static String NAMESPACE_PREFIX = "http://java.sun.com/jsf/composite/";
     
+    private final ResourceHandler _resourceHandler;
     private Pattern _acceptPatterns;
     private String _extension;
     private String[] _defaultSuffixesArray;
     
-    public CompositeResourceLibrary()
+    public CompositeResourceLibrary(FacesContext facesContext)
     {
         super();
+        _resourceHandler = facesContext.getApplication().getResourceHandler();
 
         ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
         
@@ -188,13 +190,10 @@ public class CompositeResourceLibrary im
     {
         if (ns != null && ns.startsWith(NAMESPACE_PREFIX))
         {
-            ResourceHandler resourceHandler = 
-                FacesContext.getCurrentInstance().getApplication().getResourceHandler();
-            
             if (ns.length() > NAMESPACE_PREFIX.length())
             {
                 String libraryName = ns.substring(NAMESPACE_PREFIX.length());
-                return resourceHandler.libraryExists(libraryName);
+                return _resourceHandler.libraryExists(libraryName);
             }
         }        
         return false;
@@ -204,9 +203,6 @@ public class CompositeResourceLibrary im
     {
         if (ns != null && ns.startsWith(NAMESPACE_PREFIX))
         {
-            ResourceHandler resourceHandler = 
-                FacesContext.getCurrentInstance().getApplication().getResourceHandler();
-            
             if (ns.length() > NAMESPACE_PREFIX.length())
             {
                 String libraryName = ns.substring(NAMESPACE_PREFIX.length());
@@ -216,7 +212,8 @@ public class CompositeResourceLibrary im
                     String resourceName = localName + defaultSuffix;
                     if (handles(resourceName))
                     {
-                        Resource compositeComponentResource = resourceHandler.createResource(resourceName, libraryName);
+                        Resource compositeComponentResource = 
+                            _resourceHandler.createResource(resourceName, libraryName);
                         if (compositeComponentResource != null)
                         {
                             URL url = compositeComponentResource.getURL();
@@ -240,9 +237,6 @@ public class CompositeResourceLibrary im
     {
         if (ns != null && ns.startsWith(NAMESPACE_PREFIX))
         {
-            ResourceHandler resourceHandler = 
-                FacesContext.getCurrentInstance().getApplication().getResourceHandler();
-            
             if (ns.length() > NAMESPACE_PREFIX.length())
             {
                 String libraryName = ns.substring(NAMESPACE_PREFIX.length());
@@ -260,7 +254,7 @@ public class CompositeResourceLibrary im
                         // (resourceName, libraryName) will be used to derive the real instance
                         // to use in a view, based on the locale used.
                         Resource compositeComponentResourceWrapped
-                                = resourceHandler.createResource(resourceName, libraryName);
+                                = _resourceHandler.createResource(resourceName, libraryName);
                         if (compositeComponentResourceWrapped != null)
                         {
                             Resource compositeComponentResource

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/compiler/TagLibraryTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/compiler/TagLibraryTestCase.java?rev=1300255&r1=1300254&r2=1300255&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/compiler/TagLibraryTestCase.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/compiler/TagLibraryTestCase.java Tue Mar 13 17:38:54 2012
@@ -54,7 +54,7 @@ public class TagLibraryTestCase extends 
     {
         servletContext.addInitParameter(MyfacesConfig.INIT_PARAM_VALIDATE_XML, "true");
 
-        TagLibrary lib = TagLibraryConfig.create(_validLibUrl);
+        TagLibrary lib = TagLibraryConfig.create(facesContext, _validLibUrl);
         Assert.assertTrue(lib.containsNamespace("http://myfaces.apache.org/testlib"));
     }
 
@@ -63,7 +63,7 @@ public class TagLibraryTestCase extends 
     {
         servletContext.addInitParameter(MyfacesConfig.INIT_PARAM_VALIDATE_XML, "false");
 
-        TagLibrary lib = TagLibraryConfig.create(_validLibUrl);
+        TagLibrary lib = TagLibraryConfig.create(facesContext, _validLibUrl);
         Assert.assertTrue(lib.containsNamespace("http://myfaces.apache.org/testlib"));
     }
     /*