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 2017/05/27 20:47:37 UTC

wicket git commit: WICKET-6379 IModel's default models should detach the target model

Repository: wicket
Updated Branches:
  refs/heads/master c60209315 -> 63aa52b04


WICKET-6379 IModel's default models should detach the target model


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

Branch: refs/heads/master
Commit: 63aa52b04df11e87ae20cda744465c4d77dde05b
Parents: c602093
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sat May 27 22:47:07 2017 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sat May 27 22:47:07 2017 +0200

----------------------------------------------------------------------
 .../java/org/apache/wicket/model/IModel.java    | 111 +++++++++++++------
 1 file changed, 80 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/63aa52b0/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 d8a9800..f34645e 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
@@ -101,15 +101,26 @@ public interface IModel<T> extends IDetachable
 	default IModel<T> filter(SerializablePredicate<? super T> predicate)
 	{
 		Args.notNull(predicate, "predicate");
-		return (IModel<T>)() -> {
-			T object = IModel.this.getObject();
-			if (object != null && predicate.test(object))
+		return new IModel<T>()
+		{
+			@Override
+			public T getObject()
 			{
-				return object;
+				T object = IModel.this.getObject();
+				if (object != null && predicate.test(object))
+				{
+					return object;
+				}
+				else
+				{
+					return null;
+				}
 			}
-			else
+
+			@Override
+			public void detach()
 			{
-				return null;
+				IModel.this.detach();
 			}
 		};
 	}
@@ -126,15 +137,24 @@ public interface IModel<T> extends IDetachable
 	default <R> IModel<R> map(SerializableFunction<? super T, R> mapper)
 	{
 		Args.notNull(mapper, "mapper");
-		return (IModel<R>)() -> {
-			T object = IModel.this.getObject();
-			if (object == null)
+		return new IModel<R>() {
+			@Override
+			public R getObject()
 			{
-				return null;
+				T object = IModel.this.getObject();
+				if (object == null)
+				{
+					return null;
+				} else
+				{
+					return mapper.apply(object);
+				}
 			}
-			else
+
+			@Override
+			public void detach()
 			{
-				return mapper.apply(object);
+				IModel.this.detach();
 			}
 		};
 	}
@@ -158,16 +178,26 @@ public interface IModel<T> extends IDetachable
 	{
 		Args.notNull(combiner, "combiner");
 		Args.notNull(other, "other");
-		return (IModel<R>)() -> {
-			T t = IModel.this.getObject();
-			U u = other.getObject();
-			if (t != null && u != null)
+		return new IModel<R>() {
+			@Override
+			public R getObject()
 			{
-				return combiner.apply(t, u);
+				T t = IModel.this.getObject();
+				U u = other.getObject();
+				if (t != null && u != null)
+				{
+					return combiner.apply(t, u);
+				} else
+				{
+					return null;
+				}
 			}
-			else
+
+			@Override
+			public void detach()
 			{
-				return null;
+				other.detach();
+				IModel.this.detach();
 			}
 		};
 	}
@@ -229,6 +259,7 @@ public interface IModel<T> extends IDetachable
 			public void detach()
 			{
 				T object = IModel.this.getObject();
+				IModel.this.detach();
 				if (object != null)
 				{
 					IModel<R> model = mapper.apply(object);
@@ -251,15 +282,24 @@ public interface IModel<T> extends IDetachable
 	 */
 	default IModel<T> orElse(T other)
 	{
-		return (IModel<T>)() -> {
-			T object = IModel.this.getObject();
-			if (object == null)
+		return new IModel<T>() {
+			@Override
+			public T getObject()
 			{
-				return other;
+				T object = IModel.this.getObject();
+				if (object == null)
+				{
+					return other;
+				} else
+				{
+					return object;
+				}
 			}
-			else
+
+			@Override
+			public void detach()
 			{
-				return object;
+				IModel.this.detach();
 			}
 		};
 	}
@@ -275,15 +315,24 @@ public interface IModel<T> extends IDetachable
 	default IModel<T> orElseGet(SerializableSupplier<? extends T> other)
 	{
 		Args.notNull(other, "other");
-		return (IModel<T>)() -> {
-			T object = IModel.this.getObject();
-			if (object == null)
+		return new IModel<T>() {
+			@Override
+			public T getObject()
 			{
-				return other.get();
+				T object = IModel.this.getObject();
+				if (object == null)
+				{
+					return other.get();
+				} else
+				{
+					return object;
+				}
 			}
-			else
+
+			@Override
+			public void detach()
 			{
-				return object;
+				IModel.this.detach();
 			}
 		};
 	}