[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