package fr.openwide.core.wicket.more.link.descriptor;
import org.apache.wicket.model.IDetachable;
import fr.openwide.core.wicket.more.link.descriptor.builder.LinkDescriptorBuilder;
import fr.openwide.core.wicket.more.link.descriptor.generator.ILinkGenerator;
import fr.openwide.core.wicket.more.link.descriptor.parameter.extractor.ILinkParametersExtractor;
import fr.openwide.core.wicket.more.link.descriptor.parameter.validator.LinkParameterModelValidationException;
/**
* A object implementing both {@link ILinkGenerator} and {@link ILinkParametersExtractor}.
* <p>Object implementing this interface, and its sub-interfaces ({@link IResourceLinkDescriptor},
* {@link IPageLinkDescriptor}), can be instantiated using the {@link LinkDescriptorBuilder}.
*
* <p>Re-implementing this interface is not recommended, as it may be extended with additional methods without prior
* notice.
* <p><strong>Warning:</strong> this interface extends {@link IDetachable}. Thus, it <em>must</em> be detached before
* serialization.
*
* @see ILinkGenerator
* @see ILinkParametersExtractor
*/
public interface ILinkDescriptor extends ILinkParametersExtractor, ILinkGenerator, IDetachable {
/**
* Executes validation checks on the underlying models, assuming they already have been populated.
* @throws LinkParameterModelValidationException if the validation of the parameters model returned an error
*/
void checkModels() throws LinkParameterModelValidationException;
}