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