[jboss-svn-commits] JBL Code SVN: r13795 - in labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin: src/main/java/org/jboss/maven/plugins/retro and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jul 26 14:40:29 EDT 2007


Author: pgier
Date: 2007-07-26 14:40:29 -0400 (Thu, 26 Jul 2007)
New Revision: 13795

Added:
   labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java
   labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java
Removed:
   labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java
Modified:
   labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml
   labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java
Log:
Splitting the main class weaving from the test class weaving.

Modified: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml	2007-07-26 16:41:38 UTC (rev 13794)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/pom.xml	2007-07-26 18:40:29 UTC (rev 13795)
@@ -4,7 +4,7 @@
   <artifactId>maven-jboss-retro-plugin</artifactId>
   <packaging>maven-plugin</packaging>
   <name>JBoss Retro Maven Plugin</name>
-  <version>0.9-SNAPSHOT</version>
+  <version>0.9-beta-2-SNAPSHOT</version>
   <url>http://www.jboss.org</url>
   <description>Maven plugin for jboss retro</description>
   <scm>
@@ -46,32 +46,27 @@
   </repositories>
   <dependencies>
     <dependency>
-      <groupId>jboss</groupId>
-      <artifactId>jboss-backport-concurrent</artifactId>
-      <version>2.1.0.GA</version>
-    </dependency>
-    <dependency>
-      <groupId>jboss</groupId>
-      <artifactId>javassist</artifactId>
-      <version>3.4.ga</version>
-    </dependency>
-    <dependency>
       <groupId>org.jboss</groupId>
       <artifactId>jboss-retro</artifactId>
-      <version>1.1.1-SNAPSHOT</version>
+      <version>[1.1, 1.2)</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.ant</groupId>
-      <artifactId>ant</artifactId>
-      <version>1.7.0</version>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>2.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-plugin-api</artifactId>
+      <artifactId>maven-model</artifactId>
       <version>2.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
       <artifactId>maven-project</artifactId>
       <version>2.0.4</version>
     </dependency>

Modified: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java	2007-07-26 16:41:38 UTC (rev 13794)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/RetroCheckMojo.java	2007-07-26 18:40:29 UTC (rev 13795)
@@ -11,13 +11,11 @@
 import org.jboss.ant.tasks.retrocheck.Checker;
 
 /**
- * Maven wrapper for JBoss Retro.  By default
- * it will bind to the process classes phase, which takes
- * place immediately after the compile phase.
+ * Maven plugin for running the retro check test.  
  * NOTE: The retro check functionality is not complete.  Please
  * do not use this part of the plugin in a production environment.
  * 
- * @phase process-classes
+ * @phase test
  * @goal retro-check
  * 
  */

Copied: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java (from rev 12575, labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java)
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java	                        (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveMojo.java	2007-07-26 18:40:29 UTC (rev 13795)
@@ -0,0 +1,333 @@
+package org.jboss.maven.plugins.retro;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.jar.Attributes;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+import java.util.zip.Deflater;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
+import org.jboss.weaver.WeaveRunner;
+import org.jboss.weaver.Weaver;
+
+/**
+ * Maven plugin for JBoss Retro Weaver.  This can be used to 
+ * do byte code weaving on classes in jars and directories.
+ * By default the weaver will weave the main classes
+ * and output the result to a jar with the specified classifier.
+ * 
+ * @phase process-classes
+ * @goal weave
+ * 
+ */
+public class WeaveMojo extends AbstractMojo
+{
+   protected final String fileSep = System.getProperty("file.separator");
+
+   protected final String pathSep = System.getProperty("path.separator");
+
+   /**
+    * List of the jar file entries
+    */
+   private ArrayList<JarFileEntry> fileEntries = new ArrayList<JarFileEntry>();
+
+   /**
+    * The Maven Project Object
+    *
+    * @parameter expression="${project}"
+    * @required
+    * @readonly
+    */
+   protected MavenProject project;
+
+   /**
+    * The Maven Project Helper Object
+    *
+    * @component
+    * @required
+    * @readonly
+    */
+   protected org.apache.maven.project.MavenProjectHelper projectHelper;
+
+   /**
+    * The Maven Plugin Components
+    * TODO: I don't think this param is needed.
+    *
+    * @parameter expression="${plugin.components}"
+    * @required
+    * @readonly
+    */
+   protected List pluginComponents;
+
+   /**
+    * The plugin dependencies.
+    *
+    * @parameter expression="${plugin.artifacts}"
+    * @required
+    * @readonly
+    */
+   protected List pluginArtifacts;
+
+   /**
+    * Project classpath.
+    *
+    * @parameter expression="${project.compileClasspathElements}"
+    * @required
+    * @readonly
+    */
+   protected List classpathElements;
+   
+   /**
+    * The directory for compiled classes.
+    *
+    * @parameter expression="${project.build.outputDirectory}"
+    * @required
+    * @readonly
+    */
+   protected File classesDirectory;
+
+   /**
+    * Include verbose output.
+    * @parameter
+    */
+   protected boolean verbose = false;
+
+   /**
+    * The Weaver class to use for weaving the classes.
+    * Defaults to org.jboss.weaver.Weaver
+    * Any subclass of org.jboss.weaver.Weaver can be used
+    * 
+    * @parameter
+    */
+   protected String weaverClass = "org.jboss.weaver.Weaver";
+
+   /**
+    * The jar file or directory where the weaved classes
+    * should be written.  The path is relative to the project
+    * output directory (target).
+    * Defaults to "target/classes-weaved"
+    * @parameter
+    */
+   protected String weaverOutputPath;
+   
+   /**
+    * Create weaved jar.
+    * @parameter
+    */
+   protected boolean createJar = true;
+   
+   /**
+    * Classifier to append to the weaved output file.
+    * Defaults to "weaved".
+    * @parameter
+    */
+   protected String weaveClassifier = "weaved";
+   
+   /**
+    * Suppress output information.
+    * @parameter
+    */
+   protected boolean suppress = true;
+
+   /**
+    * Main plugin execution method
+    */   
+   public void execute() throws MojoFailureException
+   {
+      this.getLog().info("[weaver] Weaving classes");
+      
+      weaveClasses();
+   }
+   
+   protected void weaveClasses() throws MojoFailureException {
+      // Initialize the WeaveRunner using plugin params
+      Weaver weaver = createWeaver();
+      weaver.setClasspath(this.buildClasspath());
+      weaver.init();
+      WeaveRunner weaveRunner = new WeaveRunner(weaver);
+
+      weaveRunner.setVerbose(verbose);
+      weaveRunner.setSuppress(suppress);
+      
+      weaveRunner.setOutputPath(getOutputPath()); 
+      
+      try
+      {
+         weaveRunner.addSourcePath(this.getClassesDirecotry().getAbsolutePath());
+         getLog().info("Weaving classes in path: " + this.getClassesDirecotry().getAbsolutePath());
+
+         weaveRunner.weave();
+      }
+      catch (Exception e)
+      {
+         this.getLog().error(e);
+         e.printStackTrace();
+      }
+   }
+   
+   /**
+    * Generates a classpath string based on the compile class path
+    * and the plugin dependencies.
+    * @return
+    */
+   protected String buildClasspath() {
+      StringBuilder classpath = new StringBuilder();
+
+      List cpElements = this.getClasspathElements();
+      for (Object element : cpElements)
+      {
+         classpath.append(element);
+         classpath.append(pathSep);
+      }
+      
+      for (Object artifact : pluginArtifacts)
+      {
+         try
+         {
+            File artifactFile = ((Artifact) artifact).getFile();
+            if (artifactFile != null)
+            {
+               classpath.append(artifactFile.getCanonicalPath());
+               classpath.append(pathSep);
+            }
+         }
+         catch (IOException ioe)
+         {
+            this.getLog().warn("Could not get filename");
+         }
+      }
+      return classpath.toString();
+   }
+      
+   /**
+    * This method creates the weaver instance.  Subclass mojos
+    * can use this class to override the default weaver configuration.
+    * @return The weaver instance
+    */
+   protected Weaver createWeaver() throws MojoFailureException {
+      // We have to set the classpath first because the initialization
+      // may require access to the classpath.
+      Weaver weaver = null;
+
+      try {
+         weaver = (Weaver)Class.forName(weaverClass).newInstance();
+      } catch (Exception e) {
+         getLog().error("Unable to instantiate weaver class: " + this.weaverClass);
+         getLog().error(e.getMessage());
+         throw new MojoFailureException(e.getMessage());
+      }
+      
+      return weaver;
+   }
+
+   private void createJarEntries(File retroClassesDir)
+   {
+      try
+      {
+         this.getLog().info("DEBUG: " + retroClassesDir.getAbsolutePath());
+         Collection retroClasses = FileUtils.listFiles(retroClassesDir, null, true);
+         for (Object classFile : retroClasses)
+         {
+            String relativePath = classFile.toString().replace(retroClassesDir.getAbsolutePath() + "/", "");
+            byte[] content = FileUtils.readFileToByteArray((File) classFile);
+            fileEntries.add(new JarFileEntry(relativePath, content));
+         }
+      }
+      catch (IOException ioe)
+      {
+         this.getLog().error("error reading class file: " + ioe);
+      }
+   }
+
+   private void createRetroJarFile(File retroJarFile)
+   {
+      try
+      {
+         Manifest manifest = new Manifest();
+         Attributes attributes = manifest.getMainAttributes();
+         attributes.putValue("Manifest-Version", "1.0");
+         attributes.putValue("Created-By", System.getProperty("java.vm.version") + " ("
+               + System.getProperty("java.vm.vendor") + ")");
+         JarOutputStream stream = new JarOutputStream(new FileOutputStream(retroJarFile), manifest);
+         stream.setLevel(Deflater.BEST_COMPRESSION);
+         for (JarFileEntry fileEntry : fileEntries)
+         {
+            JarEntry jarEntry = new JarEntry(fileEntry.getName());
+            stream.putNextEntry(jarEntry);
+            stream.write(fileEntry.getContent());
+         }
+         stream.close();
+      }
+      catch (IOException ioe)
+      {
+         this.getLog().error("Unable to write retro jar: " + ioe);
+      }
+   }
+
+   protected static class JarFileEntry
+   {
+
+      private byte[] content;
+
+      private String name;
+
+      public JarFileEntry(String name, byte[] content)
+      {
+         this.name = name;
+         this.content = content;
+      }
+
+      public byte[] getContent()
+      {
+         return content;
+      }
+
+      public String getName()
+      {
+         return name;
+      }
+
+      public void setName(String name)
+      {
+         this.name = name;
+      }
+   }
+   
+   protected String getOutputPath() 
+   {
+      if (this.weaverOutputPath == null) {
+         String classesDirString = getClassesDirecotry().getAbsolutePath();
+         if(classesDirString.endsWith(this.fileSep)) {
+            classesDirString = classesDirString.substring(0, (classesDirString.length() - 2));
+         }
+         return (classesDirectory + "-" + this.weaveClassifier);
+      }
+      else 
+      {
+         String buildDirectory = project.getBuild().getDirectory();
+         if (!buildDirectory.endsWith(fileSep)) {
+            buildDirectory += fileSep;
+         }
+         return buildDirectory + this.fileSep + this.weaverOutputPath;
+      }
+   }
+   
+   public List getClasspathElements() {
+      return this.classpathElements;
+   }
+   
+   public File getClassesDirecotry() {
+      return this.classesDirectory;
+   }
+   
+}

Added: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java	                        (rev 0)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaveTestsMojo.java	2007-07-26 18:40:29 UTC (rev 13795)
@@ -0,0 +1,89 @@
+package org.jboss.maven.plugins.retro;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.maven.plugin.MojoFailureException;
+
+/**
+ * Maven plugin for JBoss Retro Weaver.  This mojo is set up
+ * to weave the test classes and optionally generate a jar of
+ * the weaved classes.
+ * 
+ * @phase process-test-classes
+ * @goal weave-tests
+ * 
+ */
+public class WeaveTestsMojo extends WeaveMojo
+{
+
+   /**
+    * Project classpath.
+    *
+    * @parameter expression="${project.testClasspathElements}"
+    * @required
+    * @readonly
+    */
+   protected List classpathElements;
+      
+   /**
+    * The directory containing the classes to be weaved.
+    *
+    * @parameter expression="${project.build.testOutputDirectory}"
+    * @required
+    * @readonly
+    */
+   protected File classesDirectory;
+
+   /**
+    * The jar file or directory where the weaved classes
+    * should be written. Defaults to "target/test-classes-weaved"
+    * 
+    * @parameter
+    */
+   protected String outputPath;
+      
+   /**
+    * Suppress output information.
+    * @parameter
+    */
+   protected boolean suppress = true;
+
+   public void execute() throws MojoFailureException
+   {
+      this.getLog().info("[weaver] Weaving test classes");
+      //System.out.println(this.classpathElements);
+      //super.classpathElements = classpathElements;
+      weaveClasses();
+   }
+   
+   public List getClasspathElements() 
+   {
+      return this.classpathElements;
+   }
+   
+   public File getClassesDirecotry() 
+   {
+      return this.classesDirectory;
+   }
+   
+   protected String getOutputPath() 
+   {
+      if (this.weaverOutputPath == null) {
+         String classesDirString = getClassesDirecotry().getAbsolutePath();
+         if(classesDirString.endsWith(this.fileSep)) {
+            classesDirString = classesDirString.substring(0, (classesDirString.length() - 2));
+         }
+         return (classesDirectory + "-" + this.weaveClassifier);
+      }
+      else 
+      {
+         String buildDirectory = project.getBuild().getDirectory();
+         if (!buildDirectory.endsWith(fileSep)) {
+            buildDirectory += fileSep;
+         }
+         return buildDirectory + this.fileSep + this.weaverOutputPath;
+      }
+   }
+   
+}

Deleted: labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java
===================================================================
--- labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java	2007-07-26 16:41:38 UTC (rev 13794)
+++ labs/jbossbuild/maven-plugins/trunk/maven-jboss-retro-plugin/src/main/java/org/jboss/maven/plugins/retro/WeaverMojo.java	2007-07-26 18:40:29 UTC (rev 13795)
@@ -1,411 +0,0 @@
-package org.jboss.maven.plugins.retro;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.jar.Attributes;
-import java.util.jar.JarEntry;
-import java.util.jar.JarOutputStream;
-import java.util.jar.Manifest;
-import java.util.zip.Deflater;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-import org.jboss.weaver.WeaveRunner;
-import org.jboss.weaver.Weaver;
-
-/**
- * Maven plugin for JBoss Retro Weaver.  This can be used to 
- * do byte code weaving on classes in jars and directories.
- * By default the weaver will weave the main classes
- * and output the result to a jar with the specified classifier.
- * 
- * @phase process-classes
- * @goal weave
- * 
- */
-public class WeaverMojo extends AbstractMojo
-{
-   private final String fileSep = System.getProperty("file.separator");
-
-   private final String pathSep = System.getProperty("path.separator");
-
-   /**
-    * List of the jar file entries
-    */
-   private ArrayList<JarFileEntry> fileEntries = new ArrayList<JarFileEntry>();
-
-   /**
-    * The Maven Project Object
-    *
-    * @parameter expression="${project}"
-    * @required
-    * @readonly
-    */
-   protected MavenProject project;
-
-   /**
-    * The Maven Project Helper Object
-    *
-    * @component
-    * @required
-    */
-   protected org.apache.maven.project.MavenProjectHelper projectHelper;
-
-   /**
-    * The Maven Plugin Object
-    *
-    * @parameter expression="${plugin.components}"
-    * @required
-    * @readonly
-    */
-   protected List pluginComponents;
-
-   /**
-    * The plugin dependencies.
-    *
-    * @parameter expression="${plugin.artifacts}"
-    * @required
-    * @readonly
-    */
-   protected List pluginArtifacts;
-
-   /**
-    * Project classpath.
-    *
-    * @parameter expression="${project.compileClasspathElements}"
-    * @required
-    * @readonly
-    */
-   protected List classpathElements;
-   
-   /**
-    * Project classpath.
-    *
-    * @parameter expression="${project.testClasspathElements}"
-    * @required
-    * @readonly
-    */
-   protected List testClasspathElements;
-   
-   /**
-    * The directory for compiled classes.
-    *
-    * @parameter expression="${project.build.outputDirectory}"
-    * @required
-    * @readonly
-    */
-   //protected File targetClassesDirectory;
-
-   /**
-    * The directory for build output.
-    *
-    * @parameter expression="${project.build.directory}"
-    * @required
-    * @readonly
-    */
-   //protected File targetDirectory;
-
-   /**
-    * Include verbose output.
-    * @parameter
-    */
-   protected boolean verbose = false;
-
-   /**
-    * @parameter
-    */
-   protected String weaverClass = "org.jboss.weaver.Weaver";
-
-   /**
-    * The jar file or directory where the weaved classes
-    * should be written.
-    * @parameter
-    */
-   private String outputPath;
-
-
-   /**
-    * Determine whether to weave the project classes.
-    * Defaults to true.
-    * @parameter
-    */
-   private boolean weaveClasses = true;
-
-   /**
-    * If set to true, the test classes will be weaved.
-    * Note that when this is set to true, the plugin
-    * should be attached to the test-compile phase
-    * Defaults to false.
-    * @parameter
-    */
-   private boolean weaveTestClasses = false;
-
-   
-   /**
-    * Classifier to append to the weaved output file.
-    * Defaults to "weaved".
-    * @parameter
-    */
-   protected String weaveClassifier = "weaved";
-   
-   /**
-    * Suppress output information.
-    * @parameter
-    */
-   protected boolean suppress = true;
-
-   /**
-    * The weave runner that will be used to weave classes
-    */
-   //private WeaveRunner weaveRunner;
-   
-   public void execute() throws MojoFailureException
-   {
-      this.getLog().info("[retro] Compiling classes for jdk14");
-      
-      if (weaveClasses) {
-         weaveClasses();
-      }
-      if (weaveTestClasses) {
-         weaveTestClasses();
-      }
-   }
-   
-   protected void weaveClasses() throws MojoFailureException {
-      // Initialize the WeaveRunner with plugin params
-      Weaver weaver = createWeaver();
-      weaver.setClasspath(this.buildCompileClasspath());
-      weaver.init();
-      WeaveRunner weaveRunner = new WeaveRunner(weaver);
-
-      weaveRunner.setVerbose(verbose);
-      weaveRunner.setSuppress(suppress);
-      //weaveRunner.setOutputToJar(outputToJar);
-      String targetDirectory = project.getBuild().getDirectory();
-      String targetClassesDirectory = project.getBuild().getOutputDirectory();
-      
-      if (outputPath == null) {
-         outputPath = targetDirectory + fileSep + "classes-" + weaveClassifier + fileSep;
-      } else {
-         outputPath = targetDirectory + fileSep + outputPath;
-      }
-      weaveRunner.setOutputPath(outputPath); 
-      
-      try
-      {
-         weaveRunner.addSourcePath(targetClassesDirectory);
-         System.out.println("added source path: " + targetClassesDirectory);
-
-         weaveRunner.weave();
-      }
-      catch (Exception e)
-      {
-         this.getLog().error(e);
-         e.printStackTrace();
-      }
-   }
-   
-   protected void weaveTestClasses() throws MojoFailureException {
-      // Initialize the WeaveRunner with plugin params
-      String targetDirectory = project.getBuild().getDirectory();
-      String targetTestClassesDirectory = project.getBuild().getTestOutputDirectory();
-      
-      Weaver weaver = createWeaver();
-      weaver.setClasspath(this.buildTestCompileClasspath());
-      weaver.init();
-      WeaveRunner weaveRunner = new WeaveRunner(weaver);
-
-      weaveRunner.setVerbose(verbose);
-      weaveRunner.setSuppress(suppress);
-      
-      if (outputPath == null) {
-         outputPath = targetDirectory + fileSep + "test-classes-" + weaveClassifier + fileSep;
-      } else {
-         outputPath = targetDirectory + fileSep + outputPath;
-      }
-      weaveRunner.setOutputPath(outputPath); 
-      
-      try
-      {
-         weaveRunner.addSourcePath(targetTestClassesDirectory);
-         System.out.println("added source path: " + targetTestClassesDirectory);
-
-         weaveRunner.weave();
-      }
-      catch (Exception e)
-      {
-         this.getLog().error(e);
-         e.printStackTrace();
-      }
-      
-   }
-   
-   /**
-    * Generates a classpath string based on the compile class path
-    * and the plugin dependencies.
-    * @return
-    */
-   protected String buildCompileClasspath() {
-      // Create the classpath first, so that we can create the Weaver object.
-      StringBuilder classpath = new StringBuilder();
-      for (Object element : classpathElements)
-      {
-         classpath.append(element);
-         classpath.append(pathSep);
-      }
-      
-      for (Object artifact : pluginArtifacts)
-      {
-         try
-         {
-            File artifactFile = ((Artifact) artifact).getFile();
-            if (artifactFile != null)
-            {
-               classpath.append(artifactFile.getCanonicalPath());
-               classpath.append(pathSep);
-            }
-         }
-         catch (IOException ioe)
-         {
-            this.getLog().warn("Could not get filename");
-         }
-      }
-      return classpath.toString();
-   }
-   
-   /**
-    * Generates a classpath string based on the compile class path
-    * and the plugin dependencies.
-    * @return
-    */
-   protected String buildTestCompileClasspath() {
-      // Create the classpath first, so that we can create the Weaver object.
-      StringBuilder testClasspath = new StringBuilder();
-      
-      for (Object element : testClasspathElements)
-      {
-         testClasspath.append(element);
-         testClasspath.append(pathSep);
-      }
-      
-      for (Object artifact : pluginArtifacts)
-      {
-         try
-         {
-            File artifactFile = ((Artifact) artifact).getFile();
-            if (artifactFile != null)
-            {
-               testClasspath.append(artifactFile.getCanonicalPath());
-               testClasspath.append(pathSep);
-            }
-         }
-         catch (IOException ioe)
-         {
-            this.getLog().warn("Could not get filename");
-         }
-      }
-      testClasspath.append(project.getBuild().getTestOutputDirectory());
-      return testClasspath.toString();
-   }
-   
-   /**
-    * This method creates the weaver instance.  Subclass mojos
-    * can use this class to override the default weaver configuration.
-    * @return The weaver instance
-    */
-   protected Weaver createWeaver() throws MojoFailureException {
-      // We have to set the classpath first because the initialization
-      // may require access to the classpath.
-      Weaver weaver = null;
-
-      try {
-         weaver = (Weaver)Class.forName(weaverClass).newInstance();
-      } catch (Exception e) {
-         getLog().error("Unable to instantiate weaver class: " + this.weaverClass);
-         getLog().error(e.getMessage());
-         throw new MojoFailureException(e.getMessage());
-      }
-      
-      return weaver;
-   }
-
-   private void createJarEntries(File retroClassesDir)
-   {
-      try
-      {
-         this.getLog().info("DEBUG: " + retroClassesDir.getAbsolutePath());
-         Collection retroClasses = FileUtils.listFiles(retroClassesDir, null, true);
-         for (Object classFile : retroClasses)
-         {
-            String relativePath = classFile.toString().replace(retroClassesDir.getAbsolutePath() + "/", "");
-            byte[] content = FileUtils.readFileToByteArray((File) classFile);
-            fileEntries.add(new JarFileEntry(relativePath, content));
-         }
-      }
-      catch (IOException ioe)
-      {
-         this.getLog().error("error reading class file: " + ioe);
-      }
-   }
-
-   private void createRetroJarFile(File retroJarFile)
-   {
-      try
-      {
-         Manifest manifest = new Manifest();
-         Attributes attributes = manifest.getMainAttributes();
-         attributes.putValue("Manifest-Version", "1.0");
-         attributes.putValue("Created-By", System.getProperty("java.vm.version") + " ("
-               + System.getProperty("java.vm.vendor") + ")");
-         JarOutputStream stream = new JarOutputStream(new FileOutputStream(retroJarFile), manifest);
-         stream.setLevel(Deflater.BEST_COMPRESSION);
-         for (JarFileEntry fileEntry : fileEntries)
-         {
-            JarEntry jarEntry = new JarEntry(fileEntry.getName());
-            stream.putNextEntry(jarEntry);
-            stream.write(fileEntry.getContent());
-         }
-         stream.close();
-      }
-      catch (IOException ioe)
-      {
-         this.getLog().error("Unable to write retro jar: " + ioe);
-      }
-   }
-
-   private static class JarFileEntry
-   {
-
-      private byte[] content;
-
-      private String name;
-
-      public JarFileEntry(String name, byte[] content)
-      {
-         this.name = name;
-         this.content = content;
-      }
-
-      public byte[] getContent()
-      {
-         return content;
-      }
-
-      public String getName()
-      {
-         return name;
-      }
-
-      public void setName(String name)
-      {
-         this.name = name;
-      }
-   }
-}




More information about the jboss-svn-commits mailing list