org.apache.abdera.protocol.server.util
Class RegexTargetResolver

java.lang.Object
  extended by org.apache.abdera.protocol.server.util.RegexTargetResolver
All Implemented Interfaces:
TargetResolver

public class RegexTargetResolver
extends java.lang.Object
implements TargetResolver

Provides a utility class helpful for determining which type of resource the client is requesting. Each resource type (e.g. service doc, collection, entry, edit uri, media resource, etc) is assigned a regex pattern. Given the request URI (path and querystring), this will determine which resource was selected and return an appropriate TargetMatcher. TargetMatcher is essentially just a simplified version of the java.util.regex.Matcher that also specifies the Resource Type.

  RequestContext request = ...
  RegexTargetResolver tr = new RegexTargetResolver();
  tr.setPattern("/atom",ResourceType.INTROSPECTION);
  tr.setPattern("/atom/([^/#?]+)",ResourceType.COLLECTION);
  tr.setPattern("/atom/([^/#?]+)/([^/#?]+)",ResourceType.ENTRY);
  tr.setPattern("/atom/([^/#?]+)/([^/#?]+)\\?edit",ResourceType.ENTRY_EDIT);
  tr.setPattern("/atom/([^/#?]+)/([^/#?]+)\\?media",ResourceType.MEDIA);
  tr.setPattern("/atom/([^/#?]+)/([^/#?]+)\\?edit-media",ResourceType.MEDIA_EDIT);
  
  Target target = tr.resolve(request);
  System.out.println(target.getType());
  System.out.println(targer.getParameter("foo"));
 


Nested Class Summary
static class RegexTargetResolver.RegexTarget
           
 
Constructor Summary
RegexTargetResolver()
           
RegexTargetResolver(java.util.Map<java.lang.String,TargetType> patterns)
           
 
Method Summary
protected  Target getTarget(TargetType type, RequestContext request, java.util.regex.Matcher matcher)
           
 Target resolve(RequestContext request)
           
 void setPattern(java.lang.String pattern, TargetType type)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RegexTargetResolver

public RegexTargetResolver()

RegexTargetResolver

public RegexTargetResolver(java.util.Map<java.lang.String,TargetType> patterns)
Method Detail

setPattern

public void setPattern(java.lang.String pattern,
                       TargetType type)

resolve

public Target resolve(RequestContext request)
Specified by:
resolve in interface TargetResolver

getTarget

protected Target getTarget(TargetType type,
                           RequestContext request,
                           java.util.regex.Matcher matcher)