public boolean foundInJar(Bundle bundle, String jarName, ZipEntry entry, InputStream in) throws Exception { readClassDef(in, jarName); return true; } }
/** * Returns a list of any classes annotated with @WebService or * @WebServiceProvider annotation. */ private List<Class<?>> discoverWebServices(Bundle bundle) throws DeploymentException { logger.debug("Discovering web service classes"); ServiceReference sr = bundle.getBundleContext().getServiceReference(PackageAdmin.class.getName()); PackageAdmin packageAdmin = (PackageAdmin) bundle.getBundleContext().getService(sr); try { BundleAnnotationFinder classFinder = new BundleAnnotationFinder(packageAdmin, bundle); List<Class<?>> classes = new ArrayList<Class<?>>(); classes.addAll(classFinder.findAnnotatedClasses(WebService.class)); classes.addAll(classFinder.findAnnotatedClasses(WebServiceProvider.class)); return classes; } catch (Exception e) { throw new DeploymentException("Error scanning for web service annotations in bundle", e); } finally { bundle.getBundleContext().ungetService(sr); } }
BundleAnnotationFinder bundleAnnotationFinder = new BundleAnnotationFinder(packageAdmin, bundle, new ResourceDiscoveryFilter() { members.addAll(bundleAnnotationFinder.findAnnotatedMethods(annotationClass)); members.addAll(bundleAnnotationFinder.findAnnotatedFields(annotationClass));
bundleAnnotationFinder = new BundleAnnotationFinder(packageAdmin, bundle, filter, beanArchiveJarNames); } else { ResourceDiscoveryFilter filter = new ResourceDiscoveryFilter() { bundleAnnotationFinder = new BundleAnnotationFinder(packageAdmin, bundle, filter, beanArchiveJarNames); bundleAnnotationFinder.link(); return bundleAnnotationFinder;
classFinder = new BundleAnnotationFinder(packageAdmin, bundle); } catch (Exception e) { throw new DeploymentException("could not create class finder for rar bundle " + bundle, e);
private Connector mergeMetadata(Bundle bundle, BundleAnnotationFinder classFinder, Connector connector) throws DeploymentException { Class<? extends ResourceAdapter> raClass = null; if (connector == null) { List<Class<?>> resourceAdapterClasses = classFinder.findAnnotatedClasses(javax.resource.spi.Connector.class); if (resourceAdapterClasses.size() != 1) { throw new DeploymentException("Not exactly one resource adapter: " + resourceAdapterClasses); List<Class<?>> activationSpecClasses = classFinder.findAnnotatedClasses(Activation.class); for (Class adminObjectClass : classFinder.findAnnotatedClasses(AdministeredObject.class)) { AdministeredObject administeredObject = (AdministeredObject) adminObjectClass.getAnnotation(AdministeredObject.class); Class[] interfaces = administeredObject.adminObjectInterfaces(); for (Class<?> mcfClass : classFinder.findAnnotatedClasses(javax.resource.spi.ConnectionDefinition.class)) { javax.resource.spi.ConnectionDefinition connectionDefinitionAnnotation = mcfClass.getAnnotation(javax.resource.spi.ConnectionDefinition.class); buildConnectionDefinition(mcfClass.asSubclass(ManagedConnectionFactory.class), connectionDefinitionAnnotation, outboundResourceAdapter); for (Class<?> mcfClass : classFinder.findAnnotatedClasses(ConnectionDefinitions.class)) { ConnectionDefinitions connectionDefinitionAnnotations = mcfClass.getAnnotation(ConnectionDefinitions.class); for (javax.resource.spi.ConnectionDefinition connectionDefinitionAnnotation : connectionDefinitionAnnotations.value()) {
BundleAnnotationFinder bundleAnnotationFinder = new BundleAnnotationFinder(packageAdmin, bundle, new ResourceDiscoveryFilter() { annotationClassSetMap.put(FacesComponent.class, new HashSet<Class<?>>(bundleAnnotationFinder.findAnnotatedClasses(FacesComponent.class))); annotationClassSetMap.put(FacesConverter.class, new HashSet<Class<?>>(bundleAnnotationFinder.findAnnotatedClasses(FacesConverter.class))); annotationClassSetMap.put(FacesValidator.class, new HashSet<Class<?>>(bundleAnnotationFinder.findAnnotatedClasses(FacesValidator.class))); annotationClassSetMap.put(FacesRenderer.class, new HashSet<Class<?>>(bundleAnnotationFinder.findAnnotatedClasses(FacesRenderer.class))); annotationClassSetMap.put(javax.faces.bean.ManagedBean.class, new HashSet<Class<?>>(bundleAnnotationFinder.findAnnotatedClasses(javax.faces.bean.ManagedBean.class))); annotationClassSetMap.put(NamedEvent.class, new HashSet<Class<?>>(bundleAnnotationFinder.findAnnotatedClasses(NamedEvent.class))); annotationClassSetMap.put(FacesBehavior.class, new HashSet<Class<?>>(bundleAnnotationFinder.findAnnotatedClasses(FacesBehavior.class))); annotationClassSetMap.put(FacesBehaviorRenderer.class, new HashSet<Class<?>>(bundleAnnotationFinder.findAnnotatedClasses(FacesBehaviorRenderer.class))); return new AnnotationConfigurator() {
@SuppressWarnings("unchecked") public static void mergeAnnotations(Bundle bundle, WebApp webApp, MergeContext mergeContext, final String prefix) throws DeploymentException { final boolean isJarFile = prefix.endsWith(".jar"); try { BundleAnnotationFinder bundleAnnotationFinder = new BundleAnnotationFinder(null, bundle, new ResourceDiscoveryFilter() { @Override public boolean directoryDiscoveryRequired(String url) { return !isJarFile; } @Override public boolean rangeDiscoveryRequired(DiscoveryRange discoveryRange) { return discoveryRange.equals(DiscoveryRange.BUNDLE_CLASSPATH); } @Override public boolean zipFileDiscoveryRequired(String url) { return isJarFile ? url.equals(prefix) : false; } }); List<Class<?>> webServlets = bundleAnnotationFinder.findAnnotatedClasses(WebServlet.class); WEB_SERVLET_ANNOTATION_MERGE_HANDLER.merge(webServlets.toArray(new Class<?>[0]), webApp, mergeContext); List<Class<?>> webFilters = bundleAnnotationFinder.findAnnotatedClasses(WebFilter.class); WEB_FILTER_ANNOTATION_MERGE_HANDLER.merge(webFilters.toArray(new Class<?>[0]), webApp, mergeContext); List<Class<?>> webListeners = bundleAnnotationFinder.findAnnotatedClasses(WebListener.class); WEB_LISTENER_ANNOTATION_MERGE_HANDLER.merge(webListeners.toArray(new Class<?>[0]), webApp, mergeContext); } catch (Exception e) { throw new DeploymentException("Fail to merge annotations in " + prefix, e); } }
public boolean foundInJar(Bundle bundle, String jarName, ZipEntry entry, InputStream in) throws Exception { readClassDef(in, jarName); return true; } }
private void servletAnnotationScan(final Bundle bundle, final WebApp webApp) throws Exception { LOG.debug("metadata-complete is either false or not set"); LOG.debug("scanning for annotated classes"); BundleAnnotationFinder baf = new BundleAnnotationFinder(packageAdmin.getService(), bundle); Set<Class<?>> webServletClasses = new LinkedHashSet<>(baf.findAnnotatedClasses(WebServlet.class)); Set<Class<?>> webFilterClasses = new LinkedHashSet<>(baf.findAnnotatedClasses(WebFilter.class)); Set<Class<?>> webListenerClasses = new LinkedHashSet<>(baf.findAnnotatedClasses(WebListener.class)); for (Class<?> webServletClass : webServletClasses) { LOG.debug("found WebServlet annotation on class: {}", webServletClass); WebServletAnnotationConfigurer annonScanner = new WebServletAnnotationConfigurer(bundle, webServletClass.getCanonicalName()); annonScanner.scan(webApp); } for (Class<?> webFilterClass : webFilterClasses) { LOG.debug("found WebFilter annotation on class: {}", webFilterClass); WebFilterAnnotationConfigurer filterScanner = new WebFilterAnnotationConfigurer(bundle, webFilterClass.getCanonicalName()); filterScanner.scan(webApp); } for (Class<?> webListenerClass : webListenerClasses) { LOG.debug("found WebListener annotation on class: {}", webListenerClass); addWebListener(webApp, webListenerClass.getCanonicalName()); } LOG.debug("class scanning done"); }
public boolean foundInJar(Bundle bundle, String jarName, ZipEntry entry, InputStream in) throws Exception { readClassDef(in, jarName); return true; } }
BundleAnnotationFinder baf = new BundleAnnotationFinder( packageAdminService, bundle); List<Class<?>> annotatedClasses = baf .findAnnotatedClasses((Class<? extends Annotation>) klass); setOfClasses.addAll(annotatedClasses); } catch (Exception e) {
public boolean foundInDirectory(Bundle bundle, String baseDir, URL url) throws Exception { InputStream in = url.openStream(); try { readClassDef(in, baseDir); } finally { in.close(); } return true; }
BundleAnnotationFinder baf = new BundleAnnotationFinder( packageAdminService, bundle); List<Class<?>> annotatedClasses = baf .findAnnotatedClasses((Class<? extends Annotation>) klass); setOfClasses.addAll(annotatedClasses); } catch (Exception e) {
public boolean foundInDirectory(Bundle bundle, String baseDir, URL url) throws Exception { InputStream in = url.openStream(); try { readClassDef(in, baseDir); } finally { in.close(); } return true; }
public boolean foundInDirectory(Bundle bundle, String baseDir, URL url) throws Exception { InputStream in = url.openStream(); try { readClassDef(in, baseDir); } finally { in.close(); } return true; }