[jboss-cvs] jbossretro/src/main/org/jboss/ant/tasks/retro ...

Paul Gier pgier at redhat.com
Mon Apr 30 09:58:22 EDT 2007


  User: pgier   
  Date: 07/04/30 09:58:22

  Modified:    src/main/org/jboss/ant/tasks/retro  Weaver.java
  Log:
  [JBBUILD-297] Moved class renames to properties file.  Added methods for changing default expression editor and code converter.
  
  Revision  Changes    Path
  1.30      +102 -115  jbossretro/src/main/org/jboss/ant/tasks/retro/Weaver.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Weaver.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbossretro/src/main/org/jboss/ant/tasks/retro/Weaver.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -b -r1.29 -r1.30
  --- Weaver.java	13 Mar 2007 21:30:44 -0000	1.29
  +++ Weaver.java	30 Apr 2007 13:58:22 -0000	1.30
  @@ -39,10 +39,12 @@
   import java.util.HashMap;
   import java.util.List;
   import java.util.Map;
  +import java.util.Properties;
   import java.util.Set;
   import java.util.StringTokenizer;
   import java.util.logging.Logger;
   
  +import javassist.CannotCompileException;
   import javassist.ClassPool;
   import javassist.CodeConverter;
   import javassist.CtClass;
  @@ -69,7 +71,7 @@
    *
    * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
    * @author <a href="mailto:adrian at jboss.org">Adrian Brock</a>
  - * @version $Revision: 1.29 $
  + * @version $Revision: 1.30 $
    */
   public class Weaver
   {
  @@ -95,6 +97,29 @@
      private String outputDir = null;
   
      /**
  +    * Path to properties file that contains the mapping between 1.5 and 1.4 classes.
  +    */
  +   private Map<String, String> classRenames = null;
  +   
  +   /**
  +    * Default resource from which to load the class renames mapping.
  +    */
  +   public final String DEFAULT_CLASS_RENAMES_RESOURCE = "/org/jboss/retro/class-renames.properties";
  +   
  +   /**
  +    * List of code converters to run against the classes.
  +    */
  +   private List<CodeConverter> codeConverters = new ArrayList<CodeConverter>();
  +   
  +   /**
  +    * List of expression editors to run against the classes.
  +    */
  +   private List<ExprEditor> exprEditors = new ArrayList<ExprEditor>();
  +   
  +   public Weaver() {
  +   }
  +      
  +   /**
       * Parses command line arguments and calls setters.
       * @param args
       */
  @@ -230,121 +255,23 @@
   
      public void weave() throws Exception
      {
  -      // FIXME class rename configurable
  -      Map<String, String> classRenames = new HashMap<String, String>();
  -      classRenames.put("java/lang/annotation/Annotation", "org/jboss/lang/Annotation");
  -      classRenames.put("java/lang/annotation/Inherited", "org/jboss/lang/annotation/Inherited");
  -      classRenames.put("java/lang/Enum", "org/jboss/lang/EnumImpl");
  -      classRenames.put("java/lang/Iterable", "org/jboss/lang/Iterable");
  -      classRenames.put("java/lang/StringBuilder", "org/jboss/lang/JBossStringBuilder");
  -      classRenames.put("java/lang/reflect/GenericDeclaration", "org/jboss/lang/reflect/GenericDeclaration");
  -      classRenames.put("java/lang/reflect/MalformedParameterizedTypeException", "org/jboss/lang/reflect/MalformedParameterizedTypeException");
  -      classRenames.put("java/lang/reflect/Type", "org/jboss/lang/reflect/Type");
  -      classRenames.put("java/lang/reflect/TypeVariable", "org/jboss/lang/reflect/TypeVariable");
  -      classRenames.put("java/lang/reflect/ParameterizedType", "org/jboss/lang/reflect/ParameterizedType");
  -      classRenames.put("java/util/AbstractCollection", "edu/emory/mathcs/backport/java/util/AbstractCollection");
  -      classRenames.put("java/util/AbstractMap", "edu/emory/mathcs/backport/java/util/AbstractMap");
  -      classRenames.put("java/util/AbstractList", "edu/emory/mathcs/backport/java/util/AbstractList");
  -      classRenames.put("java/util/AbstractQueue", "edu/emory/mathcs/backport/java/util/AbstractQueue");
  -      classRenames.put("java/util/AbstractSequentialList", "edu/emory/mathcs/backport/java/util/AbstractSequentialList");
  -      classRenames.put("java/util/AbstractSet", "edu/emory/mathcs/backport/java/util/AbstractSet");
  -      classRenames.put("java/util/ArrayDeque", "edu/emory/mathcs/backport/java/util/ArrayDeque");
  -      classRenames.put("java/util/Arrays", "edu/emory/mathcs/backport/java/util/Arrays");
  -      classRenames.put("java/util/Collections", "edu/emory/mathcs/backport/java/util/Collections");
  -      classRenames.put("java/util/Deque", "edu/emory/mathcs/backport/java/util/Deque");
  -      classRenames.put("java/util/EnumSet", "org/jboss/util/EnumSet");
  -      classRenames.put("java/util/EnumMap", "org/jboss/util/EnumMap");
  -      classRenames.put("java/util/LinkedList", "edu/emory/mathcs/backport/java/util/LinkedList");
  -      classRenames.put("java/util/NavigableMap", "edu/emory/mathcs/backport/java/util/NavigableMap");
  -      classRenames.put("java/util/NavigableSet", "edu/emory/mathcs/backport/java/util/NavigableSet");
  -      classRenames.put("java/util/PriorityQueue", "edu/emory/mathcs/backport/java/util/PriorityQueue");
  -      classRenames.put("java/util/Queue", "edu/emory/mathcs/backport/java/util/Queue");
  -      classRenames.put("java/util/TreeMap", "edu/emory/mathcs/backport/java/util/TreeMap");
  -      classRenames.put("java/util/TreeSet", "edu/emory/mathcs/backport/java/util/TreeSet");
  -      classRenames.put("java/util/concurrent/AbstractExecutorService", "edu/emory/mathcs/backport/java/util/concurrent/AbstractExecutorService");
  -      classRenames.put("java/util/concurrent/ArrayBlockingQueue", "edu/emory/mathcs/backport/java/util/concurrent/ArrayBlockingQueue");
  -      classRenames.put("java/util/concurrent/BlockingDeque", "edu/emory/mathcs/backport/java/util/concurrent/BlockingDeque");
  -      classRenames.put("java/util/concurrent/BlockingQueue", "edu/emory/mathcs/backport/java/util/concurrent/BlockingQueue");
  -      classRenames.put("java/util/concurrent/BrokenBarrierException", "edu/emory/mathcs/backport/java/util/concurrent/BrokenBarrierException");
  -      classRenames.put("java/util/concurrent/Callable", "edu/emory/mathcs/backport/java/util/concurrent/Callable");
  -      classRenames.put("java/util/concurrent/CancellationException", "edu/emory/mathcs/backport/java/util/concurrent/CancellationException");
  -      classRenames.put("java/util/concurrent/CompletionService", "edu/emory/mathcs/backport/java/util/concurrent/CompletionService");
  -      classRenames.put("java/util/concurrent/ConcurrentHashMap", "edu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap");
  -      classRenames.put("java/util/concurrent/ConcurrentLinkedQueue", "edu/emory/mathcs/backport/java/util/concurrent/ConcurrentLinkedQueue");
  -      classRenames.put("java/util/concurrent/ConcurrentMap", "edu/emory/mathcs/backport/java/util/concurrent/ConcurrentMap");
  -      classRenames.put("java/util/concurrent/ConcurrentNavigableMap", "edu/emory/mathcs/backport/java/util/concurrent/ConcurrentNavigableMap");
  -      classRenames.put("java/util/concurrent/ConcurrentSkipListMap", "edu/emory/mathcs/backport/java/util/concurrent/ConcurrentSkipListMap");
  -      classRenames.put("java/util/concurrent/ConcurrentSkipListet", "edu/emory/mathcs/backport/java/util/concurrent/ConcurrentSkipListSet");
  -      classRenames.put("java/util/concurrent/CopyOnWriteArrayList", "edu/emory/mathcs/backport/java/util/concurrent/CopyOnWriteArrayList");
  -      classRenames.put("java/util/concurrent/CopyOnWriteArraySet", "edu/emory/mathcs/backport/java/util/concurrent/CopyOnWriteArraySet");
  -      classRenames.put("java/util/concurrent/CountDownLatch", "edu/emory/mathcs/backport/java/util/concurrent/CountDownLatch");
  -      classRenames.put("java/util/concurrent/CyclicBarrier", "edu/emory/mathcs/backport/java/util/concurrent/CyclicBarrier");
  -      classRenames.put("java/util/concurrent/Delayed", "edu/emory/mathcs/backport/java/util/concurrent/Delayed");
  -      classRenames.put("java/util/concurrent/DelayQueue", "org/jboss/util/concurrent/DelayQueue");
  -      classRenames.put("java/util/concurrent/Exchanger", "edu/emory/mathcs/backport/java/util/concurrent/Exchanger");
  -      classRenames.put("java/util/concurrent/ExecutionException", "edu/emory/mathcs/backport/java/util/concurrent/ExecutionException");
  -      classRenames.put("java/util/concurrent/Executor", "edu/emory/mathcs/backport/java/util/concurrent/Executor");
  -      classRenames.put("java/util/concurrent/ExecutorCompletionService", "edu/emory/mathcs/backport/java/util/concurrent/ExecutorCompletionService");
  -      classRenames.put("java/util/concurrent/Executors", "edu/emory/mathcs/backport/java/util/concurrent/Executors");
  -      classRenames.put("java/util/concurrent/ExecutorService", "edu/emory/mathcs/backport/java/util/concurrent/ExecutorService");
  -      classRenames.put("java/util/concurrent/Future", "edu/emory/mathcs/backport/java/util/concurrent/Future");
  -      classRenames.put("java/util/concurrent/FutureTask", "edu/emory/mathcs/backport/java/util/concurrent/FutureTask");
  -      classRenames.put("java/util/concurrent/LinkedBlockingDeque", "edu/emory/mathcs/backport/java/util/concurrent/LinkedBlockingDeque");
  -      classRenames.put("java/util/concurrent/LinkedBlockingQueue", "edu/emory/mathcs/backport/java/util/concurrent/LinkedBlockingQueue");
  -      classRenames.put("java/util/concurrent/PriorityBlockingQueue", "edu/emory/mathcs/backport/java/util/concurrent/PriorityBlockingQueue");
  -      classRenames.put("java/util/concurrent/RejectedExecutionException", "edu/emory/mathcs/backport/java/util/concurrent/RejectedExecutionException");
  -      classRenames.put("java/util/concurrent/RejectedExecutionHandler", "edu/emory/mathcs/backport/java/util/concurrent/RejectedExecutionHandler");
  -      classRenames.put("java/util/concurrent/RunnableFuture", "edu/emory/mathcs/backport/java/util/concurrent/RunnableFuture");
  -      classRenames.put("java/util/concurrent/RunnableScheduledFuture", "edu/emory/mathcs/backport/java/util/concurrent/RunnableScheduledFuture");
  -      classRenames.put("java/util/concurrent/ScheduledExecutorService", "edu/emory/mathcs/backport/java/util/concurrent/ScheduledExecutorService");
  -      classRenames.put("java/util/concurrent/ScheduledFuture", "edu/emory/mathcs/backport/java/util/concurrent/ScheduledFuture");
  -      classRenames.put("java/util/concurrent/ScheduledThreadPoolExecutor", "edu/emory/mathcs/backport/java/util/concurrent/ScheduledThreadPoolExecutor");
  -      classRenames.put("java/util/concurrent/Semaphore", "edu/emory/mathcs/backport/java/util/concurrent/Semaphore");
  -      classRenames.put("java/util/concurrent/SynchronousQueue", "edu/emory/mathcs/backport/java/util/concurrent/SynchronousQueue");
  -      classRenames.put("java/util/concurrent/ThreadFactory", "edu/emory/mathcs/backport/java/util/concurrent/ThreadFactory");
  -      classRenames.put("java/util/concurrent/ThreadPoolExecutor", "edu/emory/mathcs/backport/java/util/concurrent/ThreadPoolExecutor");
  -      classRenames.put("java/util/concurrent/ThreadPoolExecutor$AbortPolicy", "edu/emory/mathcs/backport/java/util/concurrent/ThreadPoolExecutor$AbortPolicy");
  -      classRenames.put("java/util/concurrent/ThreadPoolExecutor$CallerRunsPolicy", "edu/emory/mathcs/backport/java/util/concurrent/ThreadPoolExecutor$CallerRunsPolicy");
  -      classRenames.put("java/util/concurrent/ThreadPoolExecutor$DiscardOldestPolicy", "edu/emory/mathcs/backport/java/util/concurrent/ThreadPoolExecutor$DiscardOldestPolicy");
  -      classRenames.put("java/util/concurrent/ThreadPoolExecutor$DiscardPolicy", "edu/emory/mathcs/backport/java/util/concurrent/ThreadPoolExecutor$DiscardPolicy");
  -      classRenames.put("java/util/concurrent/TimeoutException", "edu/emory/mathcs/backport/java/util/concurrent/TimeoutException");
  -      classRenames.put("java/util/concurrent/TimeUnit", "edu/emory/mathcs/backport/java/util/concurrent/TimeUnit");
  -      classRenames.put("java/util/concurrent/atomic/AtomicBoolean", "edu/emory/mathcs/backport/java/util/concurrent/atomic/AtomicBoolean");
  -      classRenames.put("java/util/concurrent/atomic/AtomicIntegerArray", "edu/emory/mathcs/backport/java/util/concurrent/atomic/AtomicIntegerArray");
  -      classRenames.put("java/util/concurrent/atomic/AtomicInteger", "edu/emory/mathcs/backport/java/util/concurrent/atomic/AtomicInteger");
  -      classRenames.put("java/util/concurrent/atomic/AtomicIntegerFieldUpdater", "org/jboss/util/concurrent/atomic/AtomicIntegerFieldUpdater");
  -      classRenames.put("java/util/concurrent/atomic/AtomicLongArray", "edu/emory/mathcs/backport/java/util/concurrent/atomic/AtomicLongArray");
  -      classRenames.put("java/util/concurrent/atomic/AtomicLong", "edu/emory/mathcs/backport/java/util/concurrent/atomic/AtomicLong");
  -      classRenames.put("java/util/concurrent/atomic/AtomicLongFieldUpdater", "org/jboss/util/concurrent/atomic/AtomicLongFieldUpdater");
  -      classRenames.put("java/util/concurrent/atomic/AtomicMarkableReference", "edu/emory/mathcs/backport/java/util/concurrent/atomic/AtomicMarkableReference");
  -      classRenames.put("java/util/concurrent/atomic/AtomicReferenceArray", "edu/emory/mathcs/backport/java/util/concurrent/atomic/AtomicReferenceArray");
  -      classRenames.put("java/util/concurrent/atomic/AtomicReference", "edu/emory/mathcs/backport/java/util/concurrent/atomic/AtomicReference");
  -      classRenames.put("java/util/concurrent/atomic/AtomicReferenceFieldUpdater", "org/jboss/util/concurrent/atomic/AtomicReferenceFieldUpdater");
  -      classRenames.put("java/util/concurrent/atomic/AtomicStampedReference", "edu/emory/mathcs/backport/java/util/concurrent/atomic/AtomicStampedReference");
  -      classRenames.put("java/util/concurrent/locks/Condition", "edu/emory/mathcs/backport/java/util/concurrent/locks/Condition");
  -      classRenames.put("java/util/concurrent/locks/CondVar", "edu/emory/mathcs/backport/java/util/concurrent/locks/CondVar");
  -      classRenames.put("java/util/concurrent/locks/FIFOCondVar", "edu/emory/mathcs/backport/java/util/concurrent/locks/FIFOCondVar");
  -      classRenames.put("java/util/concurrent/locks/Lock", "edu/emory/mathcs/backport/java/util/concurrent/locks/Lock");
  -      classRenames.put("java/util/concurrent/locks/ReadWriteLock", "edu/emory/mathcs/backport/java/util/concurrent/locks/ReadWriteLock");
  -      classRenames.put("java/util/concurrent/locks/ReentrantLock", "edu/emory/mathcs/backport/java/util/concurrent/locks/ReentrantLock");
  -      classRenames.put("java/util/concurrent/locks/ReentrantReadWriteLock", "org/jboss/util/concurrent/locks/ReentrantReadWriteLock");
  -      classRenames.put("java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock", "org/jboss/util/concurrent/locks/ReentrantReadWriteLock$ReadLock");
  -      classRenames.put("java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock", "org/jboss/util/concurrent/locks/ReentrantReadWriteLock$WriteLock");
  -
  -      // FIXME ExprEditor configurable
  -      ExprEditor[] editors =
  -      {
  -      	new ClassRedirectEditor()
  -      };
  +      initClassRenames();
   
         ClassPool pool = ClassPool.getDefault();
         pool.appendPathList(classPathParam);
   
  -      // FIXME CodeConverter configurable
  -      CodeConverter[] converters =
  -      {
  -      	new AutoboxCodeConverter()
  -      };
  +      // Set up default converters and editors
  +      try {
  +         codeConverters.add(new AutoboxCodeConverter());
  +      } catch (NotFoundException nfe) {
  +         log.severe("Unable to contruct default code converter");
  +         nfe.printStackTrace();
  +      } catch (CannotCompileException cce) {
  +         log.severe("Unable to contruct default code converter");
  +         cce.printStackTrace();
  +      }
  +      
  +      exprEditors.add(new ClassRedirectEditor());
   
         URL[] urls = paths.toArray(new URL[paths.size()]);
         loader = new URLClassLoader(urls, Thread.currentThread().getContextClassLoader());
  @@ -375,7 +302,8 @@
         for (String className : classesToCompile.keySet())
         {
            CompilerClassInfo info = classesToCompile.get(className);
  -         compileFile(info, classRenames, converters, editors);
  +         compileFile(info, classRenames, codeConverters.toArray(new CodeConverter [codeConverters.size()]), 
  +               exprEditors.toArray(new ExprEditor[exprEditors.size()]));
         }
      }
   
  @@ -530,11 +458,15 @@
   
         // Run the converters
         for (CodeConverter converter : converters)
  +      {
            clazz.instrument(converter);
  +      }
   
         // Run the editors
         for (ExprEditor editor : editors)
  +      {
            clazz.instrument(editor);
  +      }
   
         if (verbose)
         {
  @@ -745,4 +677,59 @@
            this.clazz = clazz;
         }
      }
  +
  +   public Map<String, String> getClassRenames()
  +   {
  +      initClassRenames();
  +      return classRenames;
  +   }
  +
  +   public void setClassRenames(Map<String, String> classRenames)
  +   {
  +      this.classRenames = classRenames;
  +   }
  +   
  +   public void setClassRename(String origClass, String renamedClass) {
  +      initClassRenames();
  +      classRenames.put(origClass, renamedClass);
  +   }
  +   
  +   private void initClassRenames() {
  +      if (classRenames == null)
  +      {
  +         InputStream is = this.getClass().getResourceAsStream(DEFAULT_CLASS_RENAMES_RESOURCE);
  +         Properties classRenamesProps = new Properties();
  +         try {
  +            classRenamesProps.load(is);
  +            classRenames = (Map)classRenamesProps;
  +         } catch (IOException ioe) {
  +            log.severe("Unable to load class renames from default resource");
  +            ioe.printStackTrace();
  +         }
  +      }
  +   }
  +   
  +   public void addCodeConverter(CodeConverter converter) {
  +      codeConverters.add(converter);
  +   }
  +   
  +   public List getCodeConverters() {
  +      return codeConverters;
  +   }
  +   
  +   public void clearCodeConverters() {
  +      codeConverters.clear();
  +   }
  +   
  +   public void addEditor(ExprEditor editor) {
  +      exprEditors.add(editor);
  +   }
  +   
  +   public List getExprEditors() {
  +      return exprEditors;
  +   }
  +   
  +   public void clearExprEditors() {
  +      exprEditors.clear();
  +   }
   }
  
  
  



More information about the jboss-cvs-commits mailing list