Package org.jboss.deployment

Source Code of org.jboss.deployment.AnnotationMetaDataDeployer

/*     */ package org.jboss.deployment;
/*     */
/*     */ import java.io.IOException;
/*     */ import java.lang.reflect.AnnotatedElement;
/*     */ import java.util.HashMap;
/*     */ import java.util.List;
/*     */ import java.util.Map;
/*     */ import org.jboss.deployers.spi.DeploymentException;
/*     */ import org.jboss.deployers.spi.deployer.DeploymentStages;
/*     */ import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
/*     */ import org.jboss.deployers.structure.spi.DeploymentUnit;
/*     */ import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
/*     */ import org.jboss.logging.Logger;
/*     */ import org.jboss.metadata.annotation.creator.client.ApplicationClient5MetaDataCreator;
/*     */ import org.jboss.metadata.annotation.creator.ejb.EjbJar30Creator;
/*     */ import org.jboss.metadata.annotation.creator.web.Web25MetaDataCreator;
/*     */ import org.jboss.metadata.annotation.finder.AnnotationFinder;
/*     */ import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
/*     */ import org.jboss.metadata.client.jboss.JBossClientMetaData;
/*     */ import org.jboss.metadata.client.spec.ApplicationClient5MetaData;
/*     */ import org.jboss.metadata.client.spec.ApplicationClientMetaData;
/*     */ import org.jboss.metadata.ejb.jboss.JBossMetaData;
/*     */ import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
/*     */ import org.jboss.metadata.ejb.spec.EjbJarMetaData;
/*     */ import org.jboss.metadata.web.jboss.JBossWebMetaData;
/*     */ import org.jboss.metadata.web.spec.Web25MetaData;
/*     */ import org.jboss.metadata.web.spec.WebMetaData;
/*     */ import org.jboss.virtual.VirtualFile;
/*     */
/*     */ public class AnnotationMetaDataDeployer extends AbstractDeployer
/*     */ {
/*  60 */   public static final String EJB_ANNOTATED_ATTACHMENT_NAME = "annotated." + EjbJarMetaData.class.getName();
/*  61 */   public static final String CLIENT_ANNOTATED_ATTACHMENT_NAME = "annotated." + ApplicationClientMetaData.class.getName();
/*  62 */   public static final String WEB_ANNOTATED_ATTACHMENT_NAME = "annotated." + WebMetaData.class.getName();
/*     */
/*  64 */   private boolean metaDataCompleteIsDefault = true;
/*     */
/*     */   public AnnotationMetaDataDeployer()
/*     */   {
/*  68 */     setStage(DeploymentStages.POST_CLASSLOADER);
/*  69 */     addOutput(EJB_ANNOTATED_ATTACHMENT_NAME);
/*  70 */     addOutput(CLIENT_ANNOTATED_ATTACHMENT_NAME);
/*  71 */     addOutput(WEB_ANNOTATED_ATTACHMENT_NAME);
/*     */   }
/*     */
/*     */   public boolean isMetaDataCompleteIsDefault()
/*     */   {
/*  77 */     return this.metaDataCompleteIsDefault;
/*     */   }
/*     */
/*     */   public void setMetaDataCompleteIsDefault(boolean metaDataCompleteIsDefault) {
/*  81 */     this.metaDataCompleteIsDefault = metaDataCompleteIsDefault;
/*     */   }
/*     */
/*     */   public void deploy(DeploymentUnit unit) throws DeploymentException
/*     */   {
/*  86 */     if (!(unit instanceof VFSDeploymentUnit)) {
/*  87 */       return;
/*     */     }
/*  89 */     VFSDeploymentUnit vfsDeploymentUnit = (VFSDeploymentUnit)unit;
/*  90 */     deploy(vfsDeploymentUnit);
/*     */   }
/*     */
/*     */   public void undeploy(DeploymentUnit unit)
/*     */   {
/*  95 */     if (!(unit instanceof VFSDeploymentUnit)) {
/*  96 */       return;
/*     */     }
/*  98 */     VFSDeploymentUnit vfsDeploymentUnit = (VFSDeploymentUnit)unit;
/*  99 */     undeploy(vfsDeploymentUnit);
/*     */   }
/*     */
/*     */   protected void deploy(VFSDeploymentUnit unit)
/*     */     throws DeploymentException
/*     */   {
/* 112 */     boolean isComplete = this.metaDataCompleteIsDefault;
/* 113 */     JBossMetaData jbossMetaData = (JBossMetaData)unit.getAttachment(JBossMetaData.class);
/* 114 */     if (jbossMetaData != null)
/* 115 */       isComplete &= jbossMetaData.isMetadataComplete();
/* 116 */     JBossWebMetaData jbossWebMetaData = (JBossWebMetaData)unit.getAttachment(JBossWebMetaData.class);
/* 117 */     if (jbossWebMetaData != null)
/* 118 */       isComplete &= jbossWebMetaData.isMetadataComplete();
/* 119 */     JBossClientMetaData jbossClientMetaData = (JBossClientMetaData)unit.getAttachment(JBossClientMetaData.class);
/* 120 */     if (jbossClientMetaData != null)
/* 121 */       isComplete &= jbossClientMetaData.isMetadataComplete();
/* 122 */     if (isComplete) {
/* 123 */       return;
/*     */     }
/* 125 */     VirtualFile root = unit.getRoot();
/* 126 */     boolean isLeaf = true;
/*     */     try
/*     */     {
/* 129 */       isLeaf = root.isLeaf();
/*     */     }
/*     */     catch (IOException ignore)
/*     */     {
/*     */     }
/* 134 */     if (isLeaf == true) {
/* 135 */       return;
/*     */     }
/* 137 */     ClassLoader loader = unit.getClassLoader();
/* 138 */     List classpath = unit.getClassPath();
/* 139 */     if (classpath == null) {
/* 140 */       return;
/*     */     }
/*     */     try
/*     */     {
/* 144 */       Map classpathClasses = new HashMap();
/* 145 */       for (VirtualFile path : classpath)
/*     */       {
/* 147 */         AnnotatedClassFilter classVisitor = new AnnotatedClassFilter(unit, loader, path);
/* 148 */         path.visit(classVisitor);
/* 149 */         Map classes = classVisitor.getAnnotatedClasses();
/* 150 */         if ((classes != null) && (classes.size() > 0))
/*     */         {
/* 152 */           this.log.info("Annotated classes: " + classes);
/* 153 */           classpathClasses.putAll(classes);
/*     */         }
/*     */       }
/*     */
/* 157 */       if (classpathClasses.size() > 0)
/*     */       {
/* 159 */         AnnotationFinder finder = new DefaultAnnotationFinder();
/* 160 */         if (jbossWebMetaData != null)
/* 161 */           processJBossWebMetaData(unit, finder, classpathClasses);
/* 162 */         else if (jbossClientMetaData != null)
/* 163 */           processJBossClientMetaData(unit, finder, classpathClasses);
/*     */         else
/* 165 */           processJBossMetaData(unit, finder, classpathClasses);
/*     */       }
/*     */     }
/*     */     catch (IOException e)
/*     */     {
/* 170 */       throw new DeploymentException(e);
/*     */     }
/*     */   }
/*     */
/*     */   protected void undeploy(VFSDeploymentUnit unit)
/*     */   {
/*     */   }
/*     */
/*     */   protected void processJBossMetaData(VFSDeploymentUnit unit, AnnotationFinder<AnnotatedElement> finder, Map<VirtualFile, Class<?>> classes)
/*     */   {
/* 193 */     EjbJar30Creator creator = new EjbJar30Creator(finder);
/* 194 */     EjbJar30MetaData annotationMetaData = creator.create(classes.values());
/* 195 */     if (annotationMetaData != null)
/* 196 */       unit.addAttachment(EJB_ANNOTATED_ATTACHMENT_NAME, annotationMetaData, EjbJarMetaData.class);
/*     */   }
/*     */
/*     */   protected void processJBossWebMetaData(VFSDeploymentUnit unit, AnnotationFinder<AnnotatedElement> finder, Map<VirtualFile, Class<?>> classes)
/*     */   {
/* 201 */     Web25MetaDataCreator creator = new Web25MetaDataCreator(finder);
/* 202 */     Web25MetaData annotationMetaData = creator.create(classes.values());
/* 203 */     if (annotationMetaData != null)
/* 204 */       unit.addAttachment(WEB_ANNOTATED_ATTACHMENT_NAME, annotationMetaData, WebMetaData.class);
/*     */   }
/*     */
/*     */   protected void processJBossClientMetaData(VFSDeploymentUnit unit, AnnotationFinder<AnnotatedElement> finder, Map<VirtualFile, Class<?>> classes)
/*     */   {
/* 209 */     ApplicationClient5MetaDataCreator creator = new ApplicationClient5MetaDataCreator(finder);
/* 210 */     ApplicationClient5MetaData annotationMetaData = creator.create(classes.values());
/* 211 */     if (annotationMetaData != null)
/* 212 */       unit.addAttachment(CLIENT_ANNOTATED_ATTACHMENT_NAME, annotationMetaData, ApplicationClientMetaData.class);
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
* Qualified Name:     org.jboss.deployment.AnnotationMetaDataDeployer
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of org.jboss.deployment.AnnotationMetaDataDeployer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.