Browse Source

HEAD changes to optionally avoid xml parsing of aop.xml files

extensions
aclement 17 years ago
parent
commit
4552ef89ff

+ 2
- 2
loadtime/src/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java View File

} }
}; };


List definitions = parseDefinitions(classLoader);
List definitions = weavingContext.getDefinitions(classLoader,this);
if (definitions.isEmpty()) { if (definitions.isEmpty()) {
disable(); // TODO maw Needed to ensure messages are flushed disable(); // TODO maw Needed to ensure messages are flushed
if (trace.isTraceEnabled()) trace.exit("initialize",definitions); if (trace.isTraceEnabled()) trace.exit("initialize",definitions);
* @param weaver * @param weaver
* @param loader * @param loader
*/ */
private List parseDefinitions(final ClassLoader loader) {
List parseDefinitions(final ClassLoader loader) {
if (trace.isTraceEnabled()) trace.enter("parseDefinitions",this,loader); if (trace.isTraceEnabled()) trace.enter("parseDefinitions",this,loader);


List definitions = new ArrayList(); List definitions = new ArrayList();

+ 24
- 2
loadtime/src/org/aspectj/weaver/loadtime/DefaultWeavingContext.java View File

import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.List;

import org.aspectj.weaver.tools.Trace;
import org.aspectj.weaver.tools.TraceFactory;
import org.aspectj.weaver.tools.WeavingAdaptor;


/** /**
* Use in non-OSGi environment * Use in non-OSGi environment
* @author David Knibb * @author David Knibb
*/ */
public class DefaultWeavingContext implements IWeavingContext { public class DefaultWeavingContext implements IWeavingContext {
protected ClassLoader loader; protected ClassLoader loader;
private String shortName; private String shortName;


private static Trace trace = TraceFactory.getTraceFactory().getTrace(DefaultWeavingContext.class);

/** /**
* Construct a new WeavingContext to use the specifed ClassLoader * Construct a new WeavingContext to use the specifed ClassLoader
* This is the constructor which should be used. * This is the constructor which should be used.
* @param loader * @param loader
*/ */
public DefaultWeavingContext(ClassLoader loader) { public DefaultWeavingContext(ClassLoader loader) {
super();
this.loader = loader; this.loader = loader;
} }


} }
return isLocallyDefined; return isLocallyDefined;
} }

/**
* Simply call weaving adaptor back to parse aop.xml
*
* @param weaver
* @param loader
*/
public List getDefinitions(final ClassLoader loader, final WeavingAdaptor adaptor) {
if (trace.isTraceEnabled()) trace.enter("getDefinitions",this,new Object[] { loader, adaptor });
List definitions = ((ClassLoaderWeavingAdaptor)adaptor).parseDefinitions(loader);
if (trace.isTraceEnabled()) trace.exit("getDefinitions",definitions);
return definitions;
}
} }

+ 25
- 0
loadtime/testsrc/org/aspectj/weaver/loadtime/WeavingContextTest.java View File

import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.List;


import junit.framework.TestCase; import junit.framework.TestCase;


import org.aspectj.weaver.tools.WeavingAdaptor;

public class WeavingContextTest extends TestCase { public class WeavingContextTest extends TestCase {


private boolean called; private boolean called;
assertTrue("IWeavingContext not called",called); assertTrue("IWeavingContext not called",called);
} }


public void testGetDefinitions () throws Exception {
File file = new File("../loadtime/testdata");
URL fileURL = file.getCanonicalFile().toURL();
URLClassLoader loader = new URLClassLoader(new URL[] { fileURL },null);
IWeavingContext context = new TestWeavingContext(loader) {

public List getDefinitions(ClassLoader loader, WeavingAdaptor adaptor) {
called = true;
return super.getDefinitions(loader,adaptor);
}
};
ClassLoaderWeavingAdaptor adaptor = new ClassLoaderWeavingAdaptor();
adaptor.initialize(loader,context);
assertTrue("getDefinitions not called",called);
}
private static class TestWeavingContext implements IWeavingContext { private static class TestWeavingContext implements IWeavingContext {


private ClassLoader loader; private ClassLoader loader;
} }
return isLocallyDefined; return isLocallyDefined;
} }

public List getDefinitions(ClassLoader loader, WeavingAdaptor adaptor) {
return ((ClassLoaderWeavingAdaptor)adaptor).parseDefinitions(loader);
}
} }


protected void setUp() throws Exception { protected void setUp() throws Exception {

Loading…
Cancel
Save