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
