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 21:57:26 UTC
[02/10] wicket git commit: Use better bounds for the parameter types.
Use better bounds for the parameter types.
Rework #flatMap() to actually return the new model, so the developer can return writeable model. The drawback is that now it is not lazy. It would be lazy if the signature is: #flatMap(WicketFunction<IModel<T>, IModel<R>> mapper)
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/70fa0136
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/70fa0136
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/70fa0136
Branch: refs/heads/master
Commit: 70fa0136ad6d58f1f8168b2e5937f7d1423381f7
Parents: 484132a
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sun Apr 24 20:08:41 2016 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sun Apr 24 20:08:41 2016 +0200
----------------------------------------------------------------------
.../java/org/apache/wicket/model/IModel.java | 25 +++++++-------------
1 file changed, 9 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/70fa0136/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 789d27a..eef15e1 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
@@ -91,7 +91,7 @@ public interface IModel<T> extends IDetachable
* @param predicate a predicate to be used for testing the contained object
* @return a new IModel
*/
- default IModel<T> filter(WicketFunction<T, Boolean> predicate) {
+ default IModel<T> filter(WicketFunction<? super T, Boolean> predicate) {
return (IModel<T>) () -> {
T object = IModel.this.getObject();
if (object != null && predicate.apply(object)) {
@@ -111,7 +111,7 @@ public interface IModel<T> extends IDetachable
* @param mapper a mapper, to be applied to the contained object
* @return a new IModel
*/
- default <R> IModel<R> map(WicketFunction<T, R> mapper) {
+ default <R> IModel<R> map(WicketFunction<? super T, R> mapper) {
return (IModel<R>) () -> {
T object = IModel.this.getObject();
if (object == null) {
@@ -134,7 +134,7 @@ public interface IModel<T> extends IDetachable
* @param other another model to be combined with this one
* @return a new IModel
*/
- default <R, U> IModel<R> mapWith(WicketBiFunction<T, U, R> combine, IModel<U> other) {
+ default <R, U> IModel<R> mapWith(WicketBiFunction<? super T, ? super U, R> combine, IModel<U> other) {
return (IModel<R>) () -> {
T t = IModel.this.getObject();
U u = other.getObject();
@@ -155,16 +155,9 @@ public interface IModel<T> extends IDetachable
* @param mapper a mapper, to be applied to the contained object
* @return a new IModel
*/
- default <R> IModel<R> flatMap(WicketFunction<T, IModel<R>> mapper) {
- return (IModel<R>) () -> {
- T object = IModel.this.getObject();
- if (object == null) {
- return null;
- }
- else {
- return mapper.apply(object).getObject();
- }
- };
+ default <R> IModel<R> flatMap(WicketFunction<? super T, IModel<R>> mapper) {
+ T object = IModel.this.getObject();
+ return mapper.apply(object);
}
/**
@@ -176,10 +169,10 @@ public interface IModel<T> extends IDetachable
* to the contained model object.
* @return a new IModel
*/
- default <R> IModel<R> apply(IModel<WicketFunction<T, R>> mapper) {
+ default <R> IModel<R> apply(IModel<WicketFunction<? super T, R>> mapper) {
return (IModel<R>) () -> {
T object = IModel.this.getObject();
- WicketFunction<T, R> f = mapper.getObject();
+ WicketFunction<? super T, R> f = mapper.getObject();
if (object == null || f == null) {
return null;
}
@@ -216,7 +209,7 @@ public interface IModel<T> extends IDetachable
* @param other a supplier to be used as a default
* @return a new IModel
*/
- default IModel<T> orElseGet(WicketSupplier<T> other) {
+ default IModel<T> orElseGet(WicketSupplier<? extends T> other) {
return (IModel<T>) () -> {
T object = IModel.this.getObject();
if (object == null) {