You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sirona.apache.org by rm...@apache.org on 2015/11/12 04:08:58 UTC
svn commit: r1713963 - in
/incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent:
InJvmTransformerRunner.java JavaAgentRunner.java
Author: rmannibucau
Date: Thu Nov 12 03:08:58 2015
New Revision: 1713963
URL: http://svn.apache.org/viewvc?rev=1713963&view=rev
Log:
fixing out agent runner for junit 4.12 and avoid to require openjpa dependency
Modified:
incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/InJvmTransformerRunner.java
incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/JavaAgentRunner.java
Modified: incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/InJvmTransformerRunner.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/InJvmTransformerRunner.java?rev=1713963&r1=1713962&r2=1713963&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/InJvmTransformerRunner.java (original)
+++ incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/InJvmTransformerRunner.java Thu Nov 12 03:08:58 2015
@@ -34,6 +34,7 @@ import serp.bytecode.Project;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.IOException;
import java.io.InputStream;
import java.lang.instrument.ClassFileTransformer;
import java.lang.reflect.Field;
@@ -59,9 +60,14 @@ public class InJvmTransformerRunner exte
Thread.currentThread().setContextClassLoader(getTestLoader());
try {
final Class<?> testTransformedClass = testLoader.loadClass(getTestClass().getName());
- final Field f = ParentRunner.class.getDeclaredField("fTestClass");
- f.setAccessible(true);
- f.set(this, new TestClass(testTransformedClass));
+ Field field;
+ try { // junit 4.11
+ field = ParentRunner.class.getDeclaredField("fTestClass");
+ } catch (final NoSuchFieldException nsfe) { // junit 4.12
+ field = ParentRunner.class.getDeclaredField("testClass");
+ }
+ field.setAccessible(true);
+ field.set(this, new TestClass(testTransformedClass));
} catch (final Exception e) {
throw new RuntimeException(e);
} finally {
@@ -151,28 +157,7 @@ public class InJvmTransformerRunner exte
final SironaTransformer transformer = new SironaTransformer(false, null);
buffer = transformer.transform(this, className, null, null, buffer);
} else if (PCClassFileTransformer.class.equals(t)) {
- if (name.endsWith("Entity")) {
- // hacky but avoid to build a full openjpa project/context
- final PersistenceMetaDataFactory factory = new PersistenceMetaDataFactory();
- factory.setTypes("org.apache.test.sirona.javaagent.OpenJPATest$ServiceSquareEntity");
-
- final MetaDataRepository repos = new MetaDataRepository();
- repos.setConfiguration(new OpenJPAConfigurationImpl());
- repos.setMetaDataFactory(factory);
-
- final BCClass type = new Project().loadClass(new ByteArrayInputStream(buffer), new URLClassLoader(new URL[0], getParent()));
- final PCEnhancer enhancer = new PCEnhancer(repos.getConfiguration(), type, repos, this);
- enhancer.setAddDefaultConstructor(true);
- enhancer.setEnforcePropertyRestrictions(true);
-
- if (enhancer.run() != PCEnhancer.ENHANCE_NONE) {
- final BCClass pcb = enhancer.getPCBytecode();
- final byte[] transformed = AsmAdaptor.toByteArray(pcb, pcb.toByteArray());
- if (transformed != null) {
- buffer = transformed;
- }
- }
- }
+ buffer = handleJpa(name, buffer);
} else {
buffer = ClassFileTransformer.class.cast(t.newInstance()).transform(this, className, null, null, buffer);
}
@@ -198,5 +183,41 @@ public class InJvmTransformerRunner exte
throw new ClassNotFoundException(t.getMessage(), t);
}
}
+
+ private byte[] handleJpa(final String name, final byte[] buffer) throws IOException {
+ return Jpa.handleJpa(name, buffer, this);
+ }
+ }
+
+ private static class Jpa {
+ private Jpa() {
+ // no-op
+ }
+
+ public static byte[] handleJpa(final String name, final byte[] buffer, final ClassLoader loader) throws IOException {
+ if (name.endsWith("Entity")) {
+ // hacky but avoid to build a full openjpa project/context
+ final PersistenceMetaDataFactory factory = new PersistenceMetaDataFactory();
+ factory.setTypes("org.apache.test.sirona.javaagent.OpenJPATest$ServiceSquareEntity");
+
+ final MetaDataRepository repos = new MetaDataRepository();
+ repos.setConfiguration(new OpenJPAConfigurationImpl());
+ repos.setMetaDataFactory(factory);
+
+ final BCClass type = new Project().loadClass(new ByteArrayInputStream(buffer), new URLClassLoader(new URL[0], loader.getParent()));
+ final PCEnhancer enhancer = new PCEnhancer(repos.getConfiguration(), type, repos, loader);
+ enhancer.setAddDefaultConstructor(true);
+ enhancer.setEnforcePropertyRestrictions(true);
+
+ if (enhancer.run() != PCEnhancer.ENHANCE_NONE) {
+ final BCClass pcb = enhancer.getPCBytecode();
+ final byte[] transformed = AsmAdaptor.toByteArray(pcb, pcb.toByteArray());
+ if (transformed != null) {
+ return transformed;
+ }
+ }
+ }
+ return buffer;
+ }
}
}
Modified: incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/JavaAgentRunner.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/JavaAgentRunner.java?rev=1713963&r1=1713962&r2=1713963&view=diff
==============================================================================
--- incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/JavaAgentRunner.java (original)
+++ incubator/sirona/trunk/agent/javaagent/src/test/java/org/apache/sirona/javaagent/JavaAgentRunner.java Thu Nov 12 03:08:58 2015
@@ -311,6 +311,9 @@ public class JavaAgentRunner extends Blo
url = loader.getResource(classFileName);
} else {
url = clazz.getResource(classFileName);
+ if (url == null) {
+ url = clazz.getResource('/' + classFileName);
+ }
}
if (url == null) {
@@ -325,7 +328,7 @@ public class JavaAgentRunner extends Blo
throw new MalformedURLException("no ! found in jar url spec:" + spec);
}
- url = new URL(spec.substring(0, separator++));
+ url = new URL(spec.substring(0, separator));
return new File(decode(url.getFile()));