public synchronized Collection<EjbDescriptorImpl<?>> getEjbs() { if (ejbs == null) { ejbs = classpathEntry.annotatedWith(Singleton.class, Stateless.class, Stateful.class).stream() .map(this::toEjbDescriptor) .collect(Collectors.toSet()); } return ejbs; }
private SessionType getSessionType(final Class<?> clazz) { if (clazz.isAnnotationPresent(Stateful.class)) { return SessionType.STATEFUL; } if (clazz.isAnnotationPresent(Stateless.class)) { return SessionType.STATELESS; } if (clazz.isAnnotationPresent(Singleton.class)) { return SessionType.SINGLETON; } if (clazz.isAnnotationPresent(ManagedBean.class)) { return SessionType.MANAGED; } return null; }
@Override public boolean isStateful() { return getBeanClass().getAnnotation(Stateful.class) != null; }
private String getEjbName(final Stateful stateful, final Class<?> beanClass) { return stateful.name().isEmpty() ? beanClass.getSimpleName() : stateful.name(); }
private boolean isValidEjbAnnotationUsage(final Class annotationClass, final Annotated<Class<?>> beanClass, final String ejbName, final EjbModule ejbModule) { final List<Class<? extends Annotation>> annotations = new ArrayList(Arrays.asList(Singleton.class, Stateless.class, Stateful.class, MessageDriven.class)); annotations.remove(annotationClass); final boolean b = true; for (final Class<? extends Annotation> secondAnnotation : annotations) { final Annotation annotation = beanClass.getAnnotation(secondAnnotation); if (annotation == null) { continue; } String secondEjbName = null; if (annotation instanceof Stateful) { secondEjbName = getEjbName((Stateful) annotation, beanClass.get()); } else if (annotation instanceof Stateless) { secondEjbName = getEjbName((Stateless) annotation, beanClass.get()); } else if (annotation instanceof Singleton) { secondEjbName = getEjbName((Singleton) annotation, beanClass.get()); } else if (annotation instanceof MessageDriven) { secondEjbName = getEjbName((MessageDriven) annotation, beanClass.get()); } if (ejbName.equals(secondEjbName)) { ejbModule.getValidation().fail(ejbName, "multiplyAnnotatedAsBean", annotationClass.getSimpleName(), secondAnnotation.getSimpleName(), ejbName, beanClass.get().getName()); } } if (beanClass.get().isInterface()) { if (!CheckClasses.isAbstractAllowed(beanClass.get())) { ejbModule.getValidation().fail(ejbName, "interfaceAnnotatedAsBean", annotationClass.getSimpleName(), beanClass.get().getName()); return false; } } else if (Modifier.isAbstract(beanClass.get().getModifiers())) { if (!CheckClasses.isAbstractAllowed(beanClass.get())) { ejbModule.getValidation().fail(ejbName, "abstractAnnotatedAsBean", annotationClass.getSimpleName(), beanClass.get().getName()); return false; } } return b; }
private static boolean isEJB(final Class<?> clazz) { return clazz.isAnnotationPresent(Stateless.class) || clazz.isAnnotationPresent(Singleton.class) || clazz.isAnnotationPresent(ManagedBean.class) // what a weird idea! || clazz.isAnnotationPresent(Stateful.class); // what another weird idea! }