You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/04/16 08:00:22 UTC

svn commit: r1326495 - /openejb/branches/openejb-4.0.0/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java

Author: dblevins
Date: Mon Apr 16 06:00:22 2012
New Revision: 1326495

URL: http://svn.apache.org/viewvc?rev=1326495&view=rev
Log:
TOMEE-162
Conditionally enable heavier AnnotationFinder features

Modified:
    openejb/branches/openejb-4.0.0/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java

Modified: openejb/branches/openejb-4.0.0/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-4.0.0/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1326495&r1=1326494&r2=1326495&view=diff
==============================================================================
--- openejb/branches/openejb-4.0.0/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java (original)
+++ openejb/branches/openejb-4.0.0/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java Mon Apr 16 06:00:22 2012
@@ -52,7 +52,10 @@ public class FinderFactory {
         IAnnotationFinder finder;
         if (module instanceof WebModule) {
             WebModule webModule = (WebModule) module;
-            finder = new AnnotationFinder(new WebappAggregatedArchive(webModule, webModule.getScannableUrls())).link();
+            final AnnotationFinder annotationFinder = new AnnotationFinder(new WebappAggregatedArchive(webModule, webModule.getScannableUrls()));
+            if (annotationFinder.hasMetaAnnotations()) annotationFinder.enableMetaAnnotations();
+            if (enableFindSubclasses()) annotationFinder.enableFindSubclasses();
+            finder = annotationFinder;
         } else if (module instanceof ConnectorModule) {
         	ConnectorModule connectorModule = (ConnectorModule) module;
         	finder = new AnnotationFinder(new ConfigurableClasspathArchive(connectorModule, connectorModule.getLibraries())).link();
@@ -84,6 +87,19 @@ public class FinderFactory {
         return new ModuleLimitedFinder(finder);
     }
 
+    private boolean enableFindSubclasses() {
+        return isJaxRsInstalled() && SystemInstance.get().getOptions().get("tomee.jaxrs.deploy.undeclared", false);
+    }
+
+    public boolean isJaxRsInstalled() {
+        try {
+            this.getClass().getClassLoader().loadClass("org.apache.openejb.server.rest.RsRegistry");
+            return true;
+        } catch (Throwable e) {
+            return false;
+        }
+    }
+
     public static class ModuleLimitedFinder implements IAnnotationFinder {
         private final IAnnotationFinder delegate;