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

java.lang.Object
  extended by org.apache.abdera.protocol.server.impl.RegexTargetResolver
All Implemented Interfaces:
Resolver<Target>

public class RegexTargetResolver
extends java.lang.Object
implements Resolver<Target>

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(Request 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(Request request)
Specified by:
resolve in interface Resolver<Target>

getTarget

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