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();
}
};
}