Opt:
| public class OptAnnotationMetaDataDeployer extends AnnotationMetaDataDeployer
| {
| public OptAnnotationMetaDataDeployer()
| {
| super();
| setInput(AnnotationEnvironment.class);
| }
|
| protected void processMetaData(VFSDeploymentUnit unit, WebMetaData webMetaData,
ApplicationClientMetaData clientMetaData, List<VirtualFile> classpath) throws
Exception
| {
| AnnotationFinder<AnnotatedElement> finder = new
DefaultAnnotationFinder<AnnotatedElement>();
| if(webMetaData != null)
| {
| processJBossWebMetaData(unit, finder);
| }
| else
| {
| if (clientMetaData != null)
| {
| processJBossClientMetaData(unit, finder);
| }
| else
| {
| String mainClassName = getMainClassName(unit);
| if (mainClassName != null)
| {
| processJBossClientMetaData(unit, finder);
| }
| else
| {
| processJBossMetaData(unit, finder);
| }
| }
| }
| }
|
| /**
| * Process jboss web meta data.
| *
| * @param unit the deployment unit
| * @param finder the finder
| */
| protected void processJBossWebMetaData(VFSDeploymentUnit unit,
AnnotationFinder<AnnotatedElement> finder)
| {
| Web25MetaDataCreator creator = new Web25MetaDataCreator(finder);
| Collection<Class<?>> classes = getClasses(unit, creator);
| WebMetaData annotationMetaData = creator.create(classes);
| if(annotationMetaData != null)
| unit.addAttachment(WEB_ANNOTATED_ATTACHMENT_NAME, annotationMetaData,
WebMetaData.class);
| }
|
| /**
| * Process jboss app client meta data.
| *
| * @param unit the deployment unit
| * @param finder the finder
| */
| protected void processJBossClientMetaData(VFSDeploymentUnit unit,
AnnotationFinder<AnnotatedElement> finder)
| {
| ApplicationClient5MetaDataCreator creator = new
ApplicationClient5MetaDataCreator(finder);
| Collection<Class<?>> classes = getClasses(unit, creator);
| ApplicationClientMetaData annotationMetaData = creator.create(classes);
| if(annotationMetaData != null)
| unit.addAttachment(CLIENT_ANNOTATED_ATTACHMENT_NAME, annotationMetaData,
ApplicationClientMetaData.class);
| }
|
| /**
| * Process jboss meta data.
| *
| * @param unit the deployment unit
| * @param finder the finder
| */
| protected void processJBossMetaData(VFSDeploymentUnit unit,
AnnotationFinder<AnnotatedElement> finder)
| {
| // Create the metadata model from the annotations
| JBoss50Creator creator = new JBoss50Creator(finder);
| Collection<Class<?>> classes = getClasses(unit, creator);
| JBossMetaData annotationMetaData = creator.create(classes);
| if(annotationMetaData != null)
| unit.addAttachment(EJB_ANNOTATED_ATTACHMENT_NAME, annotationMetaData,
JBossMetaData.class);
| }
|
| /**
| * Get the classes for creator to process.
| *
| * @param unit the deployment unit
| * @param creator the creator
| * @return classes to process
| */
| @SuppressWarnings("unchecked")
| protected Collection<Class<?>> getClasses(VFSDeploymentUnit unit,
AbstractCreator creator)
| {
| boolean trace = log.isTraceEnabled();
|
| AnnotationEnvironment env = unit.getAttachment(AnnotationEnvironment.class);
| if (env == null)
| {
| if (trace)
| log.trace("Cannot scan classes, missing AnnotationEnvironment as
attachment: " + unit.getName());
|
| return Collections.emptySet();
| }
|
| String creatorInfo = creator.toString();
| AnnotationContext context = creator.getAnnotationContext();
| Set<Class<?>> classes = new HashSet<Class<?>>();
|
| Collection<Class<? extends Annotation>> typeAnnotations =
context.getTypeAnnotations();
| if (trace)
| log.trace("Creator: " + creatorInfo + ", type annotations:
" + typeAnnotations);
| for(Class<? extends Annotation> annotation : typeAnnotations)
| {
| Class<Annotation> annotationClass =
(Class<Annotation>)annotation;
| Set<Element<Annotation, Class<?>>> elements =
env.classIsAnnotatedWith(annotationClass);
| for(Element<Annotation, Class<?>> elt : elements)
| classes.add(elt.getOwner());
| }
|
| Collection<Class<? extends Annotation>> methodAnnotations =
context.getMethodAnnotations();
| if (trace)
| log.trace("Creator: " + creatorInfo + ", method annotations:
" + methodAnnotations);
| for(Class<? extends Annotation> annotation : methodAnnotations)
| {
| Class<Annotation> annotationClass =
(Class<Annotation>)annotation;
| Set<Element<Annotation, Method>> elements =
env.classHasMethodAnnotatedWith(annotationClass);
| for(Element<Annotation, Method> elt : elements)
| classes.add(elt.getOwner());
| }
|
| Collection<Class<? extends Annotation>> fieldAnnotations =
context.getFieldAnnotations();
| if (trace)
| log.trace("Creator: " + creatorInfo + ", field annotations:
" + fieldAnnotations);
| for(Class<? extends Annotation> annotation : fieldAnnotations)
| {
| Class<Annotation> annotationClass =
(Class<Annotation>)annotation;
| Set<Element<Annotation, Field>> elements =
env.classHasFieldAnnotatedWith(annotationClass);
| for(Element<Annotation, Field> elt : elements)
| classes.add(elt.getOwner());
| }
|
| if (trace)
| log.trace("Annotated classes [" + unit.getName() + ", " +
creatorInfo + "]: " + classes);
|
| return classes;
| }
| }
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4167717#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...