org.apache.wicket.markup.resolver
Class AutoLinkResolver

java.lang.Object
  extended by org.apache.wicket.markup.resolver.AutoLinkResolver
All Implemented Interfaces:
java.io.Serializable, IClusterable, IComponentResolver

public final class AutoLinkResolver
extends java.lang.Object
implements IComponentResolver

The AutoLinkResolver is responsible to handle automatic link resolution. Tags are marked "autolink" by the MarkupParser for all tags with href attribute, such as anchor and link tags with no explicit wicket id. E.g. <a href="Home.html">

If href points to a *.html file, a BookmarkablePageLink will automatically be created, except for absolute paths, where an ExternalLink is created.

If href points to a *.html file, it resolves the given URL by searching for a page class, either relative or absolute, specified by the href attribute of the tag. If relative the href URL must be relative to the package containing the associated page. An exception is thrown if no Page class was found.

If href is no *.html file a static reference to the resource is created.

Author:
Juergen Donnerstag, Eelco Hillenius
See Also:
WicketLinkTagHandler, Serialized Form

Nested Class Summary
static class AutoLinkResolver.AbstractAutolinkResolverDelegate
          Abstract implementation that has a helper method for creating a resource reference.
static class AutoLinkResolver.AutolinkBookmarkablePageLink
          Autolink components delegate component resolution to their parent components.
static interface AutoLinkResolver.IAutolinkResolverDelegate
          Interface to delegate the actual resolving of auto components to.
static class AutoLinkResolver.PathInfo
          Encapsulates different aspects of a path.
 
Constructor Summary
AutoLinkResolver()
          Construct.
 
Method Summary
 void addTagReferenceResolver(java.lang.String tagName, java.lang.String attributeName, AutoLinkResolver.IAutolinkResolverDelegate resolver)
          Register (add or replace) a new resolver with the tagName and attributeName.
 AutoLinkResolver.IAutolinkResolverDelegate getAutolinkResolverDelegate(java.lang.String tagName)
          Get the resolver registered for 'tagName'
 boolean resolve(MarkupContainer container, MarkupStream markupStream, ComponentTag tag)
          Automatically creates a BookmarkablePageLink component.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AutoLinkResolver

public AutoLinkResolver()
Construct.

Method Detail

addTagReferenceResolver

public final void addTagReferenceResolver(java.lang.String tagName,
                                          java.lang.String attributeName,
                                          AutoLinkResolver.IAutolinkResolverDelegate resolver)
Register (add or replace) a new resolver with the tagName and attributeName. The resolver will be invoked each time an appropriate tag and attribute is found.

Parameters:
tagName - The tag name
attributeName - The attribute name
resolver - Implements what to do based on the tag and the attribute

getAutolinkResolverDelegate

public final AutoLinkResolver.IAutolinkResolverDelegate getAutolinkResolverDelegate(java.lang.String tagName)
Get the resolver registered for 'tagName'

Parameters:
tagName - The tag's name
Returns:
The resolver found. Null, if none registered

resolve

public final boolean resolve(MarkupContainer container,
                             MarkupStream markupStream,
                             ComponentTag tag)
Automatically creates a BookmarkablePageLink component.

Specified by:
resolve in interface IComponentResolver
Parameters:
markupStream - The current markupStream
tag - The current component tag while parsing the markup
container - The container parsing its markup
Returns:
true, if componentId was handle by the resolver. False, otherwise
See Also:
IComponentResolver.resolve(MarkupContainer, MarkupStream, ComponentTag)


Copyright © 2004-2010 Apache Software Foundation. All Rights Reserved.