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"));
}
}