diff --git a/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereClassLoaderAdapter.java b/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereClassLoaderAdapter.java index 234b4c77b12..cc0a051e435 100644 --- a/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereClassLoaderAdapter.java +++ b/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereClassLoaderAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2011 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ import org.springframework.util.Assert; * called through reflection) from the load-time weaver. * * @author Costin Leau + * @since 3.1 */ class WebSphereClassLoaderAdapter { @@ -58,14 +59,14 @@ class WebSphereClassLoaderAdapter { addPreDefinePlugin = classLoader.getClass().getMethod("addPreDefinePlugin", wsPreProcessorClass); transformerList = wsCompoundClassLoaderClass.getDeclaredField(PLUGINS_FIELD); transformerList.setAccessible(true); - - } catch (Exception ex) { + } + catch (Exception ex) { throw new IllegalStateException( "Could not initialize WebSphere LoadTimeWeaver because WebSphere 7 API classes are not available", ex); } - Assert.isInstanceOf(wsCompoundClassLoaderClass, classLoader, "ClassLoader must be instance of [" - + COMPOUND_CLASS_LOADER_NAME + "]"); + Assert.isInstanceOf(wsCompoundClassLoaderClass, classLoader, + "ClassLoader must be instance of [" + COMPOUND_CLASS_LOADER_NAME + "]"); this.classLoader = classLoader; } @@ -81,9 +82,11 @@ class WebSphereClassLoaderAdapter { new Class[] { this.wsPreProcessorClass }, adapter); this.addPreDefinePlugin.invoke(this.classLoader, adapterInstance); - } catch (InvocationTargetException ex) { + } + catch (InvocationTargetException ex) { throw new IllegalStateException("WebSphere addPreDefinePlugin method threw exception", ex.getCause()); - } catch (Exception ex) { + } + catch (Exception ex) { throw new IllegalStateException("Could not invoke WebSphere addPreDefinePlugin method", ex); } } @@ -96,10 +99,13 @@ class WebSphereClassLoaderAdapter { List list = (List) transformerList.get(loader); list.clear(); return loader; - } catch (InvocationTargetException ex) { + } + catch (InvocationTargetException ex) { throw new IllegalStateException("WebSphere CompoundClassLoader constructor failed", ex.getCause()); - } catch (Exception ex) { + } + catch (Exception ex) { throw new IllegalStateException("Could not construct WebSphere CompoundClassLoader", ex); } } -} \ No newline at end of file + +} diff --git a/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereClassPreDefinePlugin.java b/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereClassPreDefinePlugin.java index 5cf576d3c6d..b4d70120e64 100644 --- a/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereClassPreDefinePlugin.java +++ b/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereClassPreDefinePlugin.java @@ -1,5 +1,5 @@ /* - * Copyright 2011 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,26 +23,24 @@ import java.security.CodeSource; import org.springframework.util.FileCopyUtils; /** - * Adapter that implements WebSphere 7.0 ClassPreProcessPlugin interface, delegating to a - * standard JDK {@link ClassFileTransformer} underneath. + * Adapter that implements WebSphere 7.0 ClassPreProcessPlugin interface, + * delegating to a standard JDK {@link ClassFileTransformer} underneath. * *
To avoid compile time checks again the vendor API, a dynamic proxy is
* being used.
*
* @author Costin Leau
+ * @since 3.1
*/
class WebSphereClassPreDefinePlugin implements InvocationHandler {
private final ClassFileTransformer transformer;
- private class Dummy {
- }
/**
- * Creates a new {@link WebSphereClassPreDefinePlugin}.
- *
- * @param transformer the {@link ClassFileTransformer} to be adapted (must
- * not be null)
+ * Create a new {@link WebSphereClassPreDefinePlugin}.
+ * @param transformer the {@link ClassFileTransformer} to be adapted
+ * (must not be null)
*/
public WebSphereClassPreDefinePlugin(ClassFileTransformer transformer) {
this.transformer = transformer;
@@ -53,33 +51,37 @@ class WebSphereClassPreDefinePlugin implements InvocationHandler {
String dummyClass = Dummy.class.getName().replace('.', '/');
byte[] bytes = FileCopyUtils.copyToByteArray(classLoader.getResourceAsStream(dummyClass + ".class"));
transformer.transform(classLoader, dummyClass, null, null, bytes);
- } catch (Throwable ex) {
+ }
+ catch (Throwable ex) {
throw new IllegalArgumentException("Cannot load transformer", ex);
}
}
+
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
String name = method.getName();
-
if ("equals".equals(name)) {
- return (Boolean.valueOf(proxy == args[0]));
- } else if ("hashCode".equals(name)) {
+ return (proxy == args[0]);
+ }
+ else if ("hashCode".equals(name)) {
return hashCode();
- } else if ("toString".equals(name)) {
+ }
+ else if ("toString".equals(name)) {
return toString();
- } else if ("transformClass".equals(name)) {
+ }
+ else if ("transformClass".equals(name)) {
return transform((String) args[0], (byte[]) args[1], (CodeSource) args[2], (ClassLoader) args[3]);
- } else {
+ }
+ else {
throw new IllegalArgumentException("Unknown method: " + method);
}
}
- public byte[] transform(String className, byte[] classfileBuffer, CodeSource codeSource, ClassLoader classLoader)
+ protected byte[] transform(String className, byte[] classfileBuffer, CodeSource codeSource, ClassLoader classLoader)
throws Exception {
- // NB: WebSphere passes className as "." without class while the
- // transformer expects a VM, "/" format
- byte[] result = transformer.transform(classLoader, className.replace('.', '/'), null, null, classfileBuffer);
+ // NB: WebSphere passes className as "." without class while the transformer expects a VM, "/" format
+ byte[] result = transformer.transform(classLoader, className.replace('.', '/'), null, null, classfileBuffer);
return (result != null ? result : classfileBuffer);
}
@@ -90,4 +92,9 @@ class WebSphereClassPreDefinePlugin implements InvocationHandler {
builder.append(this.transformer);
return builder.toString();
}
-}
\ No newline at end of file
+
+
+ private static class Dummy {
+ }
+
+}
diff --git a/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereLoadTimeWeaver.java b/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereLoadTimeWeaver.java
index 9d51d4adb58..a4df2427fae 100644
--- a/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereLoadTimeWeaver.java
+++ b/org.springframework.context/src/main/java/org/springframework/instrument/classloading/websphere/WebSphereLoadTimeWeaver.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011 the original author or authors.
+ * Copyright 2002-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -34,6 +34,7 @@ public class WebSphereLoadTimeWeaver implements LoadTimeWeaver {
private final WebSphereClassLoaderAdapter classLoader;
+
/**
* Create a new instance of the {@link WebSphereLoadTimeWeaver} class using
* the default {@link ClassLoader class loader}.
@@ -46,14 +47,15 @@ public class WebSphereLoadTimeWeaver implements LoadTimeWeaver {
/**
* Create a new instance of the {@link WebSphereLoadTimeWeaver} class using
* the supplied {@link ClassLoader}.
- * @param classLoader the ClassLoader to delegate to for
- * weaving (must not be null)
+ * @param classLoader the ClassLoader to delegate to for weaving
+ * (must not be null)
*/
public WebSphereLoadTimeWeaver(ClassLoader classLoader) {
Assert.notNull(classLoader, "ClassLoader must not be null");
this.classLoader = new WebSphereClassLoaderAdapter(classLoader);
}
+
public void addTransformer(ClassFileTransformer transformer) {
this.classLoader.addTransformer(transformer);
}
@@ -65,4 +67,5 @@ public class WebSphereLoadTimeWeaver implements LoadTimeWeaver {
public ClassLoader getThrowawayClassLoader() {
return this.classLoader.getThrowawayClassLoader();
}
-}
\ No newline at end of file
+
+}