Updated Branches:
  refs/heads/markup-driven-component-tree 24d0041d4 -> 13d501d98


Markup driven tree - Add a setting that enables the markup-driven tree 
construction


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/13d501d9
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/13d501d9
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/13d501d9

Branch: refs/heads/markup-driven-component-tree
Commit: 13d501d98f8a5670a157187e98667820793ff400
Parents: 24d0041
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Thu Jan 23 18:02:04 2014 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Thu Jan 23 18:02:04 2014 +0200

----------------------------------------------------------------------
 .../java/org/apache/wicket/MarkupContainer.java  | 19 +++++++++++++++++--
 .../src/main/java/org/apache/wicket/Page.java    |  6 ++++++
 .../org/apache/wicket/settings/PageSettings.java | 17 +++++++++++++++++
 .../markupdriventree/MarkupDrivenTreeTest.java   | 17 +++++++++++++++++
 4 files changed, 57 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/13d501d9/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java 
b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
index ad8fb7e..3bf8c17 100644
--- a/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/MarkupContainer.java
@@ -1898,8 +1898,23 @@ public abstract class MarkupContainer extends Component 
implements Iterable<Comp
        @Override
        final void buildComponentTree()
        {
-               ComponentTreeBuilder builder = new ComponentTreeBuilder();
-               builder.rebuild(this);
+               if (isMarkupDrivenComponentTreeEnabled())
+               {
+                       ComponentTreeBuilder builder = new 
ComponentTreeBuilder();
+                       builder.rebuild(this);
+               }
+       }
+
+       protected boolean isMarkupDrivenComponentTreeEnabled()
+       {
+               // TODO this method is called once per MarkupContainer's life
+               // Check whether this traversal to the parent is causing perf 
regression
+               MarkupContainer parent = getParent();
+               if (parent != null)
+               {
+                       return parent.isMarkupDrivenComponentTreeEnabled();
+               }
+               return false;
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/13d501d9/wicket-core/src/main/java/org/apache/wicket/Page.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Page.java 
b/wicket-core/src/main/java/org/apache/wicket/Page.java
index 4a1f9ad..9791d8f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Page.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Page.java
@@ -1042,4 +1042,10 @@ public abstract class Page extends MarkupContainer 
implements IRedirectListener,
        {
                return renderedComponents != null && 
renderedComponents.contains(component);
        }
+
+       @Override
+       protected boolean isMarkupDrivenComponentTreeEnabled()
+       {
+               return 
getApplication().getPageSettings().isMarkupDrivenComponentTreeEnabled();
+       }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/13d501d9/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java 
b/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java
index aa8a351..9d5dabf 100644
--- a/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java
+++ b/wicket-core/src/main/java/org/apache/wicket/settings/PageSettings.java
@@ -51,6 +51,12 @@ public class PageSettings
        private boolean callListenerInterfaceAfterExpiry = false;
 
        /**
+        * determines whether Wicket should (re)construct the Java component
+        * tree by reading the markup before {@link 
org.apache.wicket.Component#onInitialize()}
+        */
+       private boolean markupDrivenComponentTreeEnabled = false;
+
+       /**
         * Adds a component resolver to the list.
         *
         * @param resolver
@@ -146,4 +152,15 @@ public class PageSettings
        {
                this.callListenerInterfaceAfterExpiry = 
callListenerInterfaceAfterExpiry;
        }
+
+       public boolean isMarkupDrivenComponentTreeEnabled()
+       {
+               return markupDrivenComponentTreeEnabled;
+       }
+
+       public void setMarkupDrivenComponentTreeEnabled(boolean 
markupDrivenComponentTreeEnabled)
+       {
+               this.markupDrivenComponentTreeEnabled = 
markupDrivenComponentTreeEnabled;
+       }
+
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/13d501d9/wicket-core/src/test/java/org/apache/wicket/markupdriventree/MarkupDrivenTreeTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markupdriventree/MarkupDrivenTreeTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markupdriventree/MarkupDrivenTreeTest.java
index 7244584..413fa45 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markupdriventree/MarkupDrivenTreeTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markupdriventree/MarkupDrivenTreeTest.java
@@ -24,6 +24,8 @@ import 
org.apache.wicket.markupdriventree.components.ComponentA;
 import org.apache.wicket.markupdriventree.components.ComponentB;
 import org.apache.wicket.markupdriventree.components.ComponentC;
 import org.apache.wicket.markupdriventree.components.PanelA;
+import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.protocol.http.WebApplication;
 import org.hamcrest.Matchers;
 import org.junit.Test;
 
@@ -32,6 +34,21 @@ import org.junit.Test;
  */
 public class MarkupDrivenTreeTest extends WicketTestCase
 {
+       @Override
+       protected WebApplication newApplication()
+       {
+               WebApplication application = new MockApplication()
+               {
+                       @Override
+                       protected void init()
+                       {
+                               super.init();
+                               
getPageSettings().setMarkupDrivenComponentTreeEnabled(true);
+                       }
+               };
+               return application;
+       }
+
        @Test
        public void page1()
        {

Reply via email to