package fr.openwide.core.wicket.more.link.descriptor.builder.impl.pageinstance;
import java.util.Set;
import org.apache.wicket.Page;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import com.google.common.collect.Sets;
import fr.openwide.core.wicket.more.link.descriptor.builder.state.pageinstance.IPageInstanceState;
import fr.openwide.core.wicket.more.link.descriptor.generator.IPageLinkGenerator;
import fr.openwide.core.wicket.more.link.descriptor.impl.CorePageInstanceLinkGenerator;
public class CoreLinkDescriptorBuilderPageInstanceStateImpl implements IPageInstanceState<IPageLinkGenerator> {
private final IModel<? extends Page> pageInstanceModel;
private Set<IModel<? extends Class<? extends Page>>> expectedPageClassModels = Sets.newHashSet();
public CoreLinkDescriptorBuilderPageInstanceStateImpl(IModel<? extends Page> pageInstanceModel) {
this.pageInstanceModel = pageInstanceModel;
}
@Override
public <P extends Page> IPageInstanceState<IPageLinkGenerator> validate(Class<P> expectedPageClass) {
return validate(Model.of(expectedPageClass));
}
@Override
public IPageInstanceState<IPageLinkGenerator> validate(IModel<? extends Class<? extends Page>> expectedPageClassModel) {
expectedPageClassModels.add(expectedPageClassModel);
return this;
}
@Override
public IPageLinkGenerator build() {
return new CorePageInstanceLinkGenerator(pageInstanceModel, expectedPageClassModels);
}
}