|
|
@@ -17,44 +17,44 @@ import java.security.ProtectionDomain; |
|
|
|
|
|
|
|
/** |
|
|
|
* Java 1.5 adapter for class pre processor |
|
|
|
* |
|
|
|
* |
|
|
|
* @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur</a> |
|
|
|
*/ |
|
|
|
public class ClassPreProcessorAgentAdapter implements ClassFileTransformer { |
|
|
|
|
|
|
|
/** |
|
|
|
* Concrete preprocessor. |
|
|
|
*/ |
|
|
|
private static ClassPreProcessor s_preProcessor; |
|
|
|
/** |
|
|
|
* Concrete preprocessor. |
|
|
|
*/ |
|
|
|
private static ClassPreProcessor s_preProcessor; |
|
|
|
|
|
|
|
static { |
|
|
|
try { |
|
|
|
s_preProcessor = new Aj(); |
|
|
|
s_preProcessor.initialize(); |
|
|
|
} catch (Exception e) { |
|
|
|
throw new ExceptionInInitializerError("could not initialize JSR163 preprocessor due to: " + e.toString()); |
|
|
|
} |
|
|
|
} |
|
|
|
static { |
|
|
|
try { |
|
|
|
s_preProcessor = new Aj(); |
|
|
|
s_preProcessor.initialize(); |
|
|
|
} catch (Exception e) { |
|
|
|
throw new ExceptionInInitializerError("could not initialize JSR163 preprocessor due to: " + e.toString()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Weaving delegation |
|
|
|
* |
|
|
|
* @param loader the defining class loader |
|
|
|
* @param className the name of class beeing loaded |
|
|
|
* @param classBeingRedefined when hotswap is called |
|
|
|
* @param protectionDomain |
|
|
|
* @param bytes the bytecode before weaving |
|
|
|
* @return the weaved bytecode |
|
|
|
*/ |
|
|
|
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, |
|
|
|
ProtectionDomain protectionDomain, byte[] bytes) throws IllegalClassFormatException { |
|
|
|
if (classBeingRedefined == null) { |
|
|
|
return s_preProcessor.preProcess(className, bytes, loader); |
|
|
|
} else { |
|
|
|
//FIXME av for now we skip hotswap. We should think more about that |
|
|
|
new Exception("AspectJ5 does not weave hotswapped class (" + className + ")").printStackTrace(); |
|
|
|
return bytes; |
|
|
|
} |
|
|
|
} |
|
|
|
/** |
|
|
|
* Weaving delegation |
|
|
|
* |
|
|
|
* @param loader the defining class loader |
|
|
|
* @param className the name of class beeing loaded |
|
|
|
* @param classBeingRedefined when hotswap is called |
|
|
|
* @param protectionDomain |
|
|
|
* @param bytes the bytecode before weaving |
|
|
|
* @return the weaved bytecode |
|
|
|
*/ |
|
|
|
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, |
|
|
|
byte[] bytes) throws IllegalClassFormatException { |
|
|
|
if (classBeingRedefined == null) { |
|
|
|
return s_preProcessor.preProcess(className, bytes, loader); |
|
|
|
} else { |
|
|
|
// FIXME av for now we skip hotswap. We should think more about that |
|
|
|
new Exception("AspectJ5 does not weave hotswapped class (" + className + ")").printStackTrace(); |
|
|
|
return bytes; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |