I searched the JIRA for IChainingModel and didn't get any hits. Did
anyone create a JIRA issue? Here's an implementation of mine.
public class BaseChainingModel implements IChainingModel {
private static final long serialVersionUID = 1L;
private Object target;
public BaseChainingModel(Object modelObject) {
if (modelObject == null) {
throw new IllegalArgumentException("Parameter
modelObject cannot be null");
}
else {
target = modelObject;
}
}
@Override
public void detach() {
if (target instanceof IDetachable)
((IDetachable) target).detach();
}
@Override
public IModel getChainedModel() {
if (target instanceof IModel)
return (IModel) target;
else
return null;
}
@Override
public void setChainedModel(IModel model) {
target = model;
}
@Override
public Object getObject() {
Object object = target;
while (object instanceof IModel) {
Object tmp = ((IModel) object).getObject();
if (tmp == object) {
break; // pathological
}
object = tmp;
}
return object;
}
@Override
public void setObject(Object obj) {
if (target instanceof IModel)
((IModel) target).setObject(obj);
else if (obj == null || obj instanceof Serializable)
target = obj;
else
throw new WicketRuntimeException("Model object must be
Serializable");
}
}
Scott
On Wed, Apr 8, 2009 at 2:53 PM, Jeremy Thomerson
<[email protected]> wrote:
> I think that's a good idea - I have done a similar thing in my own
> projects. Please open a JIRA so this idea doesn't get lost, but this is one
> I may try to do soon.
>
> --
> Jeremy Thomerson
> http://www.wickettraining.com
>
>
>
> On Wed, Apr 8, 2009 at 4:36 PM, Juan G. Arias <[email protected]> wrote:
>
>> Hi all,First of all, I'm using wicket 1.3.5
>>
>> I'm writing a model and ai need it to be "chaineable". I mean, I need this
>> model to contain another model, so my model can obtain the data, for
>> example, from a property model.
>> Ok, I've been reading and this is solved by the IChainingModel.
>>
>> But I couldn't find any default implementation of this interface.
>> There are two classes currently implementing this interface,
>> AbstractPropertyModel and CompoundPropertyModel.
>> Both classes has some code duplicated, specifically:
>> - void detach()
>> - IModel getChainedModel()
>> - void setChainedModel(IModel model)
>> - some lines of void setObject(Object object)
>> - the code in CompuntPropertyModel#getObject() and
>> AbstarctPropertyModel#getTarget() is different, but the logic is the same.
>>
>> And I'm afraid my code will be the same as those classes.
>>
>> So, finally, my point.
>> Is there any default implementation of this behavior? Is there a chance to
>> add a super-class with this code?
>>
>> Thanks!
>> Juan Arias
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]