On Sun, Jun 10, 2018 at 11:34 PM, <[email protected]> wrote: > Repository: wicket > Updated Branches: > refs/heads/master a697cab87 -> 950403d5c > > > WICKET-6560 no warning for null > > > Project: http://git-wip-us.apache.org/repos/asf/wicket/repo > Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/950403d5 > Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/950403d5 > Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/950403d5 > > Branch: refs/heads/master > Commit: 950403d5ccea5643e6005450c6b808ea72079d59 > Parents: a697cab > Author: Sven Meier <[email protected]> > Authored: Sun Jun 10 22:33:58 2018 +0200 > Committer: Sven Meier <[email protected]> > Committed: Sun Jun 10 22:33:58 2018 +0200 > > ---------------------------------------------------------------------- > .../org/apache/wicket/model/ChainingModel.java | 2 +- > .../apache/wicket/model/ChainingModelTest.java | 103 +++++++++++++++++++ > 2 files changed, 104 insertions(+), 1 deletion(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/wicket/blob/ > 950403d5/wicket-core/src/main/java/org/apache/wicket/model/ > ChainingModel.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/main/java/org/apache/wicket/model/ChainingModel.java > b/wicket-core/src/main/java/org/apache/wicket/model/ChainingModel.java > index fa0ca7a..4b65b76 100644 > --- a/wicket-core/src/main/java/org/apache/wicket/model/ChainingModel.java > +++ b/wicket-core/src/main/java/org/apache/wicket/model/ChainingModel.java > @@ -48,7 +48,7 @@ public class ChainingModel<T> implements > IChainingModel<T> > + "in models directly as it may > lead to serialization problems. " > + "If you need to access a > property of the session via the model use the " > + "page instance as the model > object and 'session.attribute' as the path."); > - } else if (modelObject instanceof Serializable == false) > + } else if (modelObject != null && (modelObject instanceof > Serializable == false)) > { > LOG.warn("It is not a good idea to reference a > non-serializable instance " > + "in models directly as it may > lead to serialization problems."); >
Would it be useful to say something about the problematic modelObject in this warning message, e.g. its class and maybe its value ? For easier tracking. > > http://git-wip-us.apache.org/repos/asf/wicket/blob/ > 950403d5/wicket-core/src/test/java/org/apache/wicket/model/ > ChainingModelTest.java > ---------------------------------------------------------------------- > diff --git > a/wicket-core/src/test/java/org/apache/wicket/model/ChainingModelTest.java > b/wicket-core/src/test/java/org/apache/wicket/model/ChainingModelTest.java > new file mode 100644 > index 0000000..6b64d44 > --- /dev/null > +++ b/wicket-core/src/test/java/org/apache/wicket/model/ > ChainingModelTest.java > @@ -0,0 +1,103 @@ > +/* > + * 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 > + * > + * 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.wicket.model; > + > +import static org.junit.Assert.assertEquals; > +import static org.junit.Assert.assertSame; > +import static org.junit.Assert.assertTrue; > + > +import org.junit.Test; > + > +/** > + * Test for {@link ChainingModel}. > + * > + * @author svenmeier > + */ > +public class ChainingModelTest > +{ > + @Test > + public void testNonModel() { > + ChainingModel<Integer> model = new ChainingModel<>(1); > + > + assertEquals(Integer.valueOf(1), model.getObject()); > + model.setObject(2); > + assertEquals(Integer.valueOf(2), model.getObject()); > + } > + > + @Test > + public void testDetachable() { > + class TestDetachable implements IDetachable > + { > + boolean detached = false; > + > + @Override > + public void detach() > + { > + detached = true; > + } > + }; > + TestDetachable test = new TestDetachable(); > + > + ChainingModel<TestDetachable> model = new > ChainingModel<>(test); > + assertSame(test, model.getObject()); > + > + test = new TestDetachable(); > + model.setObject(test); > + assertSame(test, model.getObject()); > + > + model.detach(); > + assertTrue(test.detached); > + } > + > + @Test > + public void testModel() { > + class TestModel implements IModel<Integer> > + { > + boolean detached = false; > + int value = 1; > + > + @Override > + public Integer getObject() > + { > + return value; > + } > + > + @Override > + public void setObject(Integer object) > + { > + this.value = object; > + } > + > + @Override > + public void detach() > + { > + detached = true; > + } > + }; > + TestModel test = new TestModel(); > + > + ChainingModel<Integer> model = new ChainingModel<>(test); > + > + assertEquals(Integer.valueOf(1), model.getObject()); > + > + model.setObject(2); > + assertEquals(2, test.value); > + > + model.detach(); > + assertTrue(test.detached); > + } > +} > \ No newline at end of file > >
