aboutsummaryrefslogtreecommitdiffstats
path: root/loadtime
diff options
context:
space:
mode:
Diffstat (limited to 'loadtime')
-rw-r--r--loadtime/pom.xml8
-rw-r--r--loadtime/src/main/java/org/aspectj/weaver/loadtime/JRockitAgent.java84
-rw-r--r--loadtime/src/test/java/org/aspectj/bea/jvm/ClassLibraryImpl.java29
-rw-r--r--loadtime/src/test/java/org/aspectj/bea/jvm/JVMImpl.java24
-rw-r--r--loadtime/src/test/java/org/aspectj/loadtime/LoadtimeModuleTests.java2
-rw-r--r--loadtime/src/test/java/org/aspectj/weaver/loadtime/JRockitAgentTest.java228
6 files changed, 0 insertions, 375 deletions
diff --git a/loadtime/pom.xml b/loadtime/pom.xml
index d7333cd72..7c03455e5 100644
--- a/loadtime/pom.xml
+++ b/loadtime/pom.xml
@@ -66,14 +66,6 @@
<artifactId>xercesImpl</artifactId>
<version>${lib.ant.xerces.version}</version>
</dependency>
- <dependency>
- <groupId>jrockit</groupId>
- <artifactId>jrockit</artifactId>
- <version>1.0</version>
- <scope>system</scope>
- <systemPath>${project.basedir}/../lib/jrockit/jrockit.jar</systemPath>
- </dependency>
-
<dependency>
<!-- Identical to lib/ant/lib/ant.jar, a former system-scoped dependency -->
<groupId>ant</groupId>
diff --git a/loadtime/src/main/java/org/aspectj/weaver/loadtime/JRockitAgent.java b/loadtime/src/main/java/org/aspectj/weaver/loadtime/JRockitAgent.java
deleted file mode 100644
index 56ad0e958..000000000
--- a/loadtime/src/main/java/org/aspectj/weaver/loadtime/JRockitAgent.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Matthew Webster - initial implementation
- *******************************************************************************/
-package org.aspectj.weaver.loadtime;
-
-import java.util.Stack;
-
-import com.bea.jvm.ClassLibrary;
-import com.bea.jvm.JVMFactory;
-
-/**
- * BEA JRocket JMAPI agent.
- *
- * Use "-Xmanagement:class=org.aspectj.weaver.loadtime.JRockitAgent"
- */
-public class JRockitAgent implements com.bea.jvm.ClassPreProcessor {
-
- private ClassPreProcessor preProcessor;
-
- /*
- * This is used to implement the recursion protection offered by JVMTI but not by JRockit JMAPI. I we are called to preProcess a
- * class while already preProcessing another we will return immediately
- */
- private static ThreadLocalStack stack = new ThreadLocalStack();
-
- public JRockitAgent() {
- this.preProcessor = new Aj();
-
- ClassLibrary cl = JVMFactory.getJVM().getClassLibrary();
- cl.setClassPreProcessor(this);
- }
-
- public byte[] preProcess(ClassLoader loader, String className, byte[] bytes) {
- byte[] newBytes = bytes;
-
- if (stack.empty()) {
- stack.push(className);
- newBytes = preProcessor.preProcess(className, bytes, loader, null);
- stack.pop();
- }
-
- return newBytes;
- }
-
- private static class ThreadLocalStack extends ThreadLocal {
-
- public boolean empty() {
- Stack stack = (Stack) get();
- return stack.empty();
- }
-
- public Object peek() {
- Object obj = null;
- Stack stack = (Stack) get();
- if (!stack.empty())
- obj = stack.peek();
- return obj;
- }
-
- public void push(Object obj) {
- Stack stack = (Stack) get();
- if (!stack.empty() && obj == stack.peek())
- throw new RuntimeException(obj.toString());
- stack.push(obj);
- }
-
- public Object pop() {
- Stack stack = (Stack) get();
- return stack.pop();
- }
-
- protected Object initialValue() {
- return new Stack();
- }
- }
-
-}
diff --git a/loadtime/src/test/java/org/aspectj/bea/jvm/ClassLibraryImpl.java b/loadtime/src/test/java/org/aspectj/bea/jvm/ClassLibraryImpl.java
deleted file mode 100644
index 8b4c58446..000000000
--- a/loadtime/src/test/java/org/aspectj/bea/jvm/ClassLibraryImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Matthew Webster - initial implementation
- *******************************************************************************/
-package org.aspectj.bea.jvm;
-
-import com.bea.jvm.ClassLibrary;
-import com.bea.jvm.ClassPreProcessor;
-import com.bea.jvm.NotAvailableException;
-
-public class ClassLibraryImpl implements ClassLibrary {
-
- private ClassPreProcessor preProcessor;
-
- public ClassPreProcessor getClassPreProcessor() throws NotAvailableException {
- return preProcessor;
- }
-
- public void setClassPreProcessor(ClassPreProcessor classPreProcessor) {
- this.preProcessor = classPreProcessor;
- }
-
-}
diff --git a/loadtime/src/test/java/org/aspectj/bea/jvm/JVMImpl.java b/loadtime/src/test/java/org/aspectj/bea/jvm/JVMImpl.java
deleted file mode 100644
index caae32e6f..000000000
--- a/loadtime/src/test/java/org/aspectj/bea/jvm/JVMImpl.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Matthew Webster - initial implementation
- *******************************************************************************/
-package org.aspectj.bea.jvm;
-
-import com.bea.jvm.ClassLibrary;
-import com.bea.jvm.JVM;
-
-public class JVMImpl implements JVM {
-
- private ClassLibrary libarary = new ClassLibraryImpl();
-
- public ClassLibrary getClassLibrary() {
- return libarary;
- }
-
-}
diff --git a/loadtime/src/test/java/org/aspectj/loadtime/LoadtimeModuleTests.java b/loadtime/src/test/java/org/aspectj/loadtime/LoadtimeModuleTests.java
index 9d365ffab..352156f82 100644
--- a/loadtime/src/test/java/org/aspectj/loadtime/LoadtimeModuleTests.java
+++ b/loadtime/src/test/java/org/aspectj/loadtime/LoadtimeModuleTests.java
@@ -10,7 +10,6 @@ package org.aspectj.loadtime;
import org.aspectj.weaver.loadtime.AjTest;
import org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptorTest;
-import org.aspectj.weaver.loadtime.JRockitAgentTest;
import org.aspectj.weaver.loadtime.LoadtimeTest;
import org.aspectj.weaver.loadtime.WeavingContextTest;
import org.aspectj.weaver.loadtime.WeavingURLClassLoaderTest;
@@ -32,7 +31,6 @@ public class LoadtimeModuleTests extends TestCase {
suite.addTestSuite(DocumentParserTest.class);
suite.addTestSuite(AjTest.class);
suite.addTestSuite(ClassLoaderWeavingAdaptorTest.class);
- suite.addTestSuite(JRockitAgentTest.class);
suite.addTestSuite(LoadtimeTest.class);
suite.addTestSuite(WeavingContextTest.class);
suite.addTestSuite(WeavingURLClassLoaderTest.class);
diff --git a/loadtime/src/test/java/org/aspectj/weaver/loadtime/JRockitAgentTest.java b/loadtime/src/test/java/org/aspectj/weaver/loadtime/JRockitAgentTest.java
deleted file mode 100644
index 7f9d235d0..000000000
--- a/loadtime/src/test/java/org/aspectj/weaver/loadtime/JRockitAgentTest.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Matthew Webster - initial implementation
- *******************************************************************************/
-package org.aspectj.weaver.loadtime;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.jar.JarFile;
-import java.util.zip.ZipEntry;
-
-import org.aspectj.util.FileUtil;
-import org.aspectj.util.LangUtil;
-
-import com.bea.jvm.ClassPreProcessor;
-import com.bea.jvm.JVMFactory;
-
-import junit.framework.TestCase;
-
-public class JRockitAgentTest extends TestCase {
-
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testJRockitAgent() {
- ClassPreProcessor preProcessor = new JRockitAgent();
- ClassPreProcessor expectedPreProcessor = JVMFactory.getJVM().getClassLibrary().getClassPreProcessor();
- assertEquals("JRocketAgent must be registered", expectedPreProcessor, preProcessor);
- }
-
- public void testPreProcess() {
- ClassPreProcessor preProcessor = new JRockitAgent();
- preProcessor.preProcess(null, "foo.Bar", new byte[] {});
- }
-
- public void testJrockitRecursionProtection() {
- URL jrockit = FileUtil.getFileURL(new File("../lib/jrockit/jrockit.jar"));
- URL[] urls = new URL[] {jrockit};
- URLClassLoader thisLoader = new URLClassLoader(urls, getClass().getClassLoader());
- try {
- ClassLoader loader = new JRockitClassLoader(thisLoader);
- Class.forName("java.lang.Object", false, loader);
- Class.forName("junit.framework.TestCase", false, loader);
- } catch (Exception ex) {
- ex.printStackTrace();
- fail(ex.toString());
- }
- }
-
- private class JRockitClassLoader extends ClassLoader {
-
- public final static boolean debug = false;
-
- private List path = new LinkedList();
- // private com.bea.jvm.ClassPreProcessor agent;
- private Object agent;
- private Method preProcess;
-
- public JRockitClassLoader(URLClassLoader clone) throws Exception {
- /* Use extensions loader */
- super(clone.getParent());
-
- URL[] urls = clone.getURLs();
- for (URL value : urls) {
- Object pathElement;
- URL url = value;
- if (debug)
- System.out.println("JRockitClassLoader.JRockitClassLoader() url=" + url.getPath());
- File file = new File(encode(url.getFile()));
- if (debug)
- System.out.println("JRockitClassLoader.JRockitClassLoader() file" + file);
- if (file.isDirectory())
- pathElement = file;
- else if (file.exists() && file.getName().endsWith(".jar"))
- pathElement = new JarFile(file);
- else
- throw new RuntimeException(file.getAbsolutePath());
- path.add(pathElement);
- }
-
- Class agentClazz = Class.forName("org.aspectj.weaver.loadtime.JRockitAgent", false, this);
- Object obj = agentClazz.getDeclaredConstructor().newInstance();
- if (debug)
- System.out.println("JRockitClassLoader.JRockitClassLoader() obj=" + obj);
- this.agent = obj;
- byte[] bytes = new byte[] {};
- Class[] parameterTypes = new Class[] { java.lang.ClassLoader.class, java.lang.String.class, bytes.getClass() };
- preProcess = agentClazz.getMethod("preProcess", parameterTypes);
- }
-
- /* Get rid of escaped characters */
- private String encode(String s) {
- StringBuffer result = new StringBuffer();
- int i = s.indexOf("%");
- while (i != -1) {
- result.append(s.substring(0, i));
- String escaped = s.substring(i + 1, i + 3);
- s = s.substring(i + 3);
- Integer value = Integer.valueOf(escaped, 16);
- result.append(Character.valueOf((char) value.intValue()));
- i = s.indexOf("%");
- }
- result.append(s);
- return result.toString();
- }
-
- protected Class findClass(String name) throws ClassNotFoundException {
- if (debug)
- System.out.println("> JRockitClassLoader.findClass() name=" + name);
- Class clazz = null;
- try {
- clazz = super.findClass(name);
- } catch (ClassNotFoundException ex) {
- for (Iterator i = path.iterator(); clazz == null && i.hasNext();) {
- byte[] classBytes = null;
- try {
- Object pathElement = i.next();
- if (pathElement instanceof File) {
- File dir = (File) pathElement;
- String className = name.replace('.', '/') + ".class";
- File classFile = new File(dir, className);
- if (classFile.exists())
- classBytes = loadClassFromFile(name, classFile);
- } else {
- JarFile jar = (JarFile) pathElement;
- String className = name.replace('.', '/') + ".class";
- ZipEntry entry = jar.getEntry(className);
- if (entry != null)
- classBytes = loadBytesFromZipEntry(jar, entry);
- }
-
- if (classBytes != null) {
- clazz = defineClass(name, classBytes);
- }
- } catch (IOException ioException) {
- ex.printStackTrace();
- }
- }
- }
-
- if (debug)
- System.out.println("< JRockitClassLoader.findClass() name=" + name);
- return clazz;
- }
-
- private Class defineClass(String name, byte[] bytes) {
- if (debug)
- System.out.println("> JRockitClassLoader.defineClass() name=" + name);
- try {
- if (agent != null)
- preProcess.invoke(agent, new Object[] { this, name, bytes });
- } catch (IllegalAccessException iae) {
- iae.printStackTrace();
- throw new ClassFormatError(iae.getMessage());
- } catch (InvocationTargetException ite) {
- ite.printStackTrace();
- throw new ClassFormatError(ite.getTargetException().getMessage());
- }
- if (debug)
- System.out.println("< JRockitClassLoader.defineClass() name=" + name);
- return super.defineClass(name, bytes, 0, bytes.length);
- }
-
- private byte[] loadClassFromFile(String name, File file) throws IOException {
- if (debug)
- System.out.println("JRockitClassLoader.loadClassFromFile() file=" + file);
-
- byte[] bytes;
- bytes = new byte[(int) file.length()];
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(file);
- bytes = readBytes(fis, bytes);
- } finally {
- if (fis != null)
- fis.close();
- }
-
- return bytes;
- }
-
- private byte[] loadBytesFromZipEntry(JarFile jar, ZipEntry entry) throws IOException {
- if (debug)
- System.out.println("JRockitClassLoader.loadBytesFromZipEntry() entry=" + entry);
-
- byte[] bytes;
- bytes = new byte[(int) entry.getSize()];
- InputStream is = null;
- try {
- is = jar.getInputStream(entry);
- bytes = readBytes(is, bytes);
- } finally {
- if (is != null)
- is.close();
- }
-
- return bytes;
- }
-
- private byte[] readBytes(InputStream is, byte[] bytes) throws IOException {
- for (int offset = 0; offset < bytes.length;) {
- int read = is.read(bytes, offset, bytes.length - offset);
- offset += read;
- }
- return bytes;
- }
- }
-}