Author: rmannibucau
Date: Thu Aug 23 18:34:01 2012
New Revision: 1376642

URL: http://svn.apache.org/viewvc?rev=1376642&view=rev
Log:
TOMEE-403 subresources (jaxrs) - filtering subresources

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1376642&r1=1376641&r2=1376642&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 Thu Aug 23 18:34:01 2012
@@ -2379,7 +2379,7 @@ public class AnnotationDeployer implemen
                          */
                         if (sessionBean.getSessionType() != 
SessionType.STATEFUL) {
                             // REST can be fun
-                            if 
(annotationFinder.isAnnotationPresent(Path.class) || 
!annotationFinder.findAnnotatedMethods(Path.class).isEmpty()) {
+                            if 
(annotationFinder.isAnnotationPresent(Path.class)) {
                                 sessionBean.setRestService(true);
                             }
                         }
@@ -5106,6 +5106,10 @@ public class AnnotationDeployer implemen
         for (Annotated<Method> aMethod : methods) {
             Method method = aMethod.get();
             Class<?> clazz = method.getDeclaringClass();
+            if (!isARestClassToDeploy(clazz)) {
+                continue;
+            }
+
             int modifiers = clazz.getModifiers();
             if (!Modifier.isAbstract(modifiers)) {
                 if (!isEJB(clazz)) {
@@ -5119,6 +5123,22 @@ public class AnnotationDeployer implemen
         return classes;
     }
 
+    private static boolean isARestClassToDeploy(final Class<?> clazz) {
+        if (clazz == null) {
+            return false;
+        }
+
+        // sub resources are @Path but not on the class
+        Class<?> current = clazz;
+        while (current != null) {
+            if (current.getAnnotation(Path.class) != null) {
+                return true;
+            }
+            current = current.getSuperclass();
+        }
+        return false;
+    }
+
     private static boolean isEJB(Class<?> clazz) {
         return clazz.isAnnotationPresent(Stateless.class)
             || clazz.isAnnotationPresent(Singleton.class)


Reply via email to