package fr.openwide.core.wicket.more.link.descriptor.impl; import org.apache.wicket.util.lang.Args; 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.parameter.validator.LinkParameterValidationRuntimeException; public class DynamicBookmarkableLink extends AbstractDynamicBookmarkableLink { private static final long serialVersionUID = 6850747758117881107L; private final ILinkGenerator linkGenerator; public DynamicBookmarkableLink(String wicketId, ILinkGenerator linkGenerator) { super(wicketId); Args.notNull(linkGenerator, "parametersMapplinkGeneratoring"); this.linkGenerator = linkGenerator.wrap(this); } protected ILinkGenerator getLinkGenerator() { return linkGenerator; } @Override protected boolean isValid() { return linkGenerator.isAccessible(); } @Override protected CharSequence getRelativeURL() throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException { return linkGenerator.url(); } @Override protected CharSequence getAbsoluteURL() throws LinkInvalidTargetRuntimeException, LinkParameterValidationRuntimeException { return linkGenerator.fullUrl(); } @Override protected void onDetach() { super.onDetach(); linkGenerator.detach(); } }