You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2010/01/27 15:03:02 UTC

svn commit: r903644 - in /incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src: main/java/org/apache/clerezza/triaxrs/ test/java/org/apache/clerezza/triaxrs/blackbox/

Author: reto
Date: Wed Jan 27 14:03:01 2010
New Revision: 903644

URL: http://svn.apache.org/viewvc?rev=903644&view=rev
Log:
CLEREZZA-86: applied patch agron, and enhanced test

Modified:
    incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java
    incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResources.java
    incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/AutoGeneratedOptionsTest.java

Modified: incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java?rev=903644&r1=903643&r2=903644&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java (original)
+++ incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResourceExecutorImpl.java Wed Jan 27 14:03:01 2010
@@ -59,7 +59,6 @@
 import org.apache.clerezza.triaxrs.util.URITemplate;
 import org.wymiwyg.wrhapi.HandlerException;
 import org.wymiwyg.wrhapi.HeaderName;
-import org.wymiwyg.wrhapi.RequestURI;
 
 /**
  * @scr.component
@@ -235,17 +234,17 @@
 			Map<String, String> inheritedPathParams) throws HandlerException,
 			UnsupportedFieldType {
 		Set<Method> result;
-		if (remainingPath.equals("/") || (remainingPath.length() == 0)) {
-			result = getResourceMethods(instance.getClass());
-			for (Method method : result) {
-				method2PathParams.put(method, inheritedPathParams);
-			}
-		} else if(remainingPath.equals(RequestURI.Type.NO_RESOURCE.toString())){
+		if(remainingPath == null){
 			result = MethodUtil.getAnnotatedMethods(instance.getClass());
 			for (Method method : result){
 				method.getDeclaredAnnotations();
 				method2PathParams.put(method, inheritedPathParams);
 			}
+		}else if (remainingPath.equals("/") || (remainingPath.length() == 0)) {
+			result = getResourceMethods(instance.getClass());
+			for (Method method : result) {
+				method2PathParams.put(method, inheritedPathParams);
+			}
 		} else {
 			SortedSet<MethodDescriptor> methodDescriptors = getSubThingMethodDescriptors(instance
 					.getClass());

Modified: incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResources.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResources.java?rev=903644&r1=903643&r2=903644&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResources.java (original)
+++ incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/RootResources.java Wed Jan 27 14:03:01 2010
@@ -16,134 +16,137 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.clerezza.triaxrs;
-
-import java.lang.reflect.Method;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.clerezza.triaxrs.util.PathMatching;
-import org.wymiwyg.wrhapi.HandlerException;
-import org.wymiwyg.wrhapi.Response;
-
-/**
- * Manages a set of root-resources delivering a suitable root-resource given a
- * path.
- * 
- * @author reto
- */
-public class RootResources {
-
-	/**
-	 * @author mir
-	 * 
-	 */
-	public class ResourceAndPathMatching {
-
-		private Object rootResource;
-		private PathMatching pathMatching;
-
-		public ResourceAndPathMatching(Object rootResource,
-				PathMatching pathMatching) {
-			this.rootResource = rootResource;
-			this.pathMatching = pathMatching;
-		}
-
-		public Object getRootResource() {
-			return rootResource;
-		}
-
-		public PathMatching getPathMatching() {
-			return pathMatching;
-		}
-
-	}
-
-	private static ThreadLocal<String> requestUri = new ThreadLocal<String>() {
-	};
-
-	public static String getCurrentRequestUri() {
-		return requestUri.get();
-	}
-
-	final static private Logger logger = LoggerFactory
-			.getLogger(RootResources.class);
-
-	/**
-	 * we store the resource descriptors
-	 */
-	SortedSet<RootResourceDescriptor> rootResourceDescriptors = new TreeSet<RootResourceDescriptor>();
-
-	/**
-	 * adds a {@link RootResourceDescriptor}
-	 * 
-	 * @param descriptor
-	 */
-	public void add(RootResourceDescriptor descriptor) {
-		// TODO Flag an error if the set includes more than one instance
-		// of the same class.
-		rootResourceDescriptors.add(descriptor);
-	}
-
-	/**
-	 * removes a {@link RootResourceDescriptor}
-	 * 
-	 * @param descriptor
-	 */
-	public void remove(RootResourceDescriptor descriptor) {
-		rootResourceDescriptors.remove(descriptor);
-	}
-
-	/**
-	 * 
-	 * @return the number of available root resources
-	 */
-	public int size() {
-		return rootResourceDescriptors.size();
-	}
-
-	/**
-	 * Get the best matching root-resource for a path
-	 * 
-	 * @param uriPath
-	 * @return the matching root-resource or null if no root resources matches
-	 */
-	public RootResourceDescriptor getDescriptor(String uriPath) {
-		for (RootResourceDescriptor descriptor : rootResourceDescriptors) {
-
-			PathMatching pathMatching = descriptor.getUriTemplate().match(
-					uriPath);
-			if (pathMatching != null) {
-				return descriptor;
-			}
-		}
-		return null;
-	}
-
-	ResourceAndPathMatching getResourceAndPathMatching(WebRequest request)
-			throws HandlerException, NoMatchingRootResourceException {
-		String uriPath = request.getWrhapiRequest().getRequestURI().getPath();
-		requestUri.set(uriPath);
-		PathMatching pathMatching = null;
-		RootResourceDescriptor descriptor = null;
-		Iterator<RootResourceDescriptor> descriptorIter = rootResourceDescriptors
-				.iterator();
-		while (descriptorIter.hasNext()) {
-			descriptor = descriptorIter.next();
-			pathMatching = descriptor.getUriTemplate().match(uriPath);
-			if (pathMatching != null) {
-				break;
-			}
-		}
-
-		if (pathMatching == null) {
-			throw new NoMatchingRootResourceException();
-		}
-		return new ResourceAndPathMatching(descriptor.getInstance(request,
-				pathMatching.getParameters()), pathMatching);
-	}
-}
+package org.apache.clerezza.triaxrs;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.clerezza.triaxrs.util.PathMatching;
+import org.wymiwyg.wrhapi.HandlerException;
+
+/**
+ * Manages a set of root-resources delivering a suitable root-resource given a
+ * path.
+ * 
+ * @author reto
+ */
+public class RootResources {
+
+	/**
+	 * @author mir
+	 * 
+	 */
+	public class ResourceAndPathMatching {
+
+		private Object rootResource;
+		private PathMatching pathMatching;
+
+		public ResourceAndPathMatching(Object rootResource,
+				PathMatching pathMatching) {
+			this.rootResource = rootResource;
+			this.pathMatching = pathMatching;
+		}
+
+		public Object getRootResource() {
+			return rootResource;
+		}
+
+		public PathMatching getPathMatching() {
+			return pathMatching;
+		}
+
+	}
+
+	private static ThreadLocal<String> requestUri = new ThreadLocal<String>() {
+	};
+
+	public static String getCurrentRequestUri() {
+		return requestUri.get();
+	}
+
+	final static private Logger logger = LoggerFactory
+			.getLogger(RootResources.class);
+
+	/**
+	 * we store the resource descriptors
+	 */
+	SortedSet<RootResourceDescriptor> rootResourceDescriptors = new TreeSet<RootResourceDescriptor>();
+
+	/**
+	 * adds a {@link RootResourceDescriptor}
+	 * 
+	 * @param descriptor
+	 */
+	public void add(RootResourceDescriptor descriptor) {
+		// TODO Flag an error if the set includes more than one instance
+		// of the same class.
+		rootResourceDescriptors.add(descriptor);
+	}
+
+	/**
+	 * removes a {@link RootResourceDescriptor}
+	 * 
+	 * @param descriptor
+	 */
+	public void remove(RootResourceDescriptor descriptor) {
+		rootResourceDescriptors.remove(descriptor);
+	}
+
+	/**
+	 * 
+	 * @return the number of available root resources
+	 */
+	public int size() {
+		return rootResourceDescriptors.size();
+	}
+
+	/**
+	 * Get the best matching root-resource for a path
+	 * 
+	 * @param uriPath
+	 * @return the matching root-resource or null if no root resources matches
+	 */
+	public RootResourceDescriptor getDescriptor(String uriPath) {
+		for (RootResourceDescriptor descriptor : rootResourceDescriptors) {
+
+			PathMatching pathMatching = descriptor.getUriTemplate().match(
+					uriPath);
+			if (pathMatching != null) {
+				return descriptor;
+			}
+		}
+		return null;
+	}
+
+	ResourceAndPathMatching getResourceAndPathMatching(WebRequest request)
+			throws HandlerException, NoMatchingRootResourceException {
+		String uriPath = request.getWrhapiRequest().getRequestURI().getPath();
+		requestUri.set(uriPath);
+		PathMatching pathMatching = null;
+		RootResourceDescriptor descriptor = null;
+		Iterator<RootResourceDescriptor> descriptorIter = rootResourceDescriptors
+				.iterator();
+		while (descriptorIter.hasNext()) {
+			descriptor = descriptorIter.next();
+			if (uriPath == null) {
+				PathMatching emptyPathMatching = new PathMatching(new HashMap<String, String>(), uriPath);
+				return new ResourceAndPathMatching(descriptor.getInstance(request,
+						emptyPathMatching.getParameters()), emptyPathMatching);
+			}
+			pathMatching = descriptor.getUriTemplate().match(uriPath);
+			if (pathMatching != null) {
+				break;
+			}
+		}
+
+		if (pathMatching == null) {
+			throw new NoMatchingRootResourceException();
+		}
+		return new ResourceAndPathMatching(descriptor.getInstance(request,
+				pathMatching.getParameters()), pathMatching);
+	}
+}

Modified: incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/AutoGeneratedOptionsTest.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/AutoGeneratedOptionsTest.java?rev=903644&r1=903643&r2=903644&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/AutoGeneratedOptionsTest.java (original)
+++ incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/test/java/org/apache/clerezza/triaxrs/blackbox/AutoGeneratedOptionsTest.java Wed Jan 27 14:03:01 2010
@@ -57,6 +57,12 @@
 	private @interface TEST {
 	}
 
+	@Target(ElementType.METHOD)
+	@Retention(RetentionPolicy.RUNTIME)
+	@HttpMethod("BAR")
+	private @interface TEST2 {
+	}
+
 	@Path("/")
 	public static class MyResource {
 
@@ -79,9 +85,20 @@
 		}
 	}
 
+	@Path("/somepath")
+	public static class MyResource2 {
+
+		@TEST2
+		@Produces("*/*")
+		public void propfind() {
+		}
+
+
+	}
+
 	@Test
 	public void testResponseToOptionsRequest() throws Exception {
-		JaxRsHandler handler = HandlerCreator.getHandler(MyResource.class);
+		JaxRsHandler handler = HandlerCreator.getHandler(MyResource.class, MyResource2.class);
 		RequestURIImpl uri = new RequestURIImpl();
 		RequestImpl request = new RequestImpl();
 		ResponseImpl response = new ResponseImpl();
@@ -148,5 +165,6 @@
 		Assert.assertTrue(allow.contains("GET"));
 		Assert.assertTrue(allow.contains("POST"));
 		Assert.assertTrue(allow.contains("FOO"));
+		Assert.assertTrue(allow.contains("BAR"));
 	}
 }