You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/10/20 20:16:06 UTC

svn commit: r1186973 - in /tapestry/tapestry5/trunk/tapestry-core/src/main: java/org/apache/tapestry5/corelib/pages/ java/org/apache/tapestry5/internal/pageload/ resources/org/apache/tapestry5/corelib/pages/

Author: hlship
Date: Thu Oct 20 18:16:05 2011
New Revision: 1186973

URL: http://svn.apache.org/viewvc?rev=1186973&view=rev
Log:
Track the "weight" of a page, for use on the PageCatalog page

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.properties
    tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java?rev=1186973&r1=1186972&r2=1186973&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java Thu Oct 20 18:16:05 2011
@@ -117,18 +117,20 @@ public class PageCatalog
     @Inject
     private Messages messages;
 
-    public BeanModel<Page> getModel()
-    {
+    @Property
+    @Retain
+    private BeanModel<Page> model;
 
-        BeanModel<Page> model = beanModelSource.createDisplayModel(Page.class, messages);
+    void pageLoaded()
+    {
+        model = beanModelSource.createDisplayModel(Page.class, messages);
 
         model.addExpression("selector", "selector.toString()");
         model.addExpression("assemblyTime", "stats.assemblyTime");
         model.addExpression("componentCount", "stats.componentCount");
+        model.addExpression("weight", "stats.weight");
 
-        model.reorder("name", "selector", "assemblyTime", "componentCount", "selector");
-
-        return model;
+        model.reorder("name", "selector", "assemblyTime", "componentCount", "weight");
     }
 
     @Cached

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java?rev=1186973&r1=1186972&r2=1186973&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java Thu Oct 20 18:16:05 2011
@@ -99,13 +99,14 @@ class ComponentAssemblerImpl implements 
         try
         {
             pageAssembly.componentCount++;
+            pageAssembly.weight++;
 
             ComponentPageElement newElement = new ComponentPageElementImpl(pageAssembly.page, instantiator, resources,
                     request, symbolSource);
 
             pageAssembly.componentName.push(new ComponentName(pageAssembly.page.getName()));
 
-            addRootComponentMixins(newElement);
+            addRootComponentMixins(pageAssembly, newElement);
 
             pushNewElement(pageAssembly, newElement);
 
@@ -123,10 +124,12 @@ class ComponentAssemblerImpl implements 
             {
                 PageAssemblyAction action = pageAssembly.deferred.get(i);
 
+                pageAssembly.weight++;
+
                 action.execute(pageAssembly);
             }
 
-            page.setStats(new Page.Stats(System.currentTimeMillis() - startTime, pageAssembly.componentCount, 0));
+            page.setStats(new Page.Stats(System.currentTimeMillis() - startTime, pageAssembly.componentCount, pageAssembly.weight));
 
             return pageAssembly.createdElement.peek();
         } catch (RuntimeException ex)
@@ -136,10 +139,12 @@ class ComponentAssemblerImpl implements 
         }
     }
 
-    private void addRootComponentMixins(ComponentPageElement element)
+    private void addRootComponentMixins(PageAssembly assembly, ComponentPageElement element)
     {
         for (String className : instantiator.getModel().getMixinClassNames())
         {
+            assembly.weight++;
+
             Instantiator mixinInstantiator = instantiatorSource.getInstantiator(className);
 
             ComponentModel model = instantiator.getModel();
@@ -167,17 +172,19 @@ class ComponentAssemblerImpl implements 
 
                 try
                 {
-
                     pageAssembly.componentName.push(embeddedName);
 
                     ComponentPageElement newElement = container.newChild(embeddedId, embeddedName.nestedId,
                             embeddedName.completeId, elementName, instantiator, location);
 
                     pageAssembly.componentCount++;
+                    pageAssembly.weight++;
 
                     pushNewElement(pageAssembly, newElement);
 
-                    embeddedAssembler.addMixinsToElement(newElement);
+                    int mixinCount = embeddedAssembler.addMixinsToElement(newElement);
+
+                    pageAssembly.weight += mixinCount;
 
                     runActions(pageAssembly);
 
@@ -223,7 +230,10 @@ class ComponentAssemblerImpl implements 
     private void runActions(PageAssembly pageAssembly)
     {
         for (PageAssemblyAction action : actions)
+        {
+            pageAssembly.weight++;
             action.execute(pageAssembly);
+        }
     }
 
     public ComponentModel getModel()

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java?rev=1186973&r1=1186972&r2=1186973&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java Thu Oct 20 18:16:05 2011
@@ -64,8 +64,9 @@ interface EmbeddedComponentAssembler ext
      * Adds mixins to the newly created embedded element.
      *
      * @param newElement new element requiring mixins
+     * @return number of mixins added
      */
-    void addMixinsToElement(ComponentPageElement newElement);
+    int addMixinsToElement(ComponentPageElement newElement);
 
     /**
      * Returns the names of all formal parameters.

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java?rev=1186973&r1=1186972&r2=1186973&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java Thu Oct 20 18:16:05 2011
@@ -306,7 +306,7 @@ public class EmbeddedComponentAssemblerI
         bound.put(parameterName, true);
     }
 
-    public void addMixinsToElement(ComponentPageElement newElement)
+    public int addMixinsToElement(ComponentPageElement newElement)
     {
         for (Map.Entry<String, Instantiator> entry : mixinIdToInstantiator.entrySet())
         {
@@ -315,6 +315,8 @@ public class EmbeddedComponentAssemblerI
 
             newElement.addMixin(mixinId, instantiator, mixinsIdToOrderConstraints.get(mixinId));
         }
+
+        return mixinIdToInstantiator.size();
     }
 
     public Location getLocation()

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java?rev=1186973&r1=1186972&r2=1186973&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java Thu Oct 20 18:16:05 2011
@@ -53,6 +53,12 @@ class PageAssembly
      */
     int componentCount;
 
+    /**
+     * Rollup of a number of different things: number of components, bindings, mixins, template elements, etc.
+     * Useful only in comparison to other weights.
+     */
+    int weight;
+
     PageAssembly(Page page)
     {
         this.page = page;
@@ -65,6 +71,8 @@ class PageAssembly
      */
     void addRenderCommand(RenderCommand command)
     {
+        weight++;
+
         bodyElement.peek().addToBody(command);
     }
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java?rev=1186973&r1=1186972&r2=1186973&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java Thu Oct 20 18:16:05 2011
@@ -972,6 +972,10 @@ public class PageLoaderImpl implements P
         {
             public void execute(PageAssembly pageAssembly)
             {
+                // A little extra weight for token containing one or more expansions.
+
+                pageAssembly.weight++;
+
                 InternalComponentResources resources = pageAssembly.activeElement.peek().getComponentResources();
 
                 RenderCommand command = elementFactory.newAttributeElement(resources, token);

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.properties?rev=1186973&r1=1186972&r2=1186973&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.properties (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.properties Thu Oct 20 18:16:05 2011
@@ -1,3 +1,3 @@
-loadedpages-title=Pages in Cache
-components-title=Total Number of Components
-selectors-title=Active Selectors
+loadedpages-label=Pages in Cache
+components-label=Total Number of Components
+selectors-label=Active Selectors

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml?rev=1186973&r1=1186972&r2=1186973&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml Thu Oct 20 18:16:05 2011
@@ -50,7 +50,6 @@
 
     </t:zone>
 
-
     <t:form t:id="singlePageLoad" zone="pages">
 
         <t:label for="pageName">Load single page</t:label>
@@ -59,4 +58,29 @@
 
     </t:form>
 
+    <dl>
+        <dt>Defined Pages</dt>
+        <dd>Number of page classes.</dd>
+        <dt>Pages in Cache</dt>
+        <dd>Number of page instances currently loaded. This may include the same page class for different selectors.
+        </dd>
+        <dt>Unique Page Names</dt>
+        <dd>Number of pages loaded, ignoring selectors.</dd>
+        <dt>Selector</dt>
+        <dd>The locale (plus application-specific other information) for which the page was assembled. A new instance of
+            a Page will be created for each new selector,
+            as needed.
+        </dd>
+        <dt>Assembly Time</dt>
+        <dd>Time to assemble a complete instance of a page, including all sub-components, and all bindings and other
+            connections
+            between them.
+        </dd>
+        <dt>Component Count</dt>
+        <dd>Number of components on the page, including the root component.</dd>
+        <dt>Weight</dt>
+        <dd>Arbitrary number that includes number of components and mixins, template tokens, and other factors.</dd>
+    </dl>
+
+
 </i:internallayout>
\ No newline at end of file