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/27 00:10:50 UTC

svn commit: r1189502 - in /tapestry/tapestry5/trunk/tapestry-core/src/main: java/org/apache/tapestry5/corelib/pages/PageCatalog.java java/org/apache/tapestry5/internal/PageCatalogTotals.java resources/org/apache/tapestry5/corelib/pages/PageCatalog.tml

Author: hlship
Date: Wed Oct 26 22:10:50 2011
New Revision: 1189502

URL: http://svn.apache.org/viewvc?rev=1189502&view=rev
Log:
TAP5-1727: PageCatalog page can fail with an odd ClassCastException

Added:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/PageCatalogTotals.java
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
    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=1189502&r1=1189501&r2=1189502&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 Wed Oct 26 22:10:50 2011
@@ -18,10 +18,10 @@ import org.apache.tapestry5.SymbolConsta
 import org.apache.tapestry5.alerts.AlertManager;
 import org.apache.tapestry5.annotations.*;
 import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.ReorderProperties;
 import org.apache.tapestry5.beaneditor.Validate;
 import org.apache.tapestry5.corelib.components.Zone;
 import org.apache.tapestry5.func.*;
+import org.apache.tapestry5.internal.PageCatalogTotals;
 import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
 import org.apache.tapestry5.internal.services.PageSource;
 import org.apache.tapestry5.internal.structure.Page;
@@ -47,32 +47,9 @@ import java.util.Set;
 @WhitelistAccessOnly
 public class PageCatalog
 {
-    @ReorderProperties("definedPages,loadedPages,uniquePageNames,selectors,components")
-    public class Totals
-    {
-        /**
-         * Total number of pages loaded.
-         */
-        public int loadedPages;
-
-        /**
-         * Number of total page names.
-         */
-        public int definedPages;
-        /**
-         * Number of unique page names (remember, same page may appear for multiple selectors).
-         */
-        public int uniquePageNames;
-        /**
-         * Total number of components.
-         */
-        public int components;
-
-        /**
-         * All selectors represented in the pool, often just 'en'.
-         */
-        public String selectors;
-    }
+
+    @Property
+    private PageCatalogTotals totals;
 
     @Property
     @Inject
@@ -133,17 +110,15 @@ public class PageCatalog
         model.reorder("name", "selector", "assemblyTime", "componentCount", "weight");
     }
 
-    @Cached
-    public Totals getTotals()
+    public void onRecomputeTotals()
     {
-
-        Totals result = new Totals();
+        totals = new PageCatalogTotals();
 
         Flow<Page> pages = F.flow(getPages());
 
-        result.loadedPages = pages.count();
-        result.definedPages = getPageNames().size();
-        result.uniquePageNames = pages.map(new Mapper<Page, String>()
+        totals.loadedPages = pages.count();
+        totals.definedPages = getPageNames().size();
+        totals.uniquePageNames = pages.map(new Mapper<Page, String>()
         {
             public String map(Page element)
             {
@@ -151,7 +126,7 @@ public class PageCatalog
             }
         }).toSet().size();
 
-        result.components = pages.reduce(new Reducer<Integer, Page>()
+        totals.components = pages.reduce(new Reducer<Integer, Page>()
         {
             public Integer reduce(Integer accumulator, Page element)
             {
@@ -167,10 +142,7 @@ public class PageCatalog
             }
         }).toSet();
 
-        result.selectors = InternalUtils.joinSorted(selectorIds);
-
-        return result;
-
+        totals.selectors = InternalUtils.joinSorted(selectorIds);
     }
 
     public List<String> getPageNames()

Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/PageCatalogTotals.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/PageCatalogTotals.java?rev=1189502&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/PageCatalogTotals.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/PageCatalogTotals.java Wed Oct 26 22:10:50 2011
@@ -0,0 +1,47 @@
+// Copyright 2011 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry5.internal;
+
+import org.apache.tapestry5.beaneditor.ReorderProperties;
+
+/**
+ * @see org.apache.tapestry5.corelib.pages.PageCatalog
+ */
+@ReorderProperties("definedPages,loadedPages,uniquePageNames,selectors,components")
+public class PageCatalogTotals
+{
+    /**
+     * Total number of pages loaded.
+     */
+    public int loadedPages;
+
+    /**
+     * Number of total page names.
+     */
+    public int definedPages;
+    /**
+     * Number of unique page names (remember, same page may appear for multiple selectors).
+     */
+    public int uniquePageNames;
+    /**
+     * Total number of components.
+     */
+    public int components;
+
+    /**
+     * All selectors represented in the pool, often just 'en'.
+     */
+    public String 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=1189502&r1=1189501&r2=1189502&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 Wed Oct 26 22:10:50 2011
@@ -33,7 +33,9 @@
             This page provides a list of pages currently loaded in the application.
         </p>
 
-        <t:beandisplay object="totals"/>
+        <t:trigger event="recomputeTotals"/>
+
+        <t:beandisplay t:id="totals"/>
 
         <t:grid source="pages" row="page" model="model">
             <p:assemblyTimeCell>