SPR-6394
SPR-6333 + eliminated compile-time dependency on GlassFish custom API for the GlassFish LTW + added support for GlassFish 3
This commit is contained in:
@@ -16,7 +16,8 @@
|
||||
|
||||
package org.springframework.instrument.classloading.glassfish;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertSame;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.lang.instrument.ClassFileTransformer;
|
||||
import java.net.URL;
|
||||
@@ -32,20 +33,22 @@ import org.easymock.ArgumentsMatcher;
|
||||
import org.easymock.MockControl;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.springframework.instrument.classloading.LoadTimeWeaver;
|
||||
|
||||
import com.sun.enterprise.loader.InstrumentableClassLoader;
|
||||
|
||||
// converting away from old-style EasyMock APIs was problematic with this class
|
||||
@SuppressWarnings("deprecation")
|
||||
@Ignore
|
||||
public class GlassFishLoadTimeWeaverTests {
|
||||
|
||||
private MockControl<InstrumentableClassLoader> loaderCtrl;
|
||||
private InstrumentableClassLoader loader;
|
||||
private MockControl loaderCtrl;
|
||||
private GlassFishClassLoaderAdapter loader;
|
||||
private LoadTimeWeaver ltw;
|
||||
|
||||
private class DummyInstrumentableClassLoader extends SecureClassLoader implements InstrumentableClassLoader {
|
||||
private class DummyInstrumentableClassLoader extends SecureClassLoader {
|
||||
|
||||
static String INSTR_CL_NAME = GlassFishClassLoaderAdapter.INSTRUMENTABLE_CLASSLOADER_GLASSFISH_V2;
|
||||
|
||||
public DummyInstrumentableClassLoader() {
|
||||
super();
|
||||
@@ -55,29 +58,34 @@ public class GlassFishLoadTimeWeaverTests {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
private List<ClassTransformer> transformers = new ArrayList<ClassTransformer>();
|
||||
private List<ClassTransformer> v2Transformers = new ArrayList<ClassTransformer>();
|
||||
private List<ClassFileTransformer> v3Transformers = new ArrayList<ClassFileTransformer>();
|
||||
|
||||
public void addTransformer(ClassTransformer transformer) {
|
||||
transformers.add(transformer);
|
||||
v2Transformers.add(transformer);
|
||||
}
|
||||
|
||||
public void addTransformer(ClassFileTransformer transformer) {
|
||||
v3Transformers.add(transformer);
|
||||
}
|
||||
|
||||
public ClassLoader copy() {
|
||||
return new DummyInstrumentableClassLoader();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> loadClass(String name) throws ClassNotFoundException {
|
||||
if (INSTR_CL_NAME.equals(name)) {
|
||||
return this.getClass();
|
||||
}
|
||||
|
||||
return getClass().getClassLoader().loadClass(name);
|
||||
}
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
loaderCtrl = MockControl.createControl(InstrumentableClassLoader.class);
|
||||
loader = loaderCtrl.getMock();
|
||||
loaderCtrl.replay();
|
||||
|
||||
ltw = new GlassFishLoadTimeWeaver() {
|
||||
@Override
|
||||
protected InstrumentableClassLoader determineClassLoader(ClassLoader cl) {
|
||||
return loader;
|
||||
}
|
||||
};
|
||||
ltw = new GlassFishLoadTimeWeaver(new DummyInstrumentableClassLoader());
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -91,8 +99,7 @@ public class GlassFishLoadTimeWeaverTests {
|
||||
try {
|
||||
ltw = new GlassFishLoadTimeWeaver();
|
||||
fail("expected exception");
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
} catch (IllegalArgumentException ex) {
|
||||
// expected
|
||||
}
|
||||
|
||||
@@ -103,8 +110,7 @@ public class GlassFishLoadTimeWeaverTests {
|
||||
try {
|
||||
ltw = new GlassFishLoadTimeWeaver(null);
|
||||
fail("expected exception");
|
||||
}
|
||||
catch (RuntimeException e) {
|
||||
} catch (RuntimeException e) {
|
||||
// expected
|
||||
}
|
||||
|
||||
@@ -127,10 +133,9 @@ public class GlassFishLoadTimeWeaverTests {
|
||||
|
||||
@Test
|
||||
public void testAddTransformer() {
|
||||
ClassFileTransformer transformer = MockControl.createNiceControl(
|
||||
ClassFileTransformer.class).getMock();
|
||||
ClassFileTransformer transformer = MockControl.createNiceControl(ClassFileTransformer.class).getMock();
|
||||
loaderCtrl.reset();
|
||||
loader.addTransformer(new ClassTransformerAdapter(transformer));
|
||||
loader.addTransformer(transformer);
|
||||
loaderCtrl.setMatcher(new ArgumentsMatcher() {
|
||||
|
||||
public boolean matches(Object[] arg0, Object[] arg1) {
|
||||
@@ -156,10 +161,9 @@ public class GlassFishLoadTimeWeaverTests {
|
||||
public void testGetThrowawayClassLoader() {
|
||||
loaderCtrl.reset();
|
||||
ClassLoader cl = new URLClassLoader(new URL[0]);
|
||||
loaderCtrl.expectAndReturn(loader.copy(), cl);
|
||||
loaderCtrl.expectAndReturn(loader.getClassLoader(), cl);
|
||||
loaderCtrl.replay();
|
||||
|
||||
assertSame(ltw.getThrowawayClassLoader(), cl);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user