package fr.openwide.maven.artifact.notifier.web.application.common.model; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; public abstract class EitherModel<T> extends AbstractReadOnlyModel<T> { private static final long serialVersionUID = 5069343397373330352L; private final IModel<? extends T> firstModel; private final IModel<? extends T> secondModel; public EitherModel(IModel<? extends T> firstModel, IModel<? extends T> secondModel) { super(); this.firstModel = firstModel; this.secondModel = secondModel; } @Override public T getObject() { if (shouldGetFirstModel()) { return firstModel.getObject(); } else { return secondModel.getObject(); } } protected abstract boolean shouldGetFirstModel(); @Override public void detach() { super.detach(); firstModel.detach(); secondModel.detach(); } }