You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by aw...@apache.org on 2007/07/24 23:11:18 UTC

svn commit: r559212 - in /myfaces/trinidad/trunk/trinidad: ./ trinidad-impl/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/ trinidad-impl/src/ma...

Author: awiner
Date: Tue Jul 24 14:11:17 2007
New Revision: 559212

URL: http://svn.apache.org/viewvc?view=rev&rev=559212
Log:
TRINIDAD-122: Improve startup performance by loading renderers lazily
- Add support to RenderKitBase for loading renderers lazily based on a properties file
- Enable the new faces plugin 1.0.2 feature for generating the properties file and
  stripping renderer elements from faces-config.xml
- Point CoreRenderKit at the newly generated properties file
- Switch PdaRenderKit and DesktopRenderKit over to lazily rendererer registration

Modified:
    myfaces/trinidad/trunk/trinidad/pom.xml
    myfaces/trinidad/trunk/trinidad/trinidad-impl/pom.xml
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/RenderKitBase.java
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/DesktopRenderKit.java
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/pda/PdaRenderKit.java

Modified: myfaces/trinidad/trunk/trinidad/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/pom.xml?view=diff&rev=559212&r1=559211&r2=559212
==============================================================================
--- myfaces/trinidad/trunk/trinidad/pom.xml (original)
+++ myfaces/trinidad/trunk/trinidad/pom.xml Tue Jul 24 14:11:17 2007
@@ -211,7 +211,7 @@
         <plugin>
           <groupId>org.apache.myfaces.trinidadbuild</groupId>
           <artifactId>maven-faces-plugin</artifactId>
-          <version>1.0.1</version>
+          <version>1.0.2-SNAPSHOT</version>
           <inherited>true</inherited>
         </plugin>
 

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/pom.xml?view=diff&rev=559212&r1=559211&r2=559212
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/pom.xml (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/pom.xml Tue Jul 24 14:11:17 2007
@@ -124,7 +124,9 @@
           </taglibs>
           <faceletHandlerClass>org.apache.myfaces.trinidadinternal.facelets.TrinidadComponentHandler</faceletHandlerClass>
           <typePrefix>org.apache</typePrefix>
+          <renderKitPrefix>org.apache</renderKitPrefix>
           <packageContains>org.apache</packageContains>
+          <removeRenderers>true</removeRenderers>
           <force>true</force>
         </configuration>
         <executions>
@@ -133,6 +135,7 @@
               <goal>generate-faces-config</goal>
               <goal>generate-jsp-taglibs</goal>
               <goal>generate-facelets-taglibs</goal>
+              <goal>generate-renderer-map</goal>
             </goals>
           </execution>
         </executions>

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/RenderKitBase.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/RenderKitBase.java?view=diff&rev=559212&r1=559211&r2=559212
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/RenderKitBase.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/RenderKitBase.java Tue Jul 24 14:11:17 2007
@@ -18,7 +18,13 @@
  */
 package org.apache.myfaces.trinidadinternal.renderkit;
 
+import java.io.InputStream;
+import java.io.IOException;
+
+import java.net.URL;
+
 import java.util.Map;
+import java.util.Properties;
 
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -40,6 +46,14 @@
   {
     _renderers = new ConcurrentHashMap<String, Map<String, Object>>
                          (64, 0.75f, 1);
+
+    // See if we have a render kit map, and if so,
+    // load it
+    String renderKitMap = getRenderKitMap();
+    if (renderKitMap != null)
+    {
+      _loadRenderKitMap(renderKitMap);
+    }
   }
 
 
@@ -71,9 +85,6 @@
     _put(family, rendererType, renderer);
   }
 
-
-
-
   /**
    * Extension allowing for on-demand class loading.
    */
@@ -92,7 +103,10 @@
   }
 
 
-
+  protected String getRenderKitMap()
+  {
+    return null;
+  }
 
 
   /**
@@ -191,6 +205,67 @@
 
     return subMap.get(rendererType);
   }
+
+  /**
+   * Load a renderkit map from a file.  renderkit maps
+   * will typically be generated by the faces plugin,
+   * but are properties files of the form:
+   * {component-family}|{renderer-type}={class-name}.
+   */
+  private void _loadRenderKitMap(String fileName)
+  {
+    ClassLoader loader = Thread.currentThread().getContextClassLoader();
+    if (loader == null)
+      loader = getClass().getClassLoader();
+
+    URL resource = loader.getResource(fileName);
+    if (resource != null)
+    {
+      try
+      {
+        Properties properties = new Properties();
+        _LOG.fine("Loading renderkit map from {0}",  resource);
+        InputStream is = resource.openStream();
+        try
+        {
+          properties.load(is);
+        }
+        finally
+        {
+          is.close();
+        }
+        
+        for (Map.Entry<Object, Object> entry : properties.entrySet())
+        {
+          String key = (String) entry.getKey();
+          int barIndex = key.indexOf('|');
+          if (barIndex < 0)
+          {
+            _LOG.warning("Invalid renderkit map entry: {0}", key);
+            continue;
+          }
+
+          String componentFamily = key.substring(0, barIndex);
+          String rendererType = key.substring(barIndex + 1);
+          
+          String className = (String) entry.getValue();
+
+          addRenderer(componentFamily, rendererType, className);
+        }
+      }
+      catch (IOException ioe)
+      {
+        _LOG.severe("CANNOT_LOAD_URL", fileName);
+        _LOG.severe(ioe);
+      }
+    }
+    else
+    {
+      _LOG.severe("CANNOT_LOAD_URL", fileName);
+    }
+
+  }
+
 
   private RenderKit _aggregated;
   private Map<String, Map<String, Object>>  _renderers;

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java?view=diff&rev=559212&r1=559211&r2=559212
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/CoreRenderKit.java Tue Jul 24 14:11:17 2007
@@ -166,6 +166,11 @@
     _addBasicHTMLRenderKit();
   }
 
+  @Override
+  protected String getRenderKitMap()
+  {
+    return "META-INF/org.apache.myfaces.trinidadinternal.core.renderkit";
+  }
 
   /**
    * Save the form name of the source page for use in subsequent postback.
@@ -740,7 +745,8 @@
 
   static private final String[] _BASIC_HTML_RENDERERS =
   {
-    UICommand.COMPONENT_FAMILY,       "javax.faces.Button",
+    // For CommandButton we register our own renderer
+    //UICommand.COMPONENT_FAMILY,       "javax.faces.Button",
     // For CommandLink we register our own renderer
     //UICommand.COMPONENT_FAMILY ,      "javax.faces.Link",
     UIData.COMPONENT_FAMILY,          "javax.faces.Table",

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/DesktopRenderKit.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/DesktopRenderKit.java?view=diff&rev=559212&r1=559211&r2=559212
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/DesktopRenderKit.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/desktop/DesktopRenderKit.java Tue Jul 24 14:11:17 2007
@@ -27,10 +27,10 @@
   {
     addRenderer("org.apache.myfaces.trinidad.Table",
 		"org.apache.myfaces.trinidad.Table",
-                new DesktopTableRenderer());
+                "org.apache.myfaces.trinidadinternal.renderkit.core.desktop.DesktopTableRenderer");
     addRenderer("org.apache.myfaces.trinidad.Process",
-    "org.apache.myfaces.trinidad.Train",
-                new TrainRenderer());
+                "org.apache.myfaces.trinidad.Train",
+                "org.apache.myfaces.trinidadinternal.renderkit.core.desktop.TrainRenderer");
   }
 
   @Override

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/pda/PdaRenderKit.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/pda/PdaRenderKit.java?view=diff&rev=559212&r1=559211&r2=559212
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/pda/PdaRenderKit.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/pda/PdaRenderKit.java Tue Jul 24 14:11:17 2007
@@ -27,23 +27,22 @@
   {
     addRenderer("org.apache.myfaces.trinidad.Table",
 		"org.apache.myfaces.trinidad.Table",
-                new PdaTableRenderer());
+                "org.apache.myfaces.trinidadinternal.renderkit.core.pda.PdaTableRenderer");
     addRenderer("org.apache.myfaces.trinidad.Process",
-    "org.apache.myfaces.trinidad.Train",
-                new TrainRenderer());
+                "org.apache.myfaces.trinidad.Train",
+                "org.apache.myfaces.trinidadinternal.renderkit.core.pda.TrainRenderer");
     addRenderer("org.apache.myfaces.trinidad.FrameBorderLayout",
                 "org.apache.myfaces.trinidad.FrameBorderLayout",
-                new PdaFrameBorderLayoutRenderer());
+                "org.apache.myfaces.trinidadinternal.renderkit.core.pda.PdaFrameBorderLayoutRenderer");
     addRenderer("org.apache.myfaces.trinidad.Frame",
                 "org.apache.myfaces.trinidad.Frame",
-                new FrameRenderer());
+                "org.apache.myfaces.trinidadinternal.renderkit.core.pda.FrameRenderer");
     addRenderer("org.apache.myfaces.trinidad.Panel",
                 "org.apache.myfaces.trinidad.ButtonBar",
-                new PanelButtonBarRenderer());
-    //PH:
+                "org.apache.myfaces.trinidadinternal.renderkit.core.pda.PanelButtonBarRenderer");
     addRenderer("org.apache.myfaces.trinidad.NavigationLevel",
                 "org.apache.myfaces.trinidad.Pane",
-                new PdaNavigationPaneRenderer());
+                "org.apache.myfaces.trinidadinternal.renderkit.core.pda.PdaNavigationPaneRenderer");
   }
 
   @Override