Updated Branches: refs/heads/master e1d284298 -> f5cd43bb5
WICKET-2498 IChainingModel implementation Move/rename ChainingModel#getTarget() to AbstractPropertyModel#getInnermostModelOrObject() because this method is actually used only there and has the special logic to extract the innermost model. Rename ChainingModel#getPlainTarget() to #getTarget(). Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/f5cd43bb Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/f5cd43bb Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/f5cd43bb Branch: refs/heads/master Commit: f5cd43bb5385ddfa7f0940e73b96c2f42e0b33d6 Parents: e1d2842 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Mon Mar 5 14:50:24 2012 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Mon Mar 5 14:50:24 2012 +0200 ---------------------------------------------------------------------- .../apache/wicket/model/AbstractPropertyModel.java | 43 +++++++++++---- .../org/apache/wicket/model/ChainingModel.java | 23 +------- 2 files changed, 33 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/f5cd43bb/wicket-core/src/main/java/org/apache/wicket/model/AbstractPropertyModel.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/model/AbstractPropertyModel.java b/wicket-core/src/main/java/org/apache/wicket/model/AbstractPropertyModel.java index a0ca887..98f40fa 100644 --- a/wicket-core/src/main/java/org/apache/wicket/model/AbstractPropertyModel.java +++ b/wicket-core/src/main/java/org/apache/wicket/model/AbstractPropertyModel.java @@ -72,7 +72,7 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> if (Strings.isEmpty(expression)) { // Return a meaningful value for an empty property expression - return (T)getTarget(); + return (T) getInnermostModelOrObject(); } else if (expression.startsWith(".")) { @@ -80,7 +80,7 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> "Property expressions cannot start with a '.' character"); } - final Object target = getTarget(); + final Object target = getInnermostModelOrObject(); if (target != null) { return (T)PropertyResolver.getValue(expression, target); @@ -114,14 +114,14 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> { // TODO check, really do this? // why not just set the target to the object? - Object target = getPlainTarget(); + Object target = getTarget(); if (target instanceof IModel) { ((IModel<T>)target).setObject(object); } else { - setPlainTarget(object); + setTarget(object); } } else @@ -129,7 +129,7 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> PropertyResolverConverter prc = null; prc = new PropertyResolverConverter(Application.get().getConverterLocator(), Session.get().getLocale()); - PropertyResolver.setValue(expression, getTarget(), object, prc); + PropertyResolver.setValue(expression, getInnermostModelOrObject(), object, prc); } } @@ -144,11 +144,11 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> if (Strings.isEmpty(expression)) { // Return a meaningful value for an empty property expression - Object target = getTarget(); + Object target = getInnermostModelOrObject(); return (Class<T>)(target != null ? target.getClass() : null); } - final Object target = getTarget(); + final Object target = getInnermostModelOrObject(); if (target != null) { try @@ -160,11 +160,11 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> // ignore. } } - else if (getPlainTarget() instanceof IObjectClassAwareModel) + else if (getTarget() instanceof IObjectClassAwareModel) { try { - Class<?> targetClass = ((IObjectClassAwareModel<?>)getPlainTarget()).getObjectClass(); + Class<?> targetClass = ((IObjectClassAwareModel<?>) getTarget()).getObjectClass(); if (targetClass != null) { return PropertyResolver.getPropertyClass(expression, targetClass); @@ -188,7 +188,7 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> String expression = propertyExpression(); if (Strings.isEmpty(expression) == false) { - Object target = getTarget(); + Object target = getInnermostModelOrObject(); if (target != null) { try @@ -213,7 +213,7 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> String expression = propertyExpression(); if (Strings.isEmpty(expression) == false) { - Object target = getTarget(); + Object target = getInnermostModelOrObject(); if (target != null) { try @@ -237,7 +237,7 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> String expression = propertyExpression(); if (Strings.isEmpty(expression) == false) { - Object target = getTarget(); + Object target = getInnermostModelOrObject(); if (target != null) { try @@ -256,4 +256,23 @@ public abstract class AbstractPropertyModel<T> extends ChainingModel<T> * @return The property expression for the component */ protected abstract String propertyExpression(); + + /** + * @return The innermost model or the object if the target is not a model + */ + // legacy method ... + public final Object getInnermostModelOrObject() + { + Object object = getTarget(); + while (object instanceof IModel) + { + Object tmp = ((IModel<?>)object).getObject(); + if (tmp == object) + { + break; + } + object = tmp; + } + return object; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/f5cd43bb/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 97545a4..5c3a2bf 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 @@ -125,7 +125,7 @@ public abstract class ChainingModel<T> implements IChainingModel<T> /** * @return The target - object or model */ - protected final Object getPlainTarget() + protected final Object getTarget() { return target; } @@ -134,32 +134,13 @@ public abstract class ChainingModel<T> implements IChainingModel<T> * Sets a new target - object or model * @return this object */ - protected final ChainingModel<T> setPlainTarget(final Object modelObject) + protected final ChainingModel<T> setTarget(final Object modelObject) { this.target = modelObject; return this; } /** - * @return The innermost model or the object if the target is not a model - */ - // legacy method ... - public final Object getTarget() - { - Object object = target; - while (object instanceof IModel) - { - Object tmp = ((IModel<?>)object).getObject(); - if (tmp == object) - { - break; - } - object = tmp; - } - return object; - } - - /** * @see java.lang.Object#toString() */ @Override
