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)