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