diff options
Diffstat (limited to 'jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java')
-rw-r--r-- | jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java index 55be1dbf55..4005f9a397 100644 --- a/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java +++ b/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java @@ -21,6 +21,8 @@ package org.eclipse.jetty.osgi.annotations; import java.util.ArrayList; import java.util.List; +import org.eclipse.jetty.annotations.AbstractDiscoverableAnnotationHandler; +import org.eclipse.jetty.annotations.AnnotationParser.DiscoverableAnnotationHandler; import org.eclipse.jetty.annotations.ClassNameResolver; import org.eclipse.jetty.osgi.boot.OSGiWebappConstants; import org.eclipse.jetty.osgi.boot.utils.internal.PackageAdminServiceTracker; @@ -151,20 +153,25 @@ public class AnnotationConfiguration extends org.eclipse.jetty.annotations.Annot protected void parseBundle(WebAppContext context, AnnotationParser parser, Bundle webbundle, Bundle bundle) throws Exception { + Resource bundleRes = parser.getResource(bundle); - parser.parse(bundle,createClassNameResolver(context)); - List<DiscoveredAnnotation> annotations = new ArrayList<DiscoveredAnnotation>(); - gatherAnnotations(annotations, parser.getAnnotationHandlers()); - if (webbundle == bundle) - { - //just like the super with its question about annotations in WEB-INF/classes: - //"TODO - where to set the annotations discovered from WEB-INF/classes?" - context.getMetaData().addDiscoveredAnnotations(annotations); - } - else + + parser.clearHandlers(); + for (DiscoverableAnnotationHandler h:_discoverableAnnotationHandlers) { - context.getMetaData().addDiscoveredAnnotations(bundleRes, annotations); + if (h instanceof AbstractDiscoverableAnnotationHandler) + { + if (webbundle == bundle) + ((AbstractDiscoverableAnnotationHandler)h).setResource(null); + else + ((AbstractDiscoverableAnnotationHandler)h).setResource(bundleRes); + } } + parser.registerHandlers(_discoverableAnnotationHandlers); + parser.registerHandler(_classInheritanceHandler); + parser.registerHandlers(_containerInitializerAnnotationHandlers); + + parser.parse(bundle,createClassNameResolver(context)); } /** |