You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2016/04/24 23:13:36 UTC
[1/2] wicket git commit: Disallow null arguments to IModel methods
Repository: wicket
Updated Branches:
refs/heads/master e0d962bd5 -> 445965f1f
Disallow null arguments to IModel methods
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/406daf1f
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/406daf1f
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/406daf1f
Branch: refs/heads/master
Commit: 406daf1f15ae743f8ff0931ac906b61ac08b9a6d
Parents: e0d962b
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sun Apr 24 23:12:42 2016 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Apr 24 23:12:42 2016 +0200
----------------------------------------------------------------------
.../java/org/apache/wicket/model/IModel.java | 22 +++++++-----
.../org/apache/wicket/model/LambdaModel.java | 2 +-
.../org/apache/wicket/model/IModelTest.java | 37 +++++++++++++++++---
3 files changed, 47 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/406daf1f/wicket-core/src/main/java/org/apache/wicket/model/IModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/IModel.java b/wicket-core/src/main/java/org/apache/wicket/model/IModel.java
index 3f20870..d50b843 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/IModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/IModel.java
@@ -20,6 +20,7 @@ package org.apache.wicket.model;
import org.apache.wicket.lambda.WicketBiFunction;
import org.apache.wicket.lambda.WicketFunction;
import org.apache.wicket.lambda.WicketSupplier;
+import org.apache.wicket.util.lang.Args;
/**
* A IModel wraps the actual model Object used by a Component. IModel implementations are used as a
@@ -97,6 +98,7 @@ public interface IModel<T> extends IDetachable
*/
default IModel<T> filter(WicketFunction<? super T, Boolean> predicate)
{
+ Args.notNull(predicate, "predicate");
return (IModel<T>)() -> {
T object = IModel.this.getObject();
if (object != null && predicate.apply(object))
@@ -121,6 +123,7 @@ public interface IModel<T> extends IDetachable
*/
default <R> IModel<R> map(WicketFunction<? super T, R> mapper)
{
+ Args.notNull(mapper, "mapper");
return (IModel<R>)() -> {
T object = IModel.this.getObject();
if (object == null)
@@ -142,25 +145,23 @@ public interface IModel<T> extends IDetachable
* the resulting type
* @param <U>
* the other models type
- * @param combine
+ * @param combiner
* a function combining this and the others object to a result.
* @param other
* another model to be combined with this one
* @return a new IModel
*/
- default <R, U> IModel<R> mapWith(WicketBiFunction<? super T, ? super U, R> combine,
+ default <R, U> IModel<R> mapWith(WicketBiFunction<? super T, ? super U, R> combiner,
IModel<U> other)
{
+ Args.notNull(combiner, "combiner");
+ Args.notNull(other, "other");
return (IModel<R>)() -> {
T t = IModel.this.getObject();
- U u = null;
- if (other != null)
- {
- u = other.getObject();
- }
+ U u = other.getObject();
if (t != null && u != null)
{
- return combine.apply(t, u);
+ return combiner.apply(t, u);
}
else
{
@@ -180,6 +181,7 @@ public interface IModel<T> extends IDetachable
*/
default <R> IModel<R> flatMap(WicketFunction<? super T, IModel<R>> mapper)
{
+ Args.notNull(mapper, "mapper");
return new IModel<R>()
{
@Override
@@ -247,9 +249,10 @@ public interface IModel<T> extends IDetachable
*/
default <R> IModel<R> apply(WicketFunction<? super T, R> mapper)
{
+ Args.notNull(mapper, "mapper");
return (IModel<R>)() -> {
T object = IModel.this.getObject();
- if (object == null || mapper == null)
+ if (object == null)
{
return null;
}
@@ -293,6 +296,7 @@ public interface IModel<T> extends IDetachable
*/
default IModel<T> orElseGet(WicketSupplier<? extends T> other)
{
+ Args.notNull(other, "other");
return (IModel<T>)() -> {
T object = IModel.this.getObject();
if (object == null)
http://git-wip-us.apache.org/repos/asf/wicket/blob/406daf1f/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java b/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
index 90a3dfb..f28fdc9 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
@@ -207,4 +207,4 @@ public class LambdaModel<T> implements IModel<T>
}
};
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/406daf1f/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java b/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
index 996a758..d2b9c85 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
@@ -68,6 +68,12 @@ public class IModelTest extends Assert
assertThat(johnModel.getObject(), is(nullValue()));
}
+ @Test(expected = IllegalArgumentException.class)
+ public void nullFilter()
+ {
+ IModel.of(person).filter(null);
+ }
+
@Test
public void map()
{
@@ -82,6 +88,12 @@ public class IModelTest extends Assert
assertThat(streetModel.getObject(), is(equalTo(street)));
}
+ @Test(expected = IllegalArgumentException.class)
+ public void nullMapper()
+ {
+ IModel.of(person).map(null);
+ }
+
@Test
public void withMap()
{
@@ -104,15 +116,20 @@ public class IModelTest extends Assert
assertThat(relationShipModel.getObject(), is(nullValue()));
}
- @Test
+ @Test(expected = IllegalArgumentException.class)
public void withMapWithNullModel()
{
IModel<String> janeModel = null;
WicketBiFunction<Person, String, String> function =
(WicketBiFunction<Person, String, String>) (person1, other) ->
person1.getName() + " is in relationship with " + other;
- IModel<String> relationShipModel = IModel.of(person).mapWith(function, janeModel);
- assertThat(relationShipModel.getObject(), is(nullValue()));
+ IModel.of(person).mapWith(function, janeModel);
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void withMapWithNullCombiner()
+ {
+ IModel.of(person).mapWith(null, Model.of("Jane"));
}
@Ignore
@@ -130,7 +147,13 @@ public class IModelTest extends Assert
String newValue = "New Value";
heirModel.setObject(newValue);
- assertThat(heirModel.getObject(), is(equalTo(newValue)));
+ assertThat(heirModel.getObject(), is(equalTo("Matthias is my parent")));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void nullFlatMapper()
+ {
+ IModel.of(person).flatMap(null);
}
@Test
@@ -164,4 +187,10 @@ public class IModelTest extends Assert
assertThat(defaultNameModel.getObject(), is(equalTo(defaultName)));
}
+
+ @Test(expected = IllegalArgumentException.class)
+ public void orElseGetNullOther()
+ {
+ IModel.of(person).map(Person::getName).orElseGet(null);
+ }
}
[2/2] wicket git commit: Add a test for IModel#flatMap
Posted by mg...@apache.org.
Add a test for IModel#flatMap
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/445965f1
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/445965f1
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/445965f1
Branch: refs/heads/master
Commit: 445965f1f9e1f0c62ed9ecdaa060ba3d1c8f61a2
Parents: 406daf1
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sun Apr 24 23:13:08 2016 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Apr 24 23:13:08 2016 +0200
----------------------------------------------------------------------
.../java/org/apache/wicket/model/LambdaModel.java | 2 +-
.../java/org/apache/wicket/model/IModelTest.java | 18 ++++++++----------
2 files changed, 9 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/445965f1/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java b/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
index f28fdc9..3266992 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
@@ -109,7 +109,7 @@ public class LambdaModel<T> implements IModel<T>
* @param <T> model object type
*/
public static <T> IModel<T> of(WicketSupplier<T> getter, WicketConsumer<T> setter) {
- return new LambdaModel<T>(getter, setter);
+ return new LambdaModel<>(getter, setter);
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/445965f1/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java b/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
index d2b9c85..7b27158 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
@@ -26,7 +26,6 @@ import org.apache.wicket.model.lambda.Address;
import org.apache.wicket.model.lambda.Person;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -132,20 +131,19 @@ public class IModelTest extends Assert
IModel.of(person).mapWith(null, Model.of("Jane"));
}
- @Ignore
@Test
public void flatMap()
{
- IModel<String> heirModel = IModel.of(person).flatMap(person1 -> new Model<String>() {
- @Override
- public String getObject()
- {
- return person1.getName() + " is my parent";
- }
- });
+ IModel<String> heirModel = IModel.of(person)
+ .flatMap(john ->
+ LambdaModel.of(
+ () -> john.getName() + " is my parent",
+ john::setName
+ )
+ );
assertThat(heirModel.getObject(), is(equalTo("John is my parent")));
- String newValue = "New Value";
+ String newValue = "Matthias";
heirModel.setObject(newValue);
assertThat(heirModel.getObject(), is(equalTo("Matthias is my parent")));
}