package org.jboss.pitbull.internal.util.registry; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a> * @version $Revision: 1 $ */ public class UriRegistry<T> extends ParentSegment<T> { protected Map<T, Segment> globalRegistry = new HashMap<T, Segment>(); @Override protected void removeSegment() { } public Segment unregister(T resource) { Segment segment = globalRegistry.remove(resource); if (segment != null) { segment.removeMatch(resource); } return segment; } public Segment register(String path, T resource) { if (path.startsWith("/")) path = path.substring(1); List<String> pathParamExpr = new ArrayList<String>(); StringBuffer newPath = pullPathParamExpressions(path, pathParamExpr); path = newPath.toString(); String[] segments = path.split("/"); for (int i = 0; i < segments.length; i++) { segments[i] = putBackPathParamExpressions(segments[i], pathParamExpr); } Segment segment = addPath(segments, 0, resource); globalRegistry.put(resource, segment); return segment; } public List<T> match(String path) throws NotFoundException { int start = 0; return match(path, start); } public List<T> matchMulti(String path) throws NotFoundException { int start = 0; return matchMulti(path, start); } }