diff options
author | aclement <aclement> | 2005-10-14 07:23:40 +0000 |
---|---|---|
committer | aclement <aclement> | 2005-10-14 07:23:40 +0000 |
commit | 8982544f13eb5cb082ca19db2bd2c5f77b1e5965 (patch) | |
tree | d7e4c96b17ce76331686fc3cab53326d0087f039 /weaver/testsrc | |
parent | 51a0fe4edd56a626ef5570e43bd2225be0dcb4dd (diff) | |
download | aspectj-8982544f13eb5cb082ca19db2bd2c5f77b1e5965.tar.gz aspectj-8982544f13eb5cb082ca19db2bd2c5f77b1e5965.zip |
Code for enhancement 107741: Updated WeavingURLClassLoader (thanks to Matthew Webster for the patch)
Diffstat (limited to 'weaver/testsrc')
-rw-r--r-- | weaver/testsrc/org/aspectj/weaver/BcweaverTests.java | 1 | ||||
-rw-r--r-- | weaver/testsrc/org/aspectj/weaver/WeavingURLClassLoaderTest.java | 501 |
2 files changed, 0 insertions, 502 deletions
diff --git a/weaver/testsrc/org/aspectj/weaver/BcweaverTests.java b/weaver/testsrc/org/aspectj/weaver/BcweaverTests.java index 94cb7ddac..1c59bd841 100644 --- a/weaver/testsrc/org/aspectj/weaver/BcweaverTests.java +++ b/weaver/testsrc/org/aspectj/weaver/BcweaverTests.java @@ -52,7 +52,6 @@ public class BcweaverTests extends TestCase { //$JUnit-BEGIN$ suite.addTestSuite(MemberTestCase.class); suite.addTestSuite(TypeXTestCase.class); - suite.addTestSuite(WeavingURLClassLoaderTest.class); suite.addTestSuite(WeaverMessagesTestCase.class); suite.addTestSuite(DumpTestCase.class); //$JUnit-END$ diff --git a/weaver/testsrc/org/aspectj/weaver/WeavingURLClassLoaderTest.java b/weaver/testsrc/org/aspectj/weaver/WeavingURLClassLoaderTest.java deleted file mode 100644 index c21115619..000000000 --- a/weaver/testsrc/org/aspectj/weaver/WeavingURLClassLoaderTest.java +++ /dev/null @@ -1,501 +0,0 @@ -/* ******************************************************************* - * Copyright (c) 2004 IBM Corporation - * All rights reserved. - * This program and the accompanying materials are made available - * under the terms of the Common Public License v1.0 - * which accompanies this distribution and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * Matthew Webster initial implementation - * ******************************************************************/ - -package org.aspectj.weaver; - -import java.io.File; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URL; -import java.util.Enumeration; -import java.util.Properties; - -import junit.framework.TestCase; - -import org.aspectj.bridge.AbortException; -import org.aspectj.testing.util.TestUtil.TestError; -import org.aspectj.util.FileUtil; -import org.aspectj.weaver.tools.WeavingAdaptor; - -/** - * @author websterm - * - * To change the template for this generated type comment go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -public class WeavingURLClassLoaderTest extends TestCase { - - private final static String ASPECTJRT = "../runtime/bin"; - private final static String CLASSES_JAR = BcweaverTests.TESTDATA_PATH + "/ltw-classes.jar"; - private final static String WOVEN_JAR = BcweaverTests.TESTDATA_PATH + "/ltw-woven.jar"; - private final static String JUNK_JAR = BcweaverTests.TESTDATA_PATH + "/ltw-junk.jar"; - private final static String ADVICE_ASPECTS = BcweaverTests.TESTDATA_PATH + "/ltw-aspects.jar"; - private final static String DW_ADVICE_ASPECTS = BcweaverTests.TESTDATA_PATH + "/ltw-dwaspects.jar"; - private final static String DE_ADVICE_ASPECTS = BcweaverTests.TESTDATA_PATH + "/ltw-deaspects.jar"; - private final static String AROUNDCLOSURE_ASPECTS = BcweaverTests.TESTDATA_PATH + "/ltw-acaspects.jar"; - private final static String ITD_ASPECTS = BcweaverTests.TESTDATA_PATH + "/ltw-itdaspects.jar"; - private final static String PER_ASPECTS = BcweaverTests.TESTDATA_PATH + "/ltw-peraspects.jar"; - private final static String TEST_BASE = BcweaverTests.TESTDATA_PATH + "/WeavingURLClassLoaderTest/builtLibs"; - - private final static String NULL = "null"; - - private Properties savedProperties; - - public WeavingURLClassLoaderTest(String name) { - super(name); - } - - public void testLoadClass () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,""); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,CLASSES_JAR); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] {}); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testLoadWovenClass () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,""); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,WOVEN_JAR); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAspect" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testWeaveWovenClass () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,ADVICE_ASPECTS); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,ADVICE_ASPECTS + File.pathSeparator + WOVEN_JAR); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - loader.loadClass("LTWHelloWorld"); - fail("Expecting org.aspectj.bridge.AbortException"); - } - catch (Exception ex) { - assertTrue("Expecting org.aspectj.bridge.AbortException caught " + ex,(ex instanceof AbortException)); - } - } - - public void testWeavingURLClassLoader () { - URL classes = FileUtil.getFileURL(new File(CLASSES_JAR)); - URL aspectjrt = FileUtil.getFileURL(new File(ASPECTJRT)); - URL aspects = FileUtil.getFileURL(new File(ADVICE_ASPECTS)); - URL[] classURLs = new URL[] { aspects, classes, aspectjrt }; - URL[] aspectURLs = new URL[] { aspects }; - WeavingURLClassLoader loader = new WeavingURLClassLoader(classURLs,aspectURLs,getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAspect" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testWeaveAdvice () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,ADVICE_ASPECTS); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,ADVICE_ASPECTS + File.pathSeparator + CLASSES_JAR + File.pathSeparator + ASPECTJRT); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAspect" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testWeaveAdviceWithVerbose () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,ADVICE_ASPECTS); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,ADVICE_ASPECTS + File.pathSeparator + CLASSES_JAR + File.pathSeparator + ASPECTJRT); - setSystemProperty(WeavingAdaptor.WEAVING_ADAPTOR_VERBOSE,"true"); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAspect" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testWeaveAdviceWithWeaveInfo () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,ADVICE_ASPECTS); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,ADVICE_ASPECTS + File.pathSeparator + CLASSES_JAR + File.pathSeparator + ASPECTJRT); - setSystemProperty(WeavingAdaptor.SHOW_WEAVE_INFO_PROPERTY,"true"); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAspect" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testWeaveDeclareWarningAdvice () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,DW_ADVICE_ASPECTS); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,DW_ADVICE_ASPECTS + File.pathSeparator + CLASSES_JAR); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] {} ); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testWeaveDeclareErrorAdvice () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,DE_ADVICE_ASPECTS); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,DE_ADVICE_ASPECTS + File.pathSeparator + CLASSES_JAR); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] {} ); - fail("Expecting org.aspectj.bridge.AbortException"); - } - catch (Exception ex) { - assertTrue("Expecting org.aspectj.bridge.AbortException caught " + ex,(ex instanceof AbortException)); - } - } - - public void testWeaveAroundClosure () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,AROUNDCLOSURE_ASPECTS); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,AROUNDCLOSURE_ASPECTS + File.pathSeparator + CLASSES_JAR + File.pathSeparator + ASPECTJRT); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAroundClosure" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testWeavingITD () { - URL classes = FileUtil.getFileURL(new File(CLASSES_JAR)); - URL aspectjrt = FileUtil.getFileURL(new File(ASPECTJRT)); - URL aspects = FileUtil.getFileURL(new File(ITD_ASPECTS)); - URL[] classURLs = new URL[] { aspects, classes, aspectjrt }; - URL[] aspectURLs = new URL[] { aspects }; - WeavingURLClassLoader loader = new WeavingURLClassLoader(classURLs,aspectURLs,getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWInterfaceITD", "LTWFieldITD", "LTWMethodITD" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testWeavingPer () { - URL classes = FileUtil.getFileURL(new File(CLASSES_JAR)); - URL aspectjrt = FileUtil.getFileURL(new File(ASPECTJRT)); - URL aspects = FileUtil.getFileURL(new File(PER_ASPECTS)); - URL[] classURLs = new URL[] { aspects, classes, aspectjrt }; - URL[] aspectURLs = new URL[] { aspects }; - WeavingURLClassLoader loader = new WeavingURLClassLoader(classURLs,aspectURLs,getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWPerthis" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testWeavingAspects () { - URL classes = FileUtil.getFileURL(new File(CLASSES_JAR)); - URL aspectjrt = FileUtil.getFileURL(new File(ASPECTJRT)); - URL aspects1 = FileUtil.getFileURL(new File(ADVICE_ASPECTS)); - URL aspects2 = FileUtil.getFileURL(new File(AROUNDCLOSURE_ASPECTS)); - URL aspects3 = FileUtil.getFileURL(new File(ITD_ASPECTS)); - URL aspects4 = FileUtil.getFileURL(new File(PER_ASPECTS)); - URL[] classURLs = new URL[] { aspects1, aspects2, aspects3, aspects4, classes, aspectjrt }; - URL[] aspectURLs = new URL[] { aspects1, aspects2, aspects3, aspects4 }; - WeavingURLClassLoader loader = new WeavingURLClassLoader(classURLs,aspectURLs,getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAspect", "LTWAroundClosure", "LTWPerthis", "LTWInterfaceITD", "LTWFieldITD", "LTWMethodITD", "LTWPerthis"}); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testJunkJar () { - File junkJar = new File(JUNK_JAR); - assertFalse(junkJar + " should not exist",junkJar.exists()); - - URL classes = FileUtil.getFileURL(junkJar); - URL[] classURLs = new URL[] { classes }; - URL[] aspectURLs = new URL[] { }; - WeavingURLClassLoader loader = new WeavingURLClassLoader(classURLs,aspectURLs,getClass().getClassLoader()); - - try { - loader.loadClass("LTWHelloWorld"); - fail("Expecting java.lang.ClassNotFoundException"); - } - catch (Exception ex) { - assertTrue("Expecting java.lang.ClassNotFoundException caught " + ex,(ex instanceof ClassNotFoundException)); - } - } - - public void testJunkAspectJar () { - File junkJar = new File(JUNK_JAR); - assertFalse(junkJar + " should not exist",junkJar.exists()); - - URL aspects = FileUtil.getFileURL(junkJar); - URL[] classURLs = new URL[] { aspects }; - URL[] aspectURLs = new URL[] { aspects }; - - try { - new WeavingURLClassLoader(classURLs,aspectURLs,getClass().getClassLoader()); - fail("Expecting org.aspectj.bridge.AbortException"); - } - catch (Exception ex) { - assertTrue("Expecting org.aspectj.bridge.AbortException caught " + ex,(ex instanceof org.aspectj.bridge.AbortException)); - } - } - - public void testAddURL () { - URL classes = FileUtil.getFileURL(new File(CLASSES_JAR)); - URL aspectjrt = FileUtil.getFileURL(new File(ASPECTJRT)); - URL aspects = FileUtil.getFileURL(new File(ADVICE_ASPECTS)); - URL[] classURLs = new URL[] { aspects, aspectjrt }; - URL[] aspectURLs = new URL[] { aspects }; - - WeavingURLClassLoader loader = new WeavingURLClassLoader(classURLs,aspectURLs,getClass().getClassLoader()); - loader.addURL(classes); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAspect" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testParentChild() { - URL classes = FileUtil.getFileURL(new File(CLASSES_JAR)); - URL aspectjrt = FileUtil.getFileURL(new File(ASPECTJRT)); - URL aspects = FileUtil.getFileURL(new File(ADVICE_ASPECTS)); - - URL[] classURLs = new URL[] { aspects, aspectjrt }; - URL[] aspectURLs = new URL[] { aspects }; - WeavingURLClassLoader parent = new WeavingURLClassLoader(classURLs,aspectURLs,getClass().getClassLoader()); - - classURLs = new URL[] { classes }; - aspectURLs = new URL[] { }; - WeavingURLClassLoader child = new WeavingURLClassLoader(classURLs,aspectURLs,parent); - - try { - Class clazz = child.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAspect" }); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - /* - * Aspects on ASPECTPATH but missing from CLASSPATH - */ - public void testIncompletePath () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,ADVICE_ASPECTS); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,CLASSES_JAR); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("LTWHelloWorld"); - invokeMain(clazz,new String[] { "LTWAspect" }); - fail("Expecting java.lang.NoClassDefFoundError"); - } - catch (Exception ex) { - } - } - - /* - * Ensure package object is correct - */ - public void testPackage () { - setSystemProperty(WeavingURLClassLoader.WEAVING_ASPECT_PATH,""); - setSystemProperty(WeavingURLClassLoader.WEAVING_CLASS_PATH,CLASSES_JAR); - WeavingURLClassLoader loader = new WeavingURLClassLoader(getClass().getClassLoader()); - - try { - Class clazz = loader.loadClass("ltw.LTWPackageTest"); - invokeMain(clazz,new String[] { }); - Package pakkage = clazz.getPackage(); - assertTrue("Expected 'ltw' got " + pakkage,(pakkage != null)); - } - catch (Exception ex) { - fail(ex.toString()); - } - } - - public void testZipAspects() { - try { - doTestZipAspects(TEST_BASE + "/aspect.zip"); - } catch (Error ex) { - failWithException(ex); - } catch (Exception ex) { - failWithException(ex); - } - } - - public void testJarAspects() { - try { - doTestZipAspects(TEST_BASE + "/aspect.jar"); - } catch (Error ex) { - failWithException(ex); - } catch (Exception ex) { - failWithException(ex); - } - } - - /** PR#106736 */ - public void testClassAspects() { - try { - doTestZipAspects(TEST_BASE + "/classes"); - } catch (Error ex) { - failWithException(ex); - } catch (Exception ex) { - failWithException(ex); - } - } - - public void testZipJarAspectsTest() { - try { - doTestZipAspectsTest(); - // bug: doTestZipAspects("") attempts to load packag.Aspect? - fail("expected error to be thrown"); - } catch (InvocationTargetException ex) { - // expecting error - assertTrue(ex.getTargetException() instanceof Error); - } catch (RuntimeException ex) { - // expecting error - String message = ex.getMessage(); - // expecting error - seems to be wrapped wrong - if (-1 == message.indexOf("around advice")) { - failWithException(ex); - } - } catch (Error ex) { - failWithException(ex); - } catch (Exception ex) { - failWithException(ex); - } - } - - private void doTestZipAspects(String aspectLib) throws Exception { - File classZip = new File(TEST_BASE + "/main.zip"); - File zipLib = new File(aspectLib); - URL classes = FileUtil.getFileURL(classZip); - URL aspectjrt = FileUtil.getFileURL(new File(ASPECTJRT)); - URL aspects = FileUtil.getFileURL(zipLib); - URL[] classURLs = new URL[] { aspects, classes, aspectjrt }; - URL[] aspectURLs = new URL[] { aspects }; - ClassLoader parent = getClass().getClassLoader(); - WeavingURLClassLoader loader - = new WeavingURLClassLoader(classURLs, aspectURLs, parent); - Class clazz = loader.loadClass("packag.Main"); - invokeMain(clazz,new String[] { }); - // throws Error unless advice applies - } - - private void doTestZipAspectsTest() throws Exception { - URL classes = FileUtil.getFileURL(new File(TEST_BASE + "/main.zip")); - URL aspectjrt = FileUtil.getFileURL(new File(ASPECTJRT)); - URL[] classURLs = new URL[] { classes, aspectjrt }; - ClassLoader parent = getClass().getClassLoader(); - WeavingURLClassLoader loader - = new WeavingURLClassLoader(classURLs, new URL[] { }, parent); - Class clazz = loader.loadClass("packag.Main"); - invokeMain(clazz,new String[] { }); - // throws Error because advice does not apply - } - - private void failWithException(Throwable t) { - throw new TestError(t.getMessage(), t); - } - public static void invokeMain (Class clazz, String[] args) - { - Class[] paramTypes = new Class[1]; - paramTypes[0] = args.getClass(); - - try { - Method method = clazz.getDeclaredMethod("main",paramTypes); - Object[] params = new Object[1]; - params[0] = args; - method.invoke(null,params); - } - catch (InvocationTargetException ex) { - throw new RuntimeException(ex.getTargetException().toString()); - } - catch (Exception ex) { - throw new RuntimeException(ex.toString()); - } - } - - private void setSystemProperty (String key, String value) { - Properties systemProperties = System.getProperties(); - copyProperty(key,systemProperties,savedProperties); - systemProperties.setProperty(key,value); - } - - private static void copyProperty (String key, Properties from, Properties to) { - String value = from.getProperty(key,NULL); - to.setProperty(key,value); - } - - protected void setUp() throws Exception { - super.setUp(); - savedProperties = new Properties(); - } - - protected void tearDown() throws Exception { - super.tearDown(); - - /* Restore system properties */ - Properties systemProperties = System.getProperties(); - for (Enumeration enu = savedProperties.keys(); enu.hasMoreElements(); ) { - String key = (String)enu.nextElement(); - String value = savedProperties.getProperty(key); - if (value == NULL) systemProperties.remove(key); - else systemProperties.setProperty(key,value); - } - } - -} |