package fr.openwide.core.wicket.more.link.descriptor.impl; import java.util.Collection; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.RestartResponseAtInterceptPageException; import org.apache.wicket.RestartResponseException; import org.apache.wicket.core.request.handler.PageProvider; import org.apache.wicket.model.IModel; import org.apache.wicket.request.flow.RedirectToUrlException; import com.google.common.collect.ImmutableList; import fr.openwide.core.wicket.more.link.descriptor.AbstractDynamicBookmarkableLink; import fr.openwide.core.wicket.more.link.descriptor.LinkInvalidTargetRuntimeException; import fr.openwide.core.wicket.more.link.descriptor.generator.ILinkGenerator; import fr.openwide.core.wicket.more.link.descriptor.generator.IPageLinkGenerator; import fr.openwide.core.wicket.more.link.descriptor.parameter.injector.LinkParameterInjectionRuntimeException; import fr.openwide.core.wicket.more.link.descriptor.parameter.validator.LinkParameterValidationRuntimeException; import fr.openwide.core.wicket.more.markup.html.template.model.NavigationMenuItem; public class ChainedPageLinkGeneratorImpl extends AbstractChainedLinkGenerator<IPageLinkGenerator> implements IPageLinkGenerator { private static final long serialVersionUID = -2475023459193693212L; public ChainedPageLinkGeneratorImpl(Iterable<? extends IPageLinkGenerator> chain) { super(chain); } @Override public ILinkGenerator chain(ILinkGenerator other) { if (other instanceof IPageLinkGenerator) { return chain((IPageLinkGenerator) other); } return new ChainedLinkGeneratorImpl( ImmutableList.<ILinkGenerator>builder().addAll(getChain()).add(other).build() ); } @Override public IPageLinkGenerator chain(IPageLinkGenerator other) { return new ChainedPageLinkGeneratorImpl( ImmutableList.<IPageLinkGenerator>builder().addAll(getChain()).add(other).build() ); } @Override public IPageLinkGenerator wrap(Component component) { ImmutableList.Builder<IPageLinkGenerator> builder = ImmutableList.builder(); for (IPageLinkGenerator element : getChain()) { builder.add(element.wrap(component)); } return new ChainedPageLinkGeneratorImpl(builder.build()); } @Override public AbstractDynamicBookmarkableLink link(String wicketId, String anchor) { return delegate().link(wicketId, anchor); } @Override public void setResponsePage() throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException, LinkParameterInjectionRuntimeException { delegate().setResponsePage(); } @Override public RestartResponseException newRestartResponseException() throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException, LinkParameterInjectionRuntimeException { return delegate().newRestartResponseException(); } @Override public RestartResponseAtInterceptPageException newRestartResponseAtInterceptPageException() throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException, LinkParameterInjectionRuntimeException { return delegate().newRestartResponseAtInterceptPageException(); } @Override public RedirectToUrlException newRedirectToUrlException() throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException, LinkParameterInjectionRuntimeException { return delegate().newRedirectToUrlException(); } @Override public RedirectToUrlException newRedirectToUrlException(String anchor) throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException, LinkParameterInjectionRuntimeException { return delegate().newRedirectToUrlException(anchor); } @Override public NavigationMenuItem navigationMenuItem(IModel<String> labelModel) throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException { return delegate().navigationMenuItem(labelModel); } @Override public NavigationMenuItem navigationMenuItem(IModel<String> labelModel, Collection<NavigationMenuItem> subMenuItems) throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException { return delegate().navigationMenuItem(labelModel, subMenuItems); } @Override public boolean isActive(Class<? extends Page> selectedPage) { return delegate().isActive(selectedPage); } @Override public PageProvider newPageProvider() throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException { return delegate().newPageProvider(); } /** * Not implemented */ @Override @Deprecated public IPageLinkGenerator bypassPermissions() { throw new IllegalStateException("No backward compatibility available"); } }