protected ClassFinder createOpenWebBeansClassFinder(WebApp webApp, WebModule webModule) throws DeploymentException { List<Class<?>> classes = getManagedClasses(webApp, webModule); return new ClassFinder(classes); }
public static void addWebServiceContextInjections(Holder holder, Class<?> clazz) { List<Class<?>> classes = new ArrayList<Class<?>>(); while (clazz != Object.class) { classes.add(clazz); clazz = clazz.getSuperclass(); } addWebServiceContextInjections(holder, new ClassFinder(classes)); }
public ApplicationComposers(final Class<?> klass, final Object... additionalModules) { testClass = klass; testClassFinders = new HashMap<Object, ClassFinder>(); testClassFinders.put(this, new ClassFinder(ancestors(klass))); // using this temporary since we don't have yet the instance if (additionalModules != null) { for (final Object o : additionalModules) { testClassFinders.put(o, new ClassFinder(ancestors(o.getClass()))); } } validate(); }
private List<Method> retrieveAroundInvokes(final Class<?> interceptorClass) { final List<Method> cached = this.interceptorCache.get(interceptorClass); if (cached != null) { return cached; } final ClassFinder finder = new ClassFinder(interceptorClass); List<Method> annotated = finder.findAnnotatedMethods(AroundInvoke.class); if (StatelessContainer.class.getClassLoader() == interceptorClass.getClassLoader()) { // use cache only for server classes final List<Method> value = new CopyOnWriteArrayList<Method>(annotated); annotated = this.interceptorCache.putIfAbsent(interceptorClass, annotated); // ensure it to be thread safe if (annotated == null) { annotated = value; } } return annotated; }
private List<Method> retrieveAroundInvokes(final Class<?> interceptorClass) { final List<Method> cached = this.interceptorCache.get(interceptorClass); if (cached != null) { return cached; } final ClassFinder finder = new ClassFinder(interceptorClass); List<Method> annotated = finder.findAnnotatedMethods(AroundInvoke.class); if (StatelessContainer.class.getClassLoader() == interceptorClass.getClassLoader()) { // use cache only for server classes final List<Method> value = new CopyOnWriteArrayList<Method>(annotated); annotated = this.interceptorCache.putIfAbsent(interceptorClass, annotated); // ensure it to be thread safe if (annotated == null) { annotated = value; } } return annotated; } }
public StatsInterceptor(final Class<?> componentClass) { monitor = componentClass.getAnnotation(Monitor.class); final ClassFinder finder = new ClassFinder(componentClass); for (final Method method : finder.findAnnotatedMethods(Monitor.class)) { map.put(method, new Stats(method, monitor)); } enabled = monitor != null || map.size() > 0; }
private ClassFinder createFinder(String classloaderType) throws Exception { ClassFinder finder; if ("project".equals(classloaderType)) { List<URL> urls = new ArrayList<>(); for (Object object : project.getCompileClasspathElements()) { String path = (String) object; urls.add(new File(path).toURI().toURL()); } ClassLoader loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), getClass().getClassLoader()); finder = new ClassFinder(loader, urls); } else if ("plugin".equals(classLoader)) { finder = new ClassFinder(getClass().getClassLoader()); } else { throw new MojoFailureException("classLoader attribute must be 'project' or 'plugin'"); } return finder; }
/** * Creates a list of the specified class and all its parent * classes then creates a ClassFinder from that list which * can be used for easy annotation scanning. * * @param classes * @return */ private ClassFinder createInheritedClassFinder(Class<?>... classes) { List<Class> parents = new ArrayList<Class>(); for (Class<?> clazz : classes) { parents.addAll(ancestors(clazz)); } return new ClassFinder(parents); }
public StatsInterceptor(final Class<?> componentClass) { monitor = componentClass.getAnnotation(Monitor.class); final ClassFinder finder = new ClassFinder(componentClass); for (final Method method : finder.findAnnotatedMethods(Monitor.class)) { map.put(method, new Stats(method, monitor)); } enabled = monitor != null || map.size() > 0; }
private ClassFinder createFinder(String classloaderType) throws Exception { ClassFinder finder; if ("project".equals(classloaderType)) { List<URL> urls = new ArrayList<>(); for (Object object : project.getCompileClasspathElements()) { String path = (String) object; urls.add(new File(path).toURI().toURL()); } ClassLoader loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), getClass().getClassLoader()); finder = new ClassFinder(loader, urls); } else if ("plugin".equals(classLoader)) { finder = new ClassFinder(getClass().getClassLoader()); } else { throw new MojoFailureException("classLoader attribute must be 'project' or 'plugin'"); } return finder; }
protected ClassFinder createMyFacesClassFinder(List<FacesConfig> facesConfigs, Bundle bundle) throws DeploymentException { List<Class<?>> managedBeanClasses = new ArrayList<Class<?>>(); for (FacesConfig facesConfig : facesConfigs) { for (ManagedBean managedBean : facesConfig.getManagedBeans()) { String className = managedBean.getManagedBeanClassName().trim(); Class<?> clas; try { clas = bundle.loadClass(className); while (clas != null) { managedBeanClasses.add(clas); clas = clas.getSuperclass(); } } catch (ClassNotFoundException e) { log.warn("MyFacesModuleBuilderExtension: Could not load managed bean class: " + className); } } } return new ClassFinder(managedBeanClasses); }
public ApplicationComposers(final Class<?> klass, final Object... additionalModules) { testClass = klass; testClassFinders = new HashMap<>(); testClassFinders.put(this, new ClassFinder(ancestors(klass))); // using this temporary since we don't have yet the instance if (additionalModules != null) { for (final Object o : additionalModules) { final Class<?> aClass = o.getClass(); if (aClass != klass) { testClassFinders.put(o, new ClassFinder(ancestors(aClass))); } } } validate(); assembler = SystemInstance.get().getComponent(Assembler.class); // for DeployApplicationRule we need it }
private void checkSessionSynchronization(final Class ejbClass, final SessionBean bean) { if (SessionSynchronization.class.isAssignableFrom(ejbClass)) { if (bean.getAfterBeginMethod() != null || bean.getBeforeCompletionMethod() != null || bean.getAfterCompletionMethod() != null) { fail(bean, "callback.sessionSynchronization.invalidUse", ejbClass.getName()); } else { final ClassFinder classFinder = new ClassFinder(ejbClass); if (classFinder.findAnnotatedMethods(AfterBegin.class).size() > 0 || classFinder.findAnnotatedMethods(BeforeCompletion.class).size() > 0 || classFinder.findAnnotatedMethods(AfterCompletion.class).size() > 0) { fail(bean, "callback.sessionSynchronization.invalidUse", ejbClass.getName()); } } } }
private void checkSessionSynchronization(final Class ejbClass, final SessionBean bean) { if (SessionSynchronization.class.isAssignableFrom(ejbClass)) { if (bean.getAfterBeginMethod() != null || bean.getBeforeCompletionMethod() != null || bean.getAfterCompletionMethod() != null) { fail(bean, "callback.sessionSynchronization.invalidUse", ejbClass.getName()); } else { final ClassFinder classFinder = new ClassFinder(ejbClass); if (classFinder.findAnnotatedMethods(AfterBegin.class).size() > 0 || classFinder.findAnnotatedMethods(BeforeCompletion.class).size() > 0 || classFinder.findAnnotatedMethods(AfterCompletion.class).size() > 0) { fail(bean, "callback.sessionSynchronization.invalidUse", ejbClass.getName()); } } } }
protected final void processSetterInjections() { Object home = null; ClassFinder finder = null; List<Method> methodList = null; finder = new ClassFinder(getClassPath()); methodList = finder.findAnnotatedMethods(EJB.class); for(Iterator methods = methodList.iterator(); methods.hasNext();) { Method method = (Method) methods.next(); EJB ejbAnnotation = method.getAnnotation(EJB.class); if( (ejbAnnotation.name() != null) && (ejbAnnotation.name() != "") && (ejbAnnotation.beanInterface() != null)) { try { home = initialContext.lookup(ejbAnnotation.name()); // home = ejbAnnotation.beanInterface().cast(PortableRemoteObject.narrow(home, ejbAnnotation.beanInterface())); home = cast(home, ejbAnnotation.beanInterface()); method.setAccessible(true); method.invoke(this, new Object[] {home}); } catch(Exception ex) { // TODO - MNour : Needs better exception handling ex.printStackTrace(); } } } }
private void checkInterface(RemoteBean b, Class<?> beanClass, String tag, String className) { Class<?> interfce = lookForClass(className, tag, b.getEjbName()); if (interfce == null) return; check_hasDependentClasses(b, className, tag); tag = Strings.lcfirst(Strings.camelCase(tag)); if (isValidInterface(b, interfce, beanClass, tag)); ClassFinder finder = new ClassFinder(interfce); for (Class<? extends Annotation> annotation : beanOnlyAnnotations) { if (interfce.isAnnotationPresent(annotation)){ warn(b, "interface.beanOnlyAnnotation", annotation.getSimpleName(), interfce.getName(), b.getEjbClass()); } for (Method method : finder.findAnnotatedMethods(annotation)) { warn(b, "interfaceMethod.beanOnlyAnnotation", annotation.getSimpleName(), interfce.getName(), method.getName(), b.getEjbClass()); } } }
private void scan(Object managed, String prefix) { ClassFinder finder = new ClassFinder(managed.getClass()); List<Field> fields = finder.findAnnotatedFields(Managed.class); for (Field field : fields) { scan(new FieldMember(field, managed, prefix)); } List<Method> methods = finder.findAnnotatedMethods(Managed.class); for (Method method : methods) { scan(new MethodMember(method, managed, prefix)); } }
private void checkInterface(final RemoteBean b, final Class<?> beanClass, String tag, final String className) { final Class<?> interfce = lookForClass(className, tag, b.getEjbName()); if (interfce == null) { return; } check_hasDependentClasses(b, className, tag); tag = Strings.lcfirst(Strings.camelCase(tag)); isValidInterface(b, interfce, beanClass, tag); final ClassFinder finder = new ClassFinder(interfce); for (final Class<? extends Annotation> annotation : beanOnlyAnnotations) { if (interfce.isAnnotationPresent(annotation)) { warn(b, "interface.beanOnlyAnnotation", annotation.getSimpleName(), interfce.getName(), b.getEjbClass()); } for (final Method method : finder.findAnnotatedMethods(annotation)) { warn(b, "interfaceMethod.beanOnlyAnnotation", annotation.getSimpleName(), interfce.getName(), method.getName(), b.getEjbClass()); } } }
private void checkInterface(final ClassLoader loader, final RemoteBean b, final Class<?> beanClass, String tag, final String className) { final Class<?> interfce = lookForClass(loader, className, tag, b.getEjbName()); if (interfce == null) { return; } check_hasDependentClasses(b, className, tag); tag = Strings.lcfirst(Strings.camelCase(tag)); isValidInterface(b, interfce, beanClass, tag); final ClassFinder finder = new ClassFinder(interfce); for (final Class<? extends Annotation> annotation : beanOnlyAnnotations) { if (interfce.isAnnotationPresent(annotation)) { warn(b, "interface.beanOnlyAnnotation", annotation.getSimpleName(), interfce.getName(), b.getEjbClass()); } for (final Method method : finder.findAnnotatedMethods(annotation)) { warn(b, "interfaceMethod.beanOnlyAnnotation", annotation.getSimpleName(), interfce.getName(), method.getName(), b.getEjbClass()); } } }
private void scan(final Object target, final String prefix) { final ClassFinder finder = new ClassFinder(Classes.ancestors(target.getClass())); final List<Field> fields = finder.findAnnotatedFields(Managed.class); for (final Field field : fields) { attribute(new FieldMember(field, target, prefix)); } final List<Method> managed = finder.findAnnotatedMethods(Managed.class); for (final Method method : managed) { final MethodMember member = new MethodMember(method, target, prefix); if (!method.getName().matches("(get|is)([A-Z_].*|)")) { operationsMap.put(member.getName(), member); } else { attribute(new MethodMember(method, target, prefix)); } } final List<Method> collections = finder.findAnnotatedMethods(ManagedCollection.class); for (final Method method : collections) { dynamic.add(new MethodMember(method, target, prefix)); } }