"alesj" wrote :
| So, someone needs to explain me now what is the logic behind JEE annotations and how
the modules are marked.
| e.g. what annotations mark some type (OK, I know the EJB3 one's, but have no clue
about the others)
OK, I've added this mock kind of type matching.
It will do :-), since it's not really about what you return, it's about how you do
it - via annotations scanning.
| private Integer determineType(VirtualFile archive)
| {
| ClassLoader classLoader = getClass().getClassLoader();
| GenericAnnotationResourceVisitor visitor = new
GenericAnnotationResourceVisitor(classLoader);
| ClassFilter included = null;
| ClassFilter excluded = null;
| ResourceFilter filter =
org.jboss.classloading.spi.visitor.ClassFilter.INSTANCE;
| VFSResourceVisitor.visit(new VirtualFile[]{archive}, included, excluded,
classLoader, visitor, filter);
| AnnotationEnvironment env = visitor.getEnv();
|
| Integer ejbs = getType(env, Stateless.class, J2eeModuleMetaData.EJB);
| if (ejbs != null)
| {
| // check some conflicts - e.g. no @Servlet, ...?
| return ejbs;
| }
|
| Integer services = getType(env, Service.class, J2eeModuleMetaData.SERVICE);
| if (services != null)
| {
| // check some conflicts - e.g. no @Servlet, ...?
| return services;
| }
|
| Integer appc = getType(env, AppClient.class, J2eeModuleMetaData.CLIENT);
| if (appc != null)
| {
| // check some conflicts - e.g. no @Servlet, ...?
| return appc;
| }
|
| Integer wars = getType(env, Servlet.class, J2eeModuleMetaData.WEB);
| if (wars != null)
| return wars;
|
| return null;
| }
|
| private Integer getType(AnnotationEnvironment env, Class<? extends
Annotation> annotation, int type)
| {
| Set<Class<?>> classes = env.classIsAnnotatedWith(annotation);
| return (classes != null && classes.isEmpty() == false) ? type : null;
| }
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4152929#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...