Author: ivaynberg
Date: Mon Jan 29 17:50:31 2007
New Revision: 501283

URL: http://svn.apache.org/viewvc?view=rev&rev=501283
Log:
model hierarchy cleanup

Removed:
    
incubator/wicket/trunk/wicket/src/main/java/wicket/model/AbstractDetachableModel.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/model/AbstractModel.java
    
incubator/wicket/trunk/wicket/src/main/java/wicket/model/AbstractReadOnlyDetachableModel.java
Modified:
    incubator/wicket/trunk/wicket-examples/.classpath
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/SelectPage.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DataTablePage.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DetachableContactModel.java
    
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/unicodeconverter/UnicodeConverter.java
    
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
    
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java
    
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java
    
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/tree/Tree.java
    
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/list/ListItemModel.java
    
incubator/wicket/trunk/wicket/src/main/java/wicket/model/AbstractReadOnlyModel.java
    
incubator/wicket/trunk/wicket/src/main/java/wicket/model/LoadableDetachableModel.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/model/Model.java
    
incubator/wicket/trunk/wicket/src/main/java/wicket/model/StringResourceModel.java
    
incubator/wicket/trunk/wicket/src/main/java/wicket/util/resource/TextTemplateHeaderContributor.java
    
incubator/wicket/trunk/wicket/src/test/java/wicket/AttributeModifierComponentPage.java
    
incubator/wicket/trunk/wicket/src/test/java/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html
    
incubator/wicket/trunk/wicket/src/test/java/wicket/model/ModelToStringTest.java
    
incubator/wicket/trunk/wicket/src/test/java/wicket/model/StringResourceModelTest.java

Modified: incubator/wicket/trunk/wicket-examples/.classpath
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/.classpath?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- incubator/wicket/trunk/wicket-examples/.classpath (original)
+++ incubator/wicket/trunk/wicket-examples/.classpath Mon Jan 29 17:50:31 2007
@@ -3,6 +3,8 @@
        <classpathentry kind="src" path="src/main/java"/>
        <classpathentry kind="src" output="target/test-classes" 
path="src/test/java"/>
        <classpathentry kind="con" 
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+       <classpathentry combineaccessrules="false" kind="src" path="/wicket"/>
+       <classpathentry combineaccessrules="false" kind="src" 
path="/wicket-extensions"/>
        <classpathentry kind="var" 
path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" 
sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
        <classpathentry kind="var" 
path="M2_REPO/mx4j/mx4j-tools/3.0.1/mx4j-tools-3.0.1.jar" 
sourcepath="M2_REPO/mx4j/mx4j-tools/3.0.1/mx4j-tools-3.0.1-sources.jar"/>
        <classpathentry kind="var" 
path="M2_REPO/org/mortbay/jetty/servlet-api-2.5/6.0.1/servlet-api-2.5-6.0.1.jar"/>
@@ -35,7 +37,5 @@
        <classpathentry kind="var" 
path="M2_REPO/xalan/xalan/2.6.0/xalan-2.6.0.jar"/>
        <classpathentry kind="var" 
path="M2_REPO/tomcat/jasper-compiler/4.1.30/jasper-compiler-4.1.30.jar" 
sourcepath="M2_REPO/tomcat/jasper-compiler/4.1.30/jasper-compiler-4.1.30-sources.jar"/>
        <classpathentry kind="var" 
path="M2_REPO/org/mortbay/jetty/jetty/6.0.1/jetty-6.0.1.jar" 
sourcepath="M2_REPO/org/mortbay/jetty/jetty/6.0.1/jetty-6.0.1-sources.jar"/>
-       <classpathentry combineaccessrules="false" kind="src" path="/wicket"/>
-       <classpathentry combineaccessrules="false" kind="src" 
path="/wicket-extensions"/>
        <classpathentry kind="output" path="target/classes"/>
 </classpath>

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/SelectPage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/SelectPage.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/SelectPage.java
 (original)
+++ 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/compref/SelectPage.java
 Mon Jan 29 17:50:31 2007
@@ -26,6 +26,7 @@
 import wicket.examples.WicketExamplePage;
 import wicket.extensions.markup.html.form.select.IOptionRenderer;
 import wicket.extensions.markup.html.form.select.Select;
+import wicket.extensions.markup.html.form.select.SelectMultiple;
 import wicket.extensions.markup.html.form.select.SelectOption;
 import wicket.extensions.markup.html.form.select.SelectOptions;
 import wicket.markup.html.form.Form;
@@ -78,7 +79,7 @@
                new SelectOption<String>(site, "site3", new 
Model<String>("sd"));
                new SelectOption<String>(site, "site4", new 
Model<String>("bn"));
 
-               Select choices = new Select(form, "choices");
+               SelectMultiple choices = new SelectMultiple(form, "choices");
                IOptionRenderer renderer = new IOptionRenderer()
                {
                        public String getDisplayValue(Object object)

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DataTablePage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DataTablePage.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DataTablePage.java
 (original)
+++ 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DataTablePage.java
 Mon Jan 29 17:50:31 2007
@@ -21,6 +21,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import 
wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
 import wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
 import wicket.extensions.markup.html.repeater.data.table.DefaultDataTable;
 import wicket.extensions.markup.html.repeater.data.table.IColumn;
@@ -59,6 +60,6 @@
                columns.add(new PropertyColumn<String>(new Model<String>("Home 
Phone"), "homePhone"));
                columns.add(new PropertyColumn<String>(new Model<String>("Cell 
Phone"), "cellPhone"));
 
-               new DefaultDataTable(this, "table", columns, new 
SortableContactDataProvider(), 8);
+               new AjaxFallbackDefaultDataTable(this, "table", columns, new 
SortableContactDataProvider(), 8);
        }
 }

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DetachableContactModel.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DetachableContactModel.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DetachableContactModel.java
 (original)
+++ 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/repeater/DetachableContactModel.java
 Mon Jan 29 17:50:31 2007
@@ -1,7 +1,7 @@
 /*
  * $Id: DetachableContactModel.java 5832 2006-05-24 05:36:28 +0000 (Wed, 24 May
- * 2006) ivaynberg $ $Revision$ $Date: 2006-05-24 05:36:28 +0000 (Wed, 24
- * May 2006) $
+ * 2006) ivaynberg $ $Revision$ $Date: 2006-05-24 05:36:28 +0000 (Wed,
+ * 24 May 2006) $
  * 
  * ==================================================================== 
Licensed
  * under the Apache License, Version 2.0 (the "License"); you may not use this
@@ -19,7 +19,7 @@
 package wicket.examples.repeater;
 
 import wicket.markup.repeater.IItemReuseStrategy;
-import wicket.model.AbstractReadOnlyDetachableModel;
+import wicket.model.LoadableDetachableModel;
 
 /**
  * detachable model for an instance of contact
@@ -27,10 +27,9 @@
  * @author igor
  * 
  */
-public class DetachableContactModel extends 
AbstractReadOnlyDetachableModel<Contact>
+public class DetachableContactModel extends LoadableDetachableModel<Contact>
 {
        private long id;
-       private transient Contact contact;
 
        protected ContactsDatabase getContactsDB()
        {
@@ -42,8 +41,14 @@
         */
        public DetachableContactModel(final Contact c)
        {
-               this(c.getId());
-               contact = c;
+               super(c);
+               if (c == null)
+               {
+                       throw new IllegalArgumentException();
+
+               }
+               id = c.getId();
+
        }
 
        /**
@@ -58,27 +63,6 @@
                this.id = id;
        }
 
-       @Override
-       protected void onAttach()
-       {
-               if (contact == null)
-               {
-                       contact = getContactsDB().get(id);
-               }
-       }
-
-       @Override
-       protected void onDetach()
-       {
-               contact = null;
-       }
-
-       @Override
-       protected Contact onGetObject()
-       {
-               return contact;
-       }
-
        /**
         * @see java.lang.Object#hashCode()
         */
@@ -98,11 +82,29 @@
        @Override
        public boolean equals(final Object obj)
        {
-               if (obj instanceof DetachableContactModel)
+               if (obj == this)
+               {
+                       return true;
+               }
+               else if (obj == null)
+               {
+                       return false;
+               }
+               else if (obj instanceof DetachableContactModel)
                {
                        DetachableContactModel other = 
(DetachableContactModel)obj;
                        return other.id == this.id;
                }
                return false;
+       }
+
+       /**
+        * @see wicket.model.LoadableDetachableModel#load()
+        */
+       @Override
+       protected Contact load()
+       {
+               // loads contact from the database
+               return getContactsDB().get(id);
        }
 }

Modified: 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/unicodeconverter/UnicodeConverter.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/unicodeconverter/UnicodeConverter.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/unicodeconverter/UnicodeConverter.java
 (original)
+++ 
incubator/wicket/trunk/wicket-examples/src/main/java/wicket/examples/unicodeconverter/UnicodeConverter.java
 Mon Jan 29 17:50:31 2007
@@ -26,8 +26,8 @@
 import wicket.markup.html.form.DropDownChoice;
 import wicket.markup.html.form.Form;
 import wicket.markup.html.form.TextArea;
-import wicket.model.AbstractModel;
 import wicket.model.CompoundPropertyModel;
+import wicket.model.Model;
 import wicket.util.string.Strings;
 
 /**
@@ -62,7 +62,7 @@
         * [EMAIL PROTECTED] Component#getModelObject()} on the component that 
holds it, and we
         * would have a recent value.
         */
-       private final class ConverterModel extends AbstractModel<String>
+       private final class ConverterModel extends Model<String>
        {
                /**
                 * @see wicket.model.IModel#getObject()

Modified: 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
 (original)
+++ 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
 Mon Jan 29 17:50:31 2007
@@ -21,7 +21,7 @@
 import wicket.AttributeModifier;
 import wicket.MarkupContainer;
 import wicket.markup.html.link.Link;
-import wicket.model.AbstractModel;
+import wicket.model.Model;
 import wicket.util.lang.Objects;
 import wicket.version.undo.Change;
 
@@ -200,7 +200,7 @@
                 */
                public CssModifier(final OrderByLink link, final ICssProvider 
provider)
                {
-                       super("class", true, new AbstractModel()
+                       super("class", true, new Model()
                        {
                                private static final long serialVersionUID = 1L;
 

Modified: 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java
 (original)
+++ 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java
 Mon Jan 29 17:50:31 2007
@@ -23,7 +23,6 @@
 import wicket.markup.html.form.Form;
 import wicket.markup.html.form.FormComponent;
 import wicket.markup.html.form.HiddenField;
-import wicket.model.AbstractModel;
 import wicket.model.Model;
 
 /**
@@ -136,7 +135,7 @@
         * @author Igor Vaynberg (ivaynberg)
         * 
         */
-       private static class FilterStateModel extends AbstractModel<Object>
+       private static class FilterStateModel extends Model<Object>
        {
                private static final long serialVersionUID = 1L;
 

Modified: 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java
 (original)
+++ 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java
 Mon Jan 29 17:50:31 2007
@@ -16,7 +16,7 @@
  */
 package wicket.extensions.markup.html.repeater.data.table.filter;
 
-import wicket.model.AbstractModel;
+import wicket.model.Model;
 
 /**
  * Model that wraps filter state locator to make its use transparent to wicket
@@ -35,7 +35,7 @@
  * 
  * @author Igor Vaynberg (ivaynberg)
  */
-class FilterStateModel extends AbstractModel
+class FilterStateModel extends Model
 {
        private static final long serialVersionUID = 1L;
 

Modified: 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/tree/Tree.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/tree/Tree.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/tree/Tree.java
 (original)
+++ 
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/tree/Tree.java
 Mon Jan 29 17:50:31 2007
@@ -1,18 +1,18 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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
- *
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You 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.
+ * 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 wicket.extensions.markup.html.tree;
 
@@ -39,7 +39,6 @@
 import wicket.markup.html.list.ListView;
 import wicket.markup.html.list.Loop;
 import wicket.markup.html.panel.Panel;
-import wicket.model.AbstractReadOnlyDetachableModel;
 import wicket.model.IModel;
 
 /**
@@ -219,9 +218,7 @@
        /**
         * Model for the paths of the tree.
         */
-       private final class TreePathsModel
-                       extends
-                               
AbstractReadOnlyDetachableModel<List<DefaultMutableTreeNode>>
+       private final class TreePathsModel implements 
IModel<List<DefaultMutableTreeNode>>
        {
                private static final long serialVersionUID = 1L;
 
@@ -231,44 +228,7 @@
                /** tree paths. */
                private List<DefaultMutableTreeNode> paths = new 
ArrayList<DefaultMutableTreeNode>();
 
-               /**
-                * @see wicket.model.AbstractDetachableModel#onAttach()
-                */
-               @Override
-               protected void onAttach()
-               {
-                       if (dirty)
-                       {
-                               paths.clear();
-                               TreeModel model = getTreeState().getModel();
-                               DefaultMutableTreeNode rootNode = 
(DefaultMutableTreeNode)model.getRoot();
-                               Enumeration e = rootNode.preorderEnumeration();
-                               while (e.hasMoreElements())
-                               {
-                                       DefaultMutableTreeNode treeNode = 
(DefaultMutableTreeNode)e.nextElement();
-                                       // TreePath path = new 
TreePath(treeNode.getPath());
-                                       paths.add(treeNode);
-                               }
-                               dirty = false;
-                       }
-               }
-
-               /**
-                * @see wicket.model.AbstractDetachableModel#onDetach()
-                */
-               @Override
-               protected void onDetach()
-               {
-               }
-
-               /**
-                * @see wicket.model.AbstractDetachableModel#onGetObject()
-                */
-               @Override
-               protected List<DefaultMutableTreeNode> onGetObject()
-               {
-                       return paths;
-               }
+               private transient boolean attached = false;
 
                /**
                 * Inserts the given node in the path list with the given index.
@@ -304,6 +264,37 @@
                void remove(DefaultMutableTreeNode node)
                {
                        paths.remove(node);
+               }
+
+
+               public List<DefaultMutableTreeNode> getObject()
+               {
+                       if (dirty && !attached)
+                       {
+                               paths.clear();
+                               TreeModel model = getTreeState().getModel();
+                               DefaultMutableTreeNode rootNode = 
(DefaultMutableTreeNode)model.getRoot();
+                               Enumeration e = rootNode.preorderEnumeration();
+                               while (e.hasMoreElements())
+                               {
+                                       DefaultMutableTreeNode treeNode = 
(DefaultMutableTreeNode)e.nextElement();
+                                       // TreePath path = new 
TreePath(treeNode.getPath());
+                                       paths.add(treeNode);
+                               }
+                               dirty = false;
+                       }
+                       attached = true;
+                       return paths;
+               }
+
+               public void setObject(List<DefaultMutableTreeNode> object)
+               {
+                       throw new UnsupportedOperationException("This is a 
read-only model");
+               }
+
+               public void detach()
+               {
+                       attached = false;
                }
        }
 

Modified: 
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/list/ListItemModel.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/list/ListItemModel.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/list/ListItemModel.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/html/list/ListItemModel.java
 Mon Jan 29 17:50:31 2007
@@ -16,7 +16,7 @@
  */
 package wicket.markup.html.list;
 
-import wicket.model.AbstractDetachableModel;
+import wicket.model.LoadableDetachableModel;
 
 /**
  * Model for list items.
@@ -25,18 +25,14 @@
  *            Type of model object this model holds
  * 
  */
-public class ListItemModel<T> extends AbstractDetachableModel<T>
+public class ListItemModel<T> extends LoadableDetachableModel<T>
 {
        private static final long serialVersionUID = 1L;
 
-       // It is easy and cheap to re-build it if necessary.
-       // Avoid synchronising it in a cluster
-       private transient T object;
-
        /** The ListView's list model */
        private final ListView<T> listView;
 
-       /* The list item's index */
+       /** The list item's index */
        private final int index;
 
        /**
@@ -51,43 +47,12 @@
        {
                this.listView = listView;
                this.index = index;
-               attach();
-       }
-
-       /**
-        * @see wicket.model.AbstractDetachableModel#onAttach()
-        */
-       @Override
-       protected void onAttach()
-       {
-               // Re-attach the model object based on index and ListView model 
object
-               this.object = listView.getModelObject().get(index);
-       }
-
-       /**
-        * @see wicket.model.AbstractDetachableModel#onDetach()
-        */
-       @Override
-       protected void onDetach()
-       {
-               this.object = null;
        }
 
-       /**
-        * @see wicket.model.AbstractDetachableModel#onGetObject()
-        */
-       @Override
-       protected T onGetObject()
-       {
-               return object;
-       }
 
-       /**
-        * @see 
wicket.model.AbstractDetachableModel#onSetObject(java.lang.Object)
-        */
        @Override
-       protected void onSetObject(final T object)
+       protected T load()
        {
-               this.object = object;
+               return listView.getModelObject().get(index);
        }
 }

Modified: 
incubator/wicket/trunk/wicket/src/main/java/wicket/model/AbstractReadOnlyModel.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/model/AbstractReadOnlyModel.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/main/java/wicket/model/AbstractReadOnlyModel.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/main/java/wicket/model/AbstractReadOnlyModel.java
 Mon Jan 29 17:50:31 2007
@@ -26,7 +26,7 @@
  * 
  * @author Igor Vaynberg ( ivaynberg )
  */
-public abstract class AbstractReadOnlyModel<T> extends AbstractModel<T>
+public abstract class AbstractReadOnlyModel<T> implements IModel<T>
 {
 
        /**
@@ -56,5 +56,12 @@
        public String toString()
        {
                return super.toString();
+       }
+       
+       /**
+        * @see wicket.model.IDetachable#detach()
+        */
+       public void detach()
+       {
        }
 }

Modified: 
incubator/wicket/trunk/wicket/src/main/java/wicket/model/LoadableDetachableModel.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/model/LoadableDetachableModel.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/main/java/wicket/model/LoadableDetachableModel.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/main/java/wicket/model/LoadableDetachableModel.java
 Mon Jan 29 17:50:31 2007
@@ -123,7 +123,8 @@
        @Override
        public String toString()
        {
-               StringBuffer sb = new StringBuffer(super.toString());
+               StringBuffer sb = new StringBuffer();
+               
sb.append("Model:classname=[").append(getClass().getName()).append("]");
                
sb.append(":attached=").append(attached).append(":tempModelObject=[").append(
                                this.transientModelObject).append("]");
                return sb.toString();

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/model/Model.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/model/Model.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/model/Model.java 
(original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/model/Model.java Mon Jan 
29 17:50:31 2007
@@ -37,7 +37,7 @@
  * @author Chris Turner
  * @author Eelco Hillenius
  */
-public class Model<T> extends AbstractModel<T>
+public class Model<T> implements IModel<T>
 {
        private static final long serialVersionUID = 1L;
 
@@ -141,8 +141,16 @@
        @Override
        public String toString()
        {
-               StringBuffer sb = new StringBuffer(super.toString());
-               sb.append(":object=[").append(this.object).append("]");
+               StringBuffer sb = new StringBuffer();
+               
sb.append("Model:classname=[").append(getClass().getName()).append("]:object=[")
+                               .append(this.object).append("]");
                return sb.toString();
+       }
+
+       /**
+        * @see wicket.model.IDetachable#detach()
+        */
+       public void detach()
+       {
        }
 }

Modified: 
incubator/wicket/trunk/wicket/src/main/java/wicket/model/StringResourceModel.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/model/StringResourceModel.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/main/java/wicket/model/StringResourceModel.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/main/java/wicket/model/StringResourceModel.java
 Mon Jan 29 17:50:31 2007
@@ -87,15 +87,15 @@
  * In its simplest form, the model can be used as follows:
  * 
  * <pre>
- *     
- *                public MyPage extends WebPage 
- *                {
- *                    public MyPage(final PageParameters parameters) 
- *                    {
- *                        add(new Label(&quot;username&quot;, new 
StringResourceModel(&quot;label.username&quot;, this, null)));
- *                    }
- *                }
  *      
+ *                 public MyPage extends WebPage 
+ *                 {
+ *                     public MyPage(final PageParameters parameters) 
+ *                     {
+ *                         add(new Label(&quot;username&quot;, new 
StringResourceModel(&quot;label.username&quot;, this, null)));
+ *                     }
+ *                 }
+ *       
  * </pre>
  * 
  * Where the resource bundle for the page contains the entry
@@ -107,17 +107,17 @@
  * property expression:
  * 
  * <pre>
- *     
- *                public MyPage extends WebPage 
- *                {
- *                    public MyPage(final PageParameters parameters) 
- *                    {
- *                        WeatherStation ws = new WeatherStation();
- *                        add(new Label(&quot;weatherMessage&quot;,
- *                                      new 
StringResourceModel(&quot;weather.${currentStatus}&quot;, this, new Model(ws)));
- *                    }
- *                }
  *      
+ *                 public MyPage extends WebPage 
+ *                 {
+ *                     public MyPage(final PageParameters parameters) 
+ *                     {
+ *                         WeatherStation ws = new WeatherStation();
+ *                         add(new Label(&quot;weatherMessage&quot;,
+ *                                       new 
StringResourceModel(&quot;weather.${currentStatus}&quot;, this, new Model(ws)));
+ *                     }
+ *                 }
+ *       
  * </pre>
  * 
  * Which will call the WeatherStation.getCurrentStatus() method each time the
@@ -125,12 +125,12 @@
  * contains the entries:
  * 
  * <pre>
- *     
- *                weather.sunny=Don't forget sunscreen!
- *                weather.raining=You might need an umberella
- *                weather.snowing=Got your skis?
- *                weather.overcast=Best take a coat to be safe
  *      
+ *                 weather.sunny=Don't forget sunscreen!
+ *                 weather.raining=You might need an umberella
+ *                 weather.snowing=Got your skis?
+ *                 weather.overcast=Best take a coat to be safe
+ *       
  * </pre>
  * 
  * <p>
@@ -140,25 +140,25 @@
  * is substituted via the model:
  * 
  * <pre>
- *     
  *      
  *       
  *        
  *         
- *                public MyPage extends WebPage 
- *                {
- *                    public MyPage(final PageParameters parameters) 
- *                    {
- *                        WeatherStation ws = new WeatherStation();
- *                        add(new Label(&quot;weatherMessage&quot;,
- *                                      new 
StringResourceModel(&quot;weather.message&quot;, this, new Model(ws)));
- *                    }
- *                }
+ *          
+ *                 public MyPage extends WebPage 
+ *                 {
+ *                     public MyPage(final PageParameters parameters) 
+ *                     {
+ *                         WeatherStation ws = new WeatherStation();
+ *                         add(new Label(&quot;weatherMessage&quot;,
+ *                                       new 
StringResourceModel(&quot;weather.message&quot;, this, new Model(ws)));
+ *                     }
+ *                 }
+ *           
  *          
  *         
  *        
  *       
- *      
  * </pre>
  * 
  * Where the resource bundle contains the entry
@@ -172,56 +172,56 @@
  * powerful use of the string resource model:
  * 
  * <pre>
- *     
  *      
  *       
  *        
  *         
- *                public MyPage extends WebPage 
- *                {
- *                    public MyPage(final PageParameters parameters) 
- *                    {
- *                        WeatherStation ws = new WeatherStation();
- *                        Model model = new Model(ws);
- *                        add(new Label(&quot;weatherMessage&quot;,
- *                                  new StringResourceModel(
- *                                      &quot;weather.detail&quot;, this, 
model,
- *                                      new Object[] 
- *                                      {
- *                                          new Date(),
- *                                          new PropertyModel(model, 
&quot;currentStatus&quot;),
- *                                          new PropertyModel(model, 
&quot;currentTemperature&quot;),
- *                                          new PropertyModel(model, 
&quot;units&quot;)
- *                                      }));
- *                    }
- *                }
+ *          
+ *                 public MyPage extends WebPage 
+ *                 {
+ *                     public MyPage(final PageParameters parameters) 
+ *                     {
+ *                         WeatherStation ws = new WeatherStation();
+ *                         Model model = new Model(ws);
+ *                         add(new Label(&quot;weatherMessage&quot;,
+ *                                   new StringResourceModel(
+ *                                       &quot;weather.detail&quot;, this, 
model,
+ *                                       new Object[] 
+ *                                       {
+ *                                           new Date(),
+ *                                           new PropertyModel(model, 
&quot;currentStatus&quot;),
+ *                                           new PropertyModel(model, 
&quot;currentTemperature&quot;),
+ *                                           new PropertyModel(model, 
&quot;units&quot;)
+ *                                       }));
+ *                     }
+ *                 }
+ *           
  *          
  *         
  *        
  *       
- *      
  * </pre>
  * 
  * And where the resource bundle entry is:
  * 
  * <pre>
- *     
  *      
  *       
  *        
  *         
- *                weather.detail=The report for {0,date}, shows the 
temparature as {2,number,###.##} {3} \
- *                               and the weather to be {1}
+ *          
+ *                 weather.detail=The report for {0,date}, shows the 
temparature as {2,number,###.##} {3} \
+ *                                and the weather to be {1}
+ *           
  *          
  *         
  *        
  *       
- *      
  * </pre>
  * 
  * @author Chris Turner
  */
-public class StringResourceModel extends 
AbstractReadOnlyDetachableModel<String>
+public class StringResourceModel extends LoadableDetachableModel<String>
 {
        private static final long serialVersionUID = 1L;
 
@@ -263,7 +263,7 @@
        public StringResourceModel(final String resourceKey, final Component 
component,
                        final IModel model)
        {
-               this(resourceKey, component, model, null,null);
+               this(resourceKey, component, model, null, null);
        }
 
        /**
@@ -275,15 +275,15 @@
         *            The component that the resource is relative to
         * @param model
         *            The model to use for property substitutions
-        * @param defaultValue 
+        * @param defaultValue
         *            The default value if the resource key is not found.
-        *            
+        * 
         * @see #StringResourceModel(String, Component, IModel, Object[])
         */
        public StringResourceModel(final String resourceKey, final Component 
component,
                        final IModel model, final String defaultValue)
        {
-               this(resourceKey, component, model, null,defaultValue);
+               this(resourceKey, component, model, null, defaultValue);
        }
 
        /**
@@ -297,9 +297,9 @@
         *            The model to use for property substitutions
         * @param parameters
         *            The parameters to substitute using a Java MessageFormat 
object
-        * @param defaultValue 
+        * @param defaultValue
         *            The default value if the resource key is not found.
-        *            
+        * 
         * @see #StringResourceModel(String, Component, IModel, Object[])
         */
        public StringResourceModel(final String resourceKey, final Component 
component,
@@ -307,7 +307,7 @@
        {
                this(resourceKey, component, model, parameters, null);
        }
-       
+
        /**
         * Creates a new string resource model using the supplied parameters.
         * <p>
@@ -330,7 +330,7 @@
         *            The model to use for property substitutions
         * @param parameters
         *            The parameters to substitute using a Java MessageFormat 
object
-        * @param defaultValue 
+        * @param defaultValue
         *            The default value if the resource key is not found.
         */
        public StringResourceModel(final String resourceKey, final Component 
component,
@@ -383,9 +383,10 @@
                // Get the string resource, doing any property substitutions as 
part
                // of the get operation
                String s = localizer.getString(getResourceKey(), component, 
model);
-               if(s == null) s = defaultValue;
+               if (s == null)
+                       s = defaultValue;
 
-               if(s != null)
+               if (s != null)
                {
                        // Substitute any parameters if necessary
                        Object[] parameters = getParameters();
@@ -401,15 +402,15 @@
                                        }
                                        else if (model != null && parameters[i] 
instanceof String)
                                        {
-                                               realParams[i] = 
PropertyVariableInterpolator.interpolate((String)parameters[i],
-                                                               
model.getObject());
+                                               realParams[i] = 
PropertyVariableInterpolator.interpolate(
+                                                               
(String)parameters[i], model.getObject());
                                        }
                                        else
                                        {
                                                realParams[i] = parameters[i];
                                        }
                                }
-                                                               
+
                                // Apply the parameters
                                final MessageFormat format = new 
MessageFormat(s, component != null ? component
                                                .getLocale() : locale);
@@ -477,10 +478,13 @@
        }
 
        /**
-        * Attaches to the given session.
+        * Gets the string that this string resource model currently 
represents. The
+        * string is returned as an object to allow it to be used generically 
within
+        * components.
+        * 
         */
        @Override
-       protected final void onAttach()
+       protected String load()
        {
                // Initialise information that we need to work successfully
                final Session session = Session.get();
@@ -494,13 +498,14 @@
                        throw new WicketRuntimeException(
                                        "Cannot attach a string resource model 
without a Session context because that is required to get a Localizer");
                }
+               return getString();
        }
 
        /**
         * Detaches from the given session
         */
        @Override
-       protected final void onDetach()
+       public final void detach()
        {
                // Detach any model
                if (model != null)
@@ -511,18 +516,9 @@
                // Null out references
                this.localizer = null;
                this.locale = null;
-       }
 
-       /**
-        * Gets the string that this string resource model currently 
represents. The
-        * string is returned as an object to allow it to be used generically 
within
-        * components.
-        * 
-        * @see AbstractDetachableModel#onGetObject()
-        */
-       @Override
-       protected final String onGetObject()
-       {
-               return getString();
+               super.detach();
        }
+
+
 }

Modified: 
incubator/wicket/trunk/wicket/src/main/java/wicket/util/resource/TextTemplateHeaderContributor.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/util/resource/TextTemplateHeaderContributor.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/main/java/wicket/util/resource/TextTemplateHeaderContributor.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/main/java/wicket/util/resource/TextTemplateHeaderContributor.java
 Mon Jan 29 17:50:31 2007
@@ -19,8 +19,8 @@
 import java.util.Map;
 
 import wicket.behavior.StringHeaderContributor;
-import wicket.model.AbstractReadOnlyDetachableModel;
 import wicket.model.IModel;
+import wicket.model.LoadableDetachableModel;
 
 /**
  * A header contributor that will contribute the contents of the given template
@@ -34,7 +34,7 @@
         * This model holds the template and returns the interpolation of the
         * template with of any of the
         */
-       private static final class TemplateModel extends 
AbstractReadOnlyDetachableModel<String>
+       private static final class TemplateModel extends 
LoadableDetachableModel<String>
        {
                private static final long serialVersionUID = 1L;
 
@@ -69,31 +69,23 @@
                        this.variablesModel = variablesModel;
                }
 
-               /**
-                * @see wicket.model.AbstractDetachableModel#onAttach()
-                */
-               @Override
-               protected void onAttach()
-               {
-               }
 
-               /**
-                * @see wicket.model.AbstractDetachableModel#onDetach()
-                */
                @Override
-               protected void onDetach()
+               public void detach()
                {
                        if (variablesModel != null)
                        {
                                variablesModel.detach();
                        }
+                       super.detach();
                }
 
+
                /**
-                * @see wicket.model.AbstractDetachableModel#onGetObject()
+                * @see wicket.model.LoadableDetachableModel#load()
                 */
                @Override
-               protected String onGetObject()
+               protected String load()
                {
                        if (variablesModel != null)
                        {
@@ -105,6 +97,7 @@
                        }
                        return template.asString();
                }
+
        }
 
        private static final long serialVersionUID = 1L;

Modified: 
incubator/wicket/trunk/wicket/src/test/java/wicket/AttributeModifierComponentPage.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/AttributeModifierComponentPage.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/test/java/wicket/AttributeModifierComponentPage.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/test/java/wicket/AttributeModifierComponentPage.java
 Mon Jan 29 17:50:31 2007
@@ -18,7 +18,7 @@
 
 import wicket.markup.html.WebPage;
 import wicket.markup.html.basic.Label;
-import wicket.model.AbstractDetachableModel;
+import wicket.model.LoadableDetachableModel;
 import wicket.model.Model;
 
 /**
@@ -49,35 +49,18 @@
 
                // Label with attribute inserter
                Label label3 = new Label(this, "label3", new 
Model<String>("Label 3"));
-               label3.add(new AttributeModifier("class", true, new 
AbstractDetachableModel<String>()
+               label3.add(new AttributeModifier("class", true, new 
LoadableDetachableModel<String>()
                {
                        private static final long serialVersionUID = 1L;
 
                        private transient String text = null;
 
                        @Override
-                       public void onDetach()
+                       protected String load()
                        {
-                               text = null;
+                               return "insertLabel";
                        }
 
-                       @Override
-                       public void onAttach()
-                       {
-                               text = "insertLabel";
-                       }
-
-                       @Override
-                       public String onGetObject()
-                       {
-                               return text;
-                       }
-
-                       @Override
-                       public void onSetObject(final String object)
-                       {
-                               text = object.toString();
-                       }
 
                }));
        }

Modified: 
incubator/wicket/trunk/wicket/src/test/java/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/test/java/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html
 (original)
+++ 
incubator/wicket/trunk/wicket/src/test/java/wicket/markup/html/debug/WicketComponentTreeTestPage_ExpectedResult.html
 Mon Jan 29 17:50:31 2007
@@ -46,13 +46,13 @@
                </tr><tr wicket:id="components">
                  <td valign="top" align="left"><span 
wicket:id="row">3</span>&nbsp;&nbsp;&nbsp;</td>
                  <td valign="top" align="left"><span 
wicket:id="path">label1</span>&nbsp;&nbsp;&nbsp;</td>
-                 <td valign="top" align="left" nowrap><span 
wicket:id="size">512 bytes</span>&nbsp;&nbsp;&nbsp;</td>
+                 <td valign="top" align="left" nowrap><span 
wicket:id="size">471 bytes</span>&nbsp;&nbsp;&nbsp;</td>
                  <td valign="top" align="left"><span 
wicket:id="type">wicket.markup.html.basic.Label</span>&nbsp;&nbsp;&nbsp;</td>
                  <td valign="top" align="left"><span 
wicket:id="model">test1</span>&nbsp;&nbsp;&nbsp;</td>
                </tr><tr wicket:id="components">
                  <td valign="top" align="left"><span 
wicket:id="row">4</span>&nbsp;&nbsp;&nbsp;</td>
                  <td valign="top" align="left"><span 
wicket:id="path">label2</span>&nbsp;&nbsp;&nbsp;</td>
-                 <td valign="top" align="left" nowrap><span 
wicket:id="size">513 bytes</span>&nbsp;&nbsp;&nbsp;</td>
+                 <td valign="top" align="left" nowrap><span 
wicket:id="size">472 bytes</span>&nbsp;&nbsp;&nbsp;</td>
                  <td valign="top" align="left"><span 
wicket:id="type">wicket.markup.html.basic.Label</span>&nbsp;&nbsp;&nbsp;</td>
                  <td valign="top" align="left"><span 
wicket:id="model">test22</span>&nbsp;&nbsp;&nbsp;</td>
                </tr>

Modified: 
incubator/wicket/trunk/wicket/src/test/java/wicket/model/ModelToStringTest.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/model/ModelToStringTest.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/test/java/wicket/model/ModelToStringTest.java 
(original)
+++ 
incubator/wicket/trunk/wicket/src/test/java/wicket/model/ModelToStringTest.java 
Mon Jan 29 17:50:31 2007
@@ -165,50 +165,6 @@
                }
        }
 
-       /**
-        * Tests AbstractReadOnlyModel.toString().
-        */
-       public void testAbstractReadOnlyModel()
-       {
-               AbstractReadOnlyModel model = new MyAbstractReadOnlyModel();
-               String expected = "Model:classname=[" + 
model.getClass().getName() + "]";
-               assertEquals(expected, model.toString());
-       }
-
-       /**
-        * Test stub for testing AbstractReadOnlyDetachableModel.toString()
-        */
-       private static class MyAbstractReadOnlyDetachableModel extends 
AbstractReadOnlyDetachableModel
-       {
-               private static final long serialVersionUID = 1L;
-
-               @Override
-               protected void onAttach()
-               {
-               }
-
-               @Override
-               protected void onDetach()
-               {
-               }
-
-               @Override
-               protected Object onGetObject()
-               {
-                       return null;
-               }
-       }
-
-       /**
-        * Tests AbstractReadOnlyModel.toString().
-        */
-       public void testAbstractReadOnlyDetachableModel()
-       {
-               AbstractReadOnlyDetachableModel model = new 
MyAbstractReadOnlyDetachableModel();
-               String expected = "Model:classname=[" + 
model.getClass().getName() + "]"
-                               + ":attached=false";
-               assertEquals(expected, model.toString());
-       }
 
        private static final class MyLoadableDetachableModel extends 
LoadableDetachableModel
        {

Modified: 
incubator/wicket/trunk/wicket/src/test/java/wicket/model/StringResourceModelTest.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/model/StringResourceModelTest.java?view=diff&rev=501283&r1=501282&r2=501283
==============================================================================
--- 
incubator/wicket/trunk/wicket/src/test/java/wicket/model/StringResourceModelTest.java
 (original)
+++ 
incubator/wicket/trunk/wicket/src/test/java/wicket/model/StringResourceModelTest.java
 Mon Jan 29 17:50:31 2007
@@ -65,7 +65,7 @@
                ws = new WeatherStation();
                wsModel = new Model<WeatherStation>(ws);
        }
-       
+
        @Override
        protected void tearDown() throws Exception
        {
@@ -195,8 +195,9 @@
        {
                StringResourceModel model = new 
StringResourceModel("simple.text", page, wsModel);
                tester.setupRequestAndResponse();
-               new WebRequestCycle(tester.getWicketSession(), 
tester.getWicketRequest(), tester.getWicketResponse());
-               model.attach();
+               new WebRequestCycle(tester.getWicketSession(), 
tester.getWicketRequest(), tester
+                               .getWicketResponse());
+               model.getObject();
                Assert.assertNotNull(model.getLocalizer());
                model.detach();
                Assert.assertNull(model.getLocalizer());
@@ -207,35 +208,25 @@
         */
        public void testDetachAttachDetachableModel() throws Exception
        {
-               IModel wsDetachModel = new 
AbstractReadOnlyDetachableModel<WeatherStation>()
+               IModel wsDetachModel = new 
LoadableDetachableModel<WeatherStation>()
                {
                        private static final long serialVersionUID = 1L;
 
                        private transient WeatherStation station;
 
                        @Override
-                       protected void onAttach()
-                       {
-                               station = new WeatherStation();
-                       }
-
-                       @Override
-                       protected void onDetach()
+                       protected WeatherStation load()
                        {
-                               station = null;
+                               return new WeatherStation();
                        }
 
-                       @Override
-                       protected WeatherStation onGetObject()
-                       {
-                               return station;
-                       }
 
                };
                StringResourceModel model = new 
StringResourceModel("simple.text", page, wsDetachModel);
                tester.setupRequestAndResponse();
-               new WebRequestCycle(tester.getWicketSession(), 
tester.getWicketRequest(), tester.getWicketResponse());
-               model.attach();
+               new WebRequestCycle(tester.getWicketSession(), 
tester.getWicketRequest(), tester
+                               .getWicketResponse());
+               model.getObject();
                Assert.assertNotNull(model.getLocalizer());
                model.detach();
                // Removed this because getObject() will reattach now...


Reply via email to