Author: rmannibucau
Date: Mon Oct 17 22:34:53 2011
New Revision: 1185410
URL: http://svn.apache.org/viewvc?rev=1185410&view=rev
Log:
managing inheritance in rest path
Modified:
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
Modified:
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1185410&r1=1185409&r2=1185410&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
(original)
+++
openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
Mon Oct 17 22:34:53 2011
@@ -39,6 +39,7 @@ import org.apache.openejb.util.Logger;
import javax.naming.Context;
import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.Path;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.UriBuilder;
import java.io.IOException;
@@ -276,8 +277,17 @@ public abstract class RESTService implem
if (context != null) {
root += context;
}
+
+ Class<?> usedClass = clazz;
+ while (usedClass.getAnnotation(Path.class) == null &&
usedClass.getSuperclass() != null) {
+ usedClass = usedClass.getSuperclass();
+ }
+ if (usedClass == null) {
+ throw new IllegalArgumentException("no @Path annotation on " +
clazz.getName());
+ }
+
try {
- return UriBuilder.fromUri(new
URI(root)).path(clazz).build().toURL().toString();
+ return UriBuilder.fromUri(new
URI(root)).path(usedClass).build().toURL().toString();
} catch (MalformedURLException e) {
throw new OpenEJBRestRuntimeException("url is malformed", e);
} catch (URISyntaxException e) {