Updated Branches:
  refs/heads/wicket-6.x d0e233553 -> 3464d733f

WICKET-5176 StringResourceModel doesn't detach model in some cases

Make sure that StringResourceModel detaches its wrapped model, parameters and 
defaultValue even when the LoadableDetachableModel is not attached.


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

Branch: refs/heads/wicket-6.x
Commit: 3464d733fd179634e06190cbec3e54c3aeb60e02
Parents: d0e2335
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon May 13 18:14:43 2013 +0300
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon May 13 18:18:00 2013 +0300

----------------------------------------------------------------------
 .../apache/wicket/model/StringResourceModel.java   |    7 +--
 .../wicket/model/StringResourceModelTest.java      |   37 ++++++++++++++-
 2 files changed, 38 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/3464d733/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java 
b/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
index 50f9047..5990b3a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/StringResourceModel.java
@@ -588,13 +588,10 @@ public class StringResourceModel extends 
LoadableDetachableModel<String>
                return getString();
        }
 
-       /**
-        * @see org.apache.wicket.model.IDetachable#detach()
-        */
        @Override
-       protected final void onDetach()
+       public final void detach()
        {
-               super.onDetach();
+               super.detach();
 
                // detach any model
                if (model != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/3464d733/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
index b69fee2..c2f22e8 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/model/StringResourceModelTest.java
@@ -21,7 +21,7 @@ import java.text.MessageFormat;
 import java.util.Calendar;
 import java.util.Locale;
 
-import junit.framework.Assert;
+import org.junit.Assert;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.Session;
@@ -262,6 +262,41 @@ public class StringResourceModelTest extends WicketTestCase
        }
 
        /**
+        * https://issues.apache.org/jira/browse/WICKET-5176
+        */
+       @Test
+       public void detachEvenNotAttached() {
+               Wicket5176Model wrappedModel = new Wicket5176Model();
+               StringResourceModel stringResourceModel = new 
StringResourceModel("test", (Component) null, wrappedModel);
+               assertFalse(stringResourceModel.isAttached());
+               assertTrue(wrappedModel.isAttached());
+               stringResourceModel.detach();
+               assertFalse(wrappedModel.isAttached());
+       }
+
+       private static class Wicket5176Model implements IModel {
+               private boolean attached = true;
+
+               @Override
+               public Object getObject() {
+                       return null;
+               }
+
+               @Override
+               public void setObject(Object object) {
+               }
+
+               @Override
+               public void detach() {
+                       attached = false;
+               }
+
+               private boolean isAttached() {
+                       return attached;
+               }
+       }
+
+       /**
         * Inner class used for testing.
         */
        public static class WeatherStation implements Serializable

Reply via email to