[jboss-cvs] JBossAS SVN: r84564 - in projects/aop/branches/createspi: aop/src/main/java/org/jboss/aop/classpool and 20 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Feb 20 13:21:08 EST 2009
Author: kabir.khan at jboss.com
Date: 2009-02-20 13:21:08 -0500 (Fri, 20 Feb 2009)
New Revision: 84564
Added:
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultClassPoolRegistry.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/SecurityActions.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ClassPoolRegistry.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ClassPoolRegistryAware.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ConfigurationAware.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/WeaverAware.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/temp/
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/temp/Internal.java
Modified:
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/AspectManager.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassAdvisor.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassInstanceAdvisor.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassicWeavingStrategy.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/Domain.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/GeneratedInstanceAdvisorMixin.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/HotSwapStrategy.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/InterceptionMarkers.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/SuperClassesFirstWeavingStrategy.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/classpool/AOPClassPoolRepository.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/eclipsesupport/Agent.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/eclipsesupport/EclipseTestTransformer.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/instrument/Instrumentor.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultAOPSystem.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultConfiguration.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultManager.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultWeaver.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/ProxyFactory.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/container/ContainerProxyFactory.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/reflectprototype/AopClassPoolFactory.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/AOPSystem.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/AbstractAOPSystem.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/Configuration.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/Weaver.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/AOPTransformer.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/Agent.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/Compiler.java
projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/util/ReflectToJavassist.java
projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/jdk15/dynamic/common/ScenarioLoader.java
projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/jdk15/dynamic/common/scenario/ScenarioRunner.java
projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/unit/spi/AOPSystemUnitTestCase.java
projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/unit/spi/ConfigurationUnitTestCase.java
projects/aop/branches/createspi/asintegration-core/src/main/java/org/jboss/aop/asintegration/core/AspectManagerServiceDelegate.java
projects/aop/branches/createspi/asintegration-jmx/src/main/java/org/jboss/aop/asintegration/jboss4/ScopedJBossClassPool.java
projects/aop/branches/createspi/asintegration-jmx/src/main/java/org/jboss/aop/deployment/AspectDeployer.java
projects/aop/branches/createspi/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java
projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/AOPClassLoaderInitializer.java
projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/DefaultTranslator.java
projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5ClassPoolFactory.java
projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java
projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/ScopedJBoss5ClassPool.java
projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/VFSClassLoaderScopingPolicy.java
projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java
projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java
projects/aop/branches/createspi/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
projects/aop/branches/createspi/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
Log:
Add ClassPoolRegistry to AOPSystem. Deprecate more methods in AspectManager. Make sure that client code does not call the deprecated methods in AspectManager, but use AOPSystem instead
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/AspectManager.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/AspectManager.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/AspectManager.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -145,7 +145,6 @@
protected volatile HashMap<String,ClassMetaDataLoader> classMetaDataLoaders = UnmodifiableEmptyCollections.EMPTY_HASHMAP;
protected volatile HashMap<String, AdviceStack> interceptorStacks = UnmodifiableEmptyCollections.EMPTY_HASHMAP;
protected volatile HashMap<String, DeclareDef> declares = UnmodifiableEmptyCollections.EMPTY_HASHMAP;
- //protected volatile ConcurrentHashMap<String, CFlowStack> cflowStacks = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
protected volatile ConcurrentHashMap<String, DynamicCFlowDefinition> dynamicCFlows = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
protected volatile ConcurrentHashMap<String, AspectDefinition> aspectDefinitions = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
protected volatile ConcurrentHashMap<String, Object> perVMAspects = UnmodifiableEmptyCollections.EMPTY_CONCURRENT_HASHMAP;
@@ -156,7 +155,6 @@
protected volatile HashMap<String, DomainDefinition> containers = UnmodifiableEmptyCollections.EMPTY_HASHMAP;
protected volatile LinkedHashMap<String, PrecedenceDef> precedenceDefs = UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP;
protected PrecedenceDefEntry[] sortedPrecedenceDefEntries;
- protected WeavingStrategy weavingStrategy;
//Keeps track of if we need to convert references etc for a given class. Domains for scoped classloaders will have their own version of this
protected static Map<ClassLoader, InterceptionMarkers> interceptionMarkers = new WeakHashMap<ClassLoader, InterceptionMarkers>();
@@ -176,14 +174,14 @@
*/
public static synchronized AspectManager getTopLevelAspectManager()
{
- if (AOPSystem.getConfiguration().getClassLoaderScopingPolicy() == null)
+ if (AOPSystem.getClassPoolRegistry().getClassLoaderScopingPolicy() == null)
{
//We are not running in jboss
return instance();
}
AspectManager result = initManager();
- Domain scopedDomain = AOPSystem.getConfiguration().getClassLoaderScopingPolicy().getTopLevelDomain(result);
+ Domain scopedDomain = AOPSystem.getClassPoolRegistry().getClassLoaderScopingPolicy().getTopLevelDomain(result);
if (scopedDomain != null)
result = scopedDomain;
return result;
@@ -203,9 +201,9 @@
public static synchronized AspectManager instance(ClassLoader loadingClassLoader)
{
AspectManager result = initManager();
- if (AOPSystem.getConfiguration().getClassLoaderScopingPolicy() != null)
+ if (AOPSystem.getClassPoolRegistry().getClassLoaderScopingPolicy() != null)
{
- Domain scopedDomain = AOPSystem.getConfiguration().getClassLoaderScopingPolicy().getDomain(loadingClassLoader, result);
+ Domain scopedDomain = AOPSystem.getClassPoolRegistry().getClassLoaderScopingPolicy().getDomain(loadingClassLoader, result);
if (scopedDomain != null)
result = scopedDomain;
}
@@ -229,7 +227,6 @@
{
singleton = new AspectManager();
AOPClassPoolRepository.getInstance().setAspectManager(singleton);
- Deployment.deploy();
return null;
}
});
@@ -243,7 +240,7 @@
@Deprecated
public static AOPClassLoaderScopingPolicy getClassLoaderScopingPolicy()
{
- return AOPSystem.getConfiguration().getClassLoaderScopingPolicy();
+ return AOPSystem.getClassPoolRegistry().getClassLoaderScopingPolicy();
}
/**
@@ -252,9 +249,12 @@
@Deprecated
public static void setClassLoaderScopingPolicy(AOPClassLoaderScopingPolicy classLoaderScopingPolicy)
{
- AOPSystem.getConfiguration().setClassLoaderScopingPolicy(classLoaderScopingPolicy);
+ AOPSystem.getClassPoolRegistry().setClassLoaderScopingPolicy(classLoaderScopingPolicy);
}
+ /**
+ * TODO Should be in the new Manager interface?
+ */
public InterceptionMarkers getInterceptionMarkers(ClassLoader loader)
{
if (loader == null)
@@ -621,7 +621,7 @@
synchronized (advisors)
{
advisors.put(clazz, new WeakReference<Advisor>(advisor));
- registerClass(clazz);
+ AOPSystem.getClassPoolRegistry().registerClass(clazz);
advisor.attachClass(clazz);
InterceptorChainObserver observer = AOPSystem.getWeaver().getDynamicAOPStrategy().getInterceptorChainObserver(clazz);
advisor.setInterceptorChainObserver(observer);
@@ -639,17 +639,16 @@
// Public -------------------------------------------------------
+ @Deprecated
public static Map<ClassLoader, ClassPool> getRegisteredCLs()
{
- return AOPClassPoolRepository.getInstance().getRegisteredCLs();
+ return AOPSystem.getClassPoolRegistry().getRegisteredCLs();
}
- /**
- * This method will check to see if a register classloader has been undeployed (as in JBoss)
- */
+ @Deprecated
public static void clearUnregisteredClassLoaders()
{
- AOPClassPoolRepository.getInstance().clearUnregisteredClassLoaders();
+ AOPSystem.getClassPoolRegistry().clearUnregisteredClassLoaders();
}
/**
@@ -660,10 +659,10 @@
*/
public boolean isAdvisorRegistered(Advisor advisor)
{
- synchronized (getRegisteredCLs())
+ synchronized (AOPSystem.getClassPoolRegistry().getRegisteredCLs())
{
if (!advisors.containsKey(advisor.getClazz())) return false;
- final ClassLoaderValidation classLoaderValidator = AOPSystem.getConfiguration().getClassLoaderValidator();
+ final ClassLoaderValidation classLoaderValidator = AOPSystem.getClassPoolRegistry().getClassLoaderValidator();
if (classLoaderValidator != null)
{
if (classLoaderValidator.isValidClassLoader(advisor.getClassLoader()))
@@ -672,17 +671,17 @@
}
else
{
- unregisterClassLoader(advisor.getClassLoader());
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(advisor.getClassLoader());
return false;
}
}
else
{
- ScopedClassPool pool = (ScopedClassPool) getRegisteredClassPool(advisor.getClassLoader());
+ ScopedClassPool pool = (ScopedClassPool) AOPSystem.getClassPoolRegistry().registerClassLoader(advisor.getClassLoader());
if (pool == null) return false;
if (pool.isUnloadedClassLoader())
{
- unregisterClassLoader(advisor.getClassLoader());
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(advisor.getClassLoader());
return false;
}
else
@@ -693,41 +692,37 @@
}
}
+ @Deprecated
public ClassPool findClassPool(ClassLoader cl)
{
- if (cl == null)
- {
- //!(cl instanceof Translatable)
- // findClassPool has problems with boot and system classes, because
- // they may be null
- return registerClassLoader(SecurityActions.getContextClassLoader());
- }
- return registerClassLoader(cl);
+ return AOPSystem.getClassPoolRegistry().findClassPool(cl);
}
+ @Deprecated
public ClassPool findClassPool(Class<?> clazz)
{
- return findClassPool(SecurityActions.getClassLoader(clazz));
+ return AOPSystem.getClassPoolRegistry().findClassPool(clazz);
}
- protected ClassPool getRegisteredClassPool(ClassLoader cl)
- {
- return getRegisteredCLs().get(cl);
- }
+ //Does not seem to be used
+ //protected ClassPool getRegisteredClassPool(ClassLoader cl)
+ @Deprecated
public ClassPool registerClassLoader(ClassLoader ucl)
{
- return AOPClassPoolRepository.getInstance().registerClassLoader(ucl);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(ucl);
}
+ @Deprecated
protected void registerClass(Class<?> clazz)
{
- AOPClassPoolRepository.getInstance().registerClass(clazz);
+ AOPSystem.getClassPoolRegistry().registerClass(clazz);
}
+ @Deprecated
public void unregisterClassLoader(ClassLoader cl)
{
- AOPClassPoolRepository.getInstance().unregisterClassLoader(cl);
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(cl);
}
@Deprecated
@@ -793,25 +788,25 @@
@Deprecated
public static boolean getPrune()
{
- return AOPClassPoolRepository.getInstance().isPrune();
+ return AOPSystem.getClassPoolRegistry().isPrune();
}
@Deprecated
public static void setPrune(boolean prune)
{
- AOPClassPoolRepository.getInstance().setPrune(prune);
+ AOPSystem.getClassPoolRegistry().setPrune(prune);
}
@Deprecated
public static void setClassPoolFactory(ScopedClassPoolFactory factory)
{
- AOPClassPoolRepository.getInstance().setClassPoolFactory(factory);
+ AOPSystem.getClassPoolRegistry().setClassPoolFactory(factory);
}
@Deprecated
public static ScopedClassPoolFactory getClassPoolFactory()
{
- return AOPClassPoolRepository.getInstance().getClassPoolFactory();
+ return AOPSystem.getClassPoolRegistry().getClassPoolFactory();
}
@Deprecated
@@ -828,49 +823,7 @@
byte[] classfileBuffer)
throws Exception
{
-
return AOPSystem.getWeaver().transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
-// try
-// {
-// if (isNonAdvisableClassName(className))
-// {
-// return null;
-// }
-// lock.lockRead();
-// try
-// {
-// synchronized(this){
-// if (weavingStrategy == null)
-// {
-// if (TransformerCommon.isCompileTime())
-// {
-// weavingStrategy = new ClassicWeavingStrategy();
-// }
-// else if(InstrumentorFactory.getInstrumentor(this,dynamicStrategy.getJoinpointClassifier())
-// instanceof GeneratedAdvisorInstrumentor)
-// {
-// weavingStrategy = new SuperClassesFirstWeavingStrategy();
-// }
-// else
-// {
-// weavingStrategy = new ClassicWeavingStrategy();
-// }
-// }
-//
-// return weavingStrategy.translate(this, className, loader, classfileBuffer);
-// }
-// }
-// finally
-// {
-// lock.unlockRead();
-// }
-// }
-// catch (Exception e)
-// {
-// // AutoGenerated
-// throw new RuntimeException(e);
-// }
-
}
@@ -1202,7 +1155,7 @@
public synchronized void removeBindings(ArrayList<String> binds)
{
- clearUnregisteredClassLoaders();
+ AOPSystem.getClassPoolRegistry().clearUnregisteredClassLoaders();
HashSet<Advisor> bindingAdvisors = new HashSet<Advisor>();
ArrayList<AdviceBinding> removedBindings = null;
@@ -1945,7 +1898,7 @@
private Advisor getAdvisorFromAdvisorsKeySetIterator(Iterator<Class<?>> it)
{
Class<?> clazz = it.next();
- final ClassLoaderValidation classLoaderValidator = AOPSystem.getConfiguration().getClassLoaderValidator();
+ final ClassLoaderValidation classLoaderValidator = AOPSystem.getClassPoolRegistry().getClassLoaderValidator();
if (classLoaderValidator != null && !classLoaderValidator.isValidClassLoader(SecurityActions.getClassLoader(clazz)))
{
it.remove();
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassAdvisor.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassAdvisor.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassAdvisor.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -63,6 +63,7 @@
import org.jboss.aop.joinpoint.MethodInvocation;
import org.jboss.aop.metadata.ClassMetaDataBinding;
import org.jboss.aop.metadata.ClassMetaDataLoader;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.aop.util.Advisable;
import org.jboss.aop.util.BindingClassifier;
import org.jboss.aop.util.ConstructorComparator;
@@ -270,7 +271,7 @@
final AspectManager theManager = manager;
//register class loader: necessary when clazz was precompiled through aopc
- manager.registerClassLoader(SecurityActions.getClassLoader(clazz));
+ AOPSystem.getClassPoolRegistry().registerClassLoader(SecurityActions.getClassLoader(clazz));
AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
{
public Object run() throws Exception
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassInstanceAdvisor.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassInstanceAdvisor.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassInstanceAdvisor.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -32,6 +32,7 @@
import org.jboss.aop.advice.Interceptor;
import org.jboss.aop.joinpoint.Joinpoint;
import org.jboss.aop.metadata.SimpleMetaData;
+import org.jboss.aop.spi.AOPSystem;
/**
* Holds an object instance's metadata and attached interceptors
@@ -365,7 +366,7 @@
}
ClassLoader classLoader = SecurityActions.getClassLoader(advisedClass);
if (this.interceptorChainObserver == null ||
- !AspectManager.getRegisteredCLs().containsKey(classLoader))
+ !AOPSystem.getClassPoolRegistry().getRegisteredCLs().containsKey(classLoader))
{
return;
}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassicWeavingStrategy.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassicWeavingStrategy.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/ClassicWeavingStrategy.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -21,16 +21,16 @@
*/
package org.jboss.aop;
+import javassist.ByteArrayClassPath;
+import javassist.CtClass;
+import javassist.NotFoundException;
+
import org.jboss.aop.classpool.AOPClassPool;
import org.jboss.aop.instrument.Instrumentor;
import org.jboss.aop.instrument.InstrumentorFactory;
import org.jboss.aop.spi.AOPSystem;
import org.jboss.aop.util.logging.AOPLogger;
-import javassist.ByteArrayClassPath;
-import javassist.CtClass;
-import javassist.NotFoundException;
-
/**
* Classic weaving.
*
@@ -57,11 +57,11 @@
super.setTransformationStarted();
try
{
- if (manager.isNonAdvisableClassName(className))
+ if (!AOPSystem.getWeaver().isWeavable(className))
{
return null;
}
- AOPClassPool pool = (AOPClassPool) manager.registerClassLoader(loader);
+ AOPClassPool pool = (AOPClassPool) AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
CtClass clazz = null;
try
{
@@ -119,7 +119,7 @@
}
byte[] rtn = clazz.toBytecode();
- if (AspectManager.getPrune()) clazz.prune();
+ if (AOPSystem.getConfiguration().isPrune()) clazz.prune();
return rtn;
}
else
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/Domain.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/Domain.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/Domain.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -1011,12 +1011,6 @@
return parent.getDynamicAOPStrategy();
}
- @Override
- public void setDynamicAOPStrategy(DynamicAOPStrategy strategy)
- {
- parent.setDynamicAOPStrategy(strategy);
- }
-
private class DomainClassifiedBindingAndPointcutCollection extends ClassifiedBindingAndPointcutCollection
{
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/GeneratedInstanceAdvisorMixin.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/GeneratedInstanceAdvisorMixin.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/GeneratedInstanceAdvisorMixin.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -29,6 +29,7 @@
import org.jboss.aop.advice.GeneratedAdvisorInterceptor;
import org.jboss.aop.joinpoint.Joinpoint;
import org.jboss.aop.metadata.SimpleMetaData;
+import org.jboss.aop.spi.AOPSystem;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -392,7 +393,7 @@
protected void finalize()
{
ClassLoader classLoader = delegate.getAdvisor().getClassLoader();
- if (this.interceptorChainObserver == null || !AspectManager.getRegisteredCLs().containsKey(classLoader))
+ if (this.interceptorChainObserver == null || !AOPSystem.getClassPoolRegistry().getRegisteredCLs().containsKey(classLoader))
{
return;
}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/HotSwapStrategy.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/HotSwapStrategy.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/HotSwapStrategy.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -47,6 +47,7 @@
import org.jboss.aop.instrument.JoinpointClassifier;
import org.jboss.aop.instrument.JoinpointFullClassifier;
import org.jboss.aop.instrument.JoinpointStatusUpdate;
+import org.jboss.aop.spi.AOPSystem;
/**
* Dynamic AOP strategy that hot swaps a class code.
@@ -128,7 +129,7 @@
*/
public InterceptorChainObserver getInterceptorChainObserver(Class<?> clazz)
{
- ClassPool classPool = AspectManager.instance().findClassPool(clazz);
+ ClassPool classPool = AOPSystem.getClassPoolRegistry().findClassPool(clazz);
CtClass ctClass = null;
try
{
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/InterceptionMarkers.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/InterceptionMarkers.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/InterceptionMarkers.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -23,11 +23,14 @@
import java.util.concurrent.ConcurrentHashMap;
+import org.jboss.aop.spi.temp.Internal;
+
/**
*
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
+ at Internal
public class InterceptionMarkers
{
protected final ConcurrentHashMap<String, String> convertableReference = new ConcurrentHashMap<String, String>();
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/SuperClassesFirstWeavingStrategy.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/SuperClassesFirstWeavingStrategy.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/SuperClassesFirstWeavingStrategy.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -59,12 +59,12 @@
super.setTransformationStarted();
try
{
- if (manager.isNonAdvisableClassName(className))
+ if (!AOPSystem.getWeaver().isWeavable(className))
{
return null;
}
- AOPClassPool pool = (AOPClassPool) manager.registerClassLoader(loader);
+ AOPClassPool pool = (AOPClassPool) AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
CtClass clazz = obtainCtClassInfo(pool, className, classfileBuffer);
@@ -77,7 +77,7 @@
SecurityActions.debugWriteFile(clazz);
}
byte[] rtn = woven.toBytecode();
- if (AspectManager.getPrune()) woven.prune();
+ if (AOPSystem.getConfiguration().isPrune()) woven.prune();
return rtn;
}
else
@@ -149,7 +149,7 @@
}
}
- if (manager.isNonAdvisableClassName(clazz.getName()))
+ if (!AOPSystem.getWeaver().isWeavable(clazz.getName()))
{
return null;
}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/classpool/AOPClassPool.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -30,7 +30,7 @@
import javassist.scopedpool.ScopedClassPool;
import javassist.scopedpool.ScopedClassPoolRepository;
-import org.jboss.aop.AspectManager;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.aop.util.ClassLoaderUtils;
import org.jboss.logging.Logger;
@@ -256,12 +256,12 @@
public static AOPClassPool createAOPClassPool(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
{
- return (AOPClassPool)AspectManager.getClassPoolFactory().create(cl, src, repository);
+ return (AOPClassPool)AOPSystem.getClassPoolRegistry().getClassPoolFactory().create(cl, src, repository);
}
public static AOPClassPool createAOPClassPool(ClassPool src, ScopedClassPoolRepository repository)
{
- return (AOPClassPool)AspectManager.getClassPoolFactory().create(src, repository);
+ return (AOPClassPool)AOPSystem.getClassPoolRegistry().getClassPoolFactory().create(src, repository);
}
public String toString()
@@ -326,16 +326,16 @@
Object o = generatedClasses.get(classname);
if (o == null)
{
- Map<ClassLoader, ClassPool> registeredCLs = AspectManager.getRegisteredCLs();
+ Map<ClassLoader, ClassPool> registeredCLs = AOPSystem.getClassPoolRegistry().getRegisteredCLs();
synchronized (registeredCLs)
{
- for(ClassPool pl : AspectManager.getRegisteredCLs().values())
+ for(ClassPool pl : AOPSystem.getClassPoolRegistry().getRegisteredCLs().values())
{
AOPClassPool pool = (AOPClassPool) pl;
if (pool.isUnloadedClassLoader())
{
if (trace) logger.trace(this + " pool is unloaded " + pool);
- AspectManager.instance().unregisterClassLoader(pool.getClassLoader());
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(pool.getClassLoader());
continue;
}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/classpool/AOPClassPoolRepository.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/classpool/AOPClassPoolRepository.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/classpool/AOPClassPoolRepository.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -26,22 +26,22 @@
import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
-import org.jboss.aop.Advisor;
-import org.jboss.aop.AspectManager;
-import org.jboss.aop.advice.SecurityActions;
-import org.jboss.aop.instrument.Instrumentor;
-import org.jboss.aop.util.logging.AOPLogger;
-
import javassist.ClassPool;
import javassist.scopedpool.ScopedClassPool;
import javassist.scopedpool.ScopedClassPoolFactory;
import javassist.scopedpool.ScopedClassPoolRepository;
import javassist.scopedpool.ScopedClassPoolRepositoryImpl;
+import org.jboss.aop.Advisor;
+import org.jboss.aop.AspectManager;
+import org.jboss.aop.advice.SecurityActions;
+import org.jboss.aop.instrument.Instrumentor;
+import org.jboss.aop.util.logging.AOPLogger;
+
/**
* Singleton classpool repository used by aop
*
@@ -55,7 +55,7 @@
private final static AOPClassPoolRepository instance = new AOPClassPoolRepository();
/** The classes per classppol */
- protected final HashMap<ClassLoader, HashSet<Class<?>>> ucl2classes = new HashMap<ClassLoader, HashSet<Class<?>>>();
+ protected final Map<ClassLoader, HashSet<Class<?>>> ucl2classes = new ConcurrentHashMap<ClassLoader, HashSet<Class<?>>>();
/** The top-level AspectManager this pool belongs to */
AspectManager manager;
@@ -72,33 +72,8 @@
this.delegate = ScopedClassPoolRepositoryImpl.getInstance();
//This was needed when jboss-aop.jar was deployed in the jboss/lib directory since the AspectManager bean had no chance to initialise it
delegate.setClassPoolFactory(new AOPClassPoolFactory());
-// if (!setJBossSpecificStartupVariables())
-// {
-// delegate.setClassPoolFactory(new AOPClassPoolFactory());
-// }
}
-// private boolean setJBossSpecificStartupVariables()
-// {
-// //We are running within JBoss 5, let's default to the JBossClassPoolFactory and set the ScopedClassPoolHelper
-// //so that we get correct behaviour before the AspectManager service has been deployed
-// try
-// {
-// Class jbcpf = Class.forName("org.jboss.aop.deployment.JBossClassPoolFactory");
-// ScopedClassPoolFactory factory = (ScopedClassPoolFactory)jbcpf.newInstance();
-//
-// Class hlpr = Class.forName("org.jboss.aop.deployment.JBossScopedClassLoaderHelper");
-// AOPScopedClassLoaderHelper helper = (AOPScopedClassLoaderHelper)hlpr.newInstance();
-// delegate.setClassPoolFactory(factory);
-// AspectManager.scopedCLHelper = helper;
-// return true;
-// }
-// catch (Exception e)
-// {
-// }
-// return false;//Not running in JBoss probably
-// }
-
public void setClassPoolFactory(ScopedClassPoolFactory factory)
{
delegate.setClassPoolFactory(factory);
@@ -170,6 +145,7 @@
{
classes = new HashSet<Class<?>>();
ucl2classes.put(classLoader, classes);
+ classes = ucl2classes.get(classLoader);
}
classes.add(clazz);
}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/eclipsesupport/Agent.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/eclipsesupport/Agent.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/eclipsesupport/Agent.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -22,6 +22,7 @@
package org.jboss.aop.eclipsesupport;
import org.jboss.aop.AspectManager;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.aop.standalone.StandaloneClassPoolFactory;
import java.lang.instrument.Instrumentation;
@@ -40,7 +41,7 @@
public static void premain(String agentArgs, Instrumentation inst)
{
StandaloneClassPoolFactory factory = new StandaloneClassPoolFactory();
- AspectManager.setClassPoolFactory(factory);
+ AOPSystem.getClassPoolRegistry().setClassPoolFactory(factory);
// necessary for configuration
AspectManager.instance();
ScopedClassPoolRepositoryImpl.getInstance().setPrune(false);
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/eclipsesupport/EclipseTestTransformer.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/eclipsesupport/EclipseTestTransformer.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/eclipsesupport/EclipseTestTransformer.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -21,10 +21,6 @@
*/
package org.jboss.aop.eclipsesupport;
-import org.jboss.aop.AspectManager;
-import org.jboss.aop.AspectXmlLoader;
-import org.jboss.aop.standalone.AOPTransformer;
-
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.net.URL;
@@ -36,6 +32,10 @@
import javassist.CtMethod;
import javassist.CtNewMethod;
+import org.jboss.aop.AspectXmlLoader;
+import org.jboss.aop.spi.AOPSystem;
+import org.jboss.aop.standalone.AOPTransformer;
+
/**
* A transformer to weave the main method of the org.eclipse.jdt.internal.junit.runner.RemoteTestRunner, so that we can deploy the correct
* -aop.xml files before the test case class itself is loaded when running within Eclipse
@@ -78,8 +78,7 @@
{
try
{
- AspectManager manager = AspectManager.instance();
- ClassPool pool = manager.registerClassLoader(loader);
+ ClassPool pool = AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
CtClass remoteTestRunner = pool.get(MAIN_CLASS.replace('/', '.'));
remoteTestRunner.defrost();
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/instrument/Instrumentor.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/instrument/Instrumentor.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/instrument/Instrumentor.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -630,7 +630,7 @@
{
ref = it.next();
if (!manager.getInterceptionMarkers(clazz.getClassPool().getClassLoader()).convertReference(ref)
- || manager.isNonAdvisableClassName(ref)
+ || !AOPSystem.getWeaver().isWeavable(ref)
|| ref.startsWith("java.")
|| ref.startsWith("javax.")
|| ref.startsWith("["))
@@ -991,7 +991,7 @@
{
for (CtClass clazz : processedClasses)
{
- if (manager.isNonAdvisableClassName(clazz.getName()) || ! isTransformable(clazz))
+ if (!AOPSystem.getWeaver().isWeavable(clazz.getName()) || ! isTransformable(clazz))
{
continue;
}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultAOPSystem.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultAOPSystem.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultAOPSystem.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -23,6 +23,7 @@
import org.jboss.aop.spi.AOPSystem;
import org.jboss.aop.spi.AbstractAOPSystem;
+import org.jboss.aop.spi.ClassPoolRegistry;
import org.jboss.aop.spi.Configuration;
import org.jboss.aop.spi.Manager;
import org.jboss.aop.spi.Weaver;
@@ -37,6 +38,7 @@
private Configuration configuration;
private Manager mainManager;
private Weaver weaver;
+ private ClassPoolRegistry registry;
public DefaultAOPSystem(AOPSystem system)
{
@@ -70,7 +72,7 @@
@Override
protected void initWeaver(AOPSystem system)
{
- weaver = new DefaultWeaver(configuration);
+ weaver = new DefaultWeaver();
}
@Override
@@ -79,4 +81,15 @@
return weaver;
}
+ @Override
+ protected void initClassPoolRegistry(AOPSystem system)
+ {
+ registry = new DefaultClassPoolRegistry();
+ }
+
+ @Override
+ protected ClassPoolRegistry getClassPoolRegistry(AOPSystem system)
+ {
+ return registry;
+ }
}
Added: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultClassPoolRegistry.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultClassPoolRegistry.java (rev 0)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultClassPoolRegistry.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -0,0 +1,174 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.plugins;
+
+import java.util.Map;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPoolFactory;
+
+import org.jboss.aop.ClassLoaderValidation;
+import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
+import org.jboss.aop.classpool.AOPClassPoolRepository;
+import org.jboss.aop.spi.AOPSystem;
+import org.jboss.aop.spi.ClassPoolRegistry;
+import org.jboss.aop.spi.Configuration;
+import org.jboss.aop.spi.Weaver;
+import org.jboss.aop.util.logging.AOPLogger;
+
+/**
+ * Singleton managed by AOPSystem for managing the classpools
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class DefaultClassPoolRegistry implements ClassPoolRegistry
+{
+ final protected AOPLogger log = AOPLogger.getLogger(this.getClass());
+
+ private Weaver weaver;
+
+ @SuppressWarnings("unused")
+ private Configuration configuration;
+
+ private AOPClassPoolRepository repository = AOPClassPoolRepository.getInstance();
+
+ private AOPClassLoaderScopingPolicy classLoaderScopingPolicy;
+
+ private ClassLoaderValidation classLoaderValidator;
+
+ public DefaultClassPoolRegistry()
+ {
+ }
+
+ public void setWeaver(AOPSystem system, Weaver weaver)
+ {
+ this.weaver = weaver;
+ }
+
+ public void setConfiguration(AOPSystem system, Configuration configuration)
+ {
+ this.configuration = configuration;
+ setPrune(configuration.isPrune());
+ }
+
+ public boolean isPrune()
+ {
+ return repository.isPrune();
+ }
+
+ public void setPrune(boolean prune)
+ {
+ repository.setPrune(prune);
+ }
+
+ public void setClassPoolFactory(ScopedClassPoolFactory factory)
+ {
+ repository.setClassPoolFactory(factory);
+ }
+
+ public ScopedClassPoolFactory getClassPoolFactory()
+ {
+ return repository.getClassPoolFactory();
+ }
+
+ public AOPClassLoaderScopingPolicy getClassLoaderScopingPolicy()
+ {
+ return classLoaderScopingPolicy;
+ }
+
+ public void setClassLoaderScopingPolicy(AOPClassLoaderScopingPolicy classLoaderScopingPolicy)
+ {
+ if (isNotStartup() && classLoaderScopingPolicy != this.classLoaderScopingPolicy)
+ {
+ log.warn("Attempt to change classLoaderScopingPolicy to '" + classLoaderScopingPolicy + "' from '" + this.classLoaderScopingPolicy + "' is ignored since weaving has started");
+ return;
+ }
+ this.classLoaderScopingPolicy = classLoaderScopingPolicy;
+ }
+
+ public ClassLoaderValidation getClassLoaderValidator()
+ {
+ return classLoaderValidator;
+ }
+
+ public void setClassLoaderValidator(ClassLoaderValidation classLoaderValidator)
+ {
+ if (isNotStartup() && classLoaderValidator != this.classLoaderValidator)
+ {
+ log.warn("Attempt to change classLoaderScopingPolicy to '" + classLoaderValidator + "' from '" + this.classLoaderValidator + "' is ignored since weaving has started");
+ return;
+ }
+ this.classLoaderValidator = classLoaderValidator;
+ }
+
+ public Map<ClassLoader, ClassPool> getRegisteredCLs()
+ {
+ return repository.getRegisteredCLs();
+ }
+
+ public void clearUnregisteredClassLoaders()
+ {
+ repository.clearUnregisteredClassLoaders();
+ }
+
+ public ClassPool registerClassLoader(ClassLoader ucl)
+ {
+ return repository.registerClassLoader(ucl);
+ }
+
+ public void registerClass(Class<?> clazz)
+ {
+ repository.registerClass(clazz);
+ }
+
+ public ClassPool findClassPool(ClassLoader cl)
+ {
+ if (cl == null)
+ {
+ //!(cl instanceof Translatable)
+ // findClassPool has problems with boot and system classes, because
+ // they may be null
+ return registerClassLoader(SecurityActions.getContextClassLoader());
+ }
+ return registerClassLoader(cl);
+ }
+
+ public ClassPool findClassPool(Class<?> clazz)
+ {
+ return findClassPool(SecurityActions.getClassLoader(clazz));
+ }
+
+ public void unregisterClassLoader(ClassLoader cl)
+ {
+ repository.unregisterClassLoader(cl);
+ }
+
+ private boolean isNotStartup()
+ {
+ if (weaver == null || !weaver.hasTransformationStarted())
+ {
+ return false;
+ }
+ return true;
+ }
+}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultConfiguration.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultConfiguration.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultConfiguration.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -26,9 +26,6 @@
import java.util.concurrent.CopyOnWriteArrayList;
import org.jboss.aop.AdvisorFactory;
-import org.jboss.aop.ClassLoaderValidation;
-import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
-import org.jboss.aop.classpool.AOPClassPoolRepository;
import org.jboss.aop.instrument.InstrumentorFactory;
import org.jboss.aop.pointcut.ast.ClassExpression;
import org.jboss.aop.spi.AOPSystem;
@@ -44,9 +41,10 @@
*/
public class DefaultConfiguration implements Configuration, ConfigurationProperties
{
- AOPLogger log = AOPLogger.getLogger(this.getClass());
+ final protected AOPLogger log = AOPLogger.getLogger(this.getClass());
private Weaver weaver;
+ private boolean prune = true; //This is the default value in ScopedClassPoolRepositoryImpl
private boolean optimize;
private boolean verbose;
private List<String> exclude = new CopyOnWriteArrayList<String>();
@@ -56,8 +54,6 @@
protected List<String> includedInvisibleAnnotations = new CopyOnWriteArrayList<String>();
private boolean debugClasses;
private boolean maintainAdvisorMethodInterceptors;
- private AOPClassLoaderScopingPolicy classLoaderScopingPolicy;
- private ClassLoaderValidation classLoaderValidator;
public DefaultConfiguration()
{
@@ -66,7 +62,7 @@
public void setWeaver(AOPSystem system, Weaver weaver)
{
- if (weaver != null)
+ if (this.weaver != null)
{
throw new IllegalStateException("Weaver is already set");
}
@@ -88,6 +84,11 @@
this.optimize = optimize;
}
+ public boolean isPrune()
+ {
+ return prune;
+ }
+
public boolean isVerbose()
{
return verbose;
@@ -192,36 +193,6 @@
this.maintainAdvisorMethodInterceptors = maintainMethodInterceptors;
}
- public AOPClassLoaderScopingPolicy getClassLoaderScopingPolicy()
- {
- return classLoaderScopingPolicy;
- }
-
- public void setClassLoaderScopingPolicy(AOPClassLoaderScopingPolicy classLoaderScopingPolicy)
- {
- if (isNotStartup() && classLoaderScopingPolicy != this.classLoaderScopingPolicy)
- {
- log.warn("Attempt to change classLoaderScopingPolicy to '" + classLoaderScopingPolicy + "' from '" + this.classLoaderScopingPolicy + "' is ignored since weaving has started");
- return;
- }
- this.classLoaderScopingPolicy = classLoaderScopingPolicy;
- }
-
- public ClassLoaderValidation getClassLoaderValidator()
- {
- return classLoaderValidator;
- }
-
- public void setClassLoaderValidator(ClassLoaderValidation classLoaderValidator)
- {
- if (isNotStartup() && classLoaderValidator != this.classLoaderValidator)
- {
- log.warn("Attempt to change classLoaderScopingPolicy to '" + classLoaderValidator + "' from '" + this.classLoaderValidator + "' is ignored since weaving has started");
- return;
- }
- this.classLoaderValidator = classLoaderValidator;
- }
-
protected void initialise()
{
initialiseOptimized();
@@ -254,7 +225,7 @@
Boolean prune = getBooleanProperty(PRUNE);
if (prune != null)
{
- AOPClassPoolRepository.getInstance().setPrune(prune);
+ this.prune = prune;
}
}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultManager.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultManager.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultManager.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -37,6 +37,7 @@
*/
public class DefaultManager implements Manager
{
+ @SuppressWarnings("unused")
private final Configuration configuration;
private final Object lazyCollectionLock = new Object();
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultWeaver.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultWeaver.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/DefaultWeaver.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -35,6 +35,7 @@
import org.jboss.aop.pointcut.ast.ClassExpression;
import org.jboss.aop.spi.AOPLock;
import org.jboss.aop.spi.AOPSystem;
+import org.jboss.aop.spi.ClassPoolRegistry;
import org.jboss.aop.spi.Configuration;
import org.jboss.aop.spi.Weaver;
@@ -48,14 +49,34 @@
private AOPLock lock;
private Configuration configuration;
-
+
+ private ClassPoolRegistry classPoolRegistry;
+
private DynamicAOPStrategy dynamicStrategy = new LoadInterceptedClassesStrategy();
- protected DefaultWeaver(Configuration configuration)
+ protected DefaultWeaver()
{
+ }
+
+ public void setConfiguration(AOPSystem system, Configuration configuration)
+ {
+ if (this.configuration != null)
+ {
+ throw new IllegalStateException("Configuration is already set");
+ }
this.configuration = configuration;
}
-
+
+
+ public void setClassPoolRegistry(AOPSystem system, ClassPoolRegistry classPoolRegistry)
+ {
+ if (this.classPoolRegistry != null)
+ {
+ throw new IllegalStateException("ClassPoolRegistry is already set");
+ }
+ this.classPoolRegistry = classPoolRegistry;
+ }
+
/**
* Sets the AOPLock. This method can only be called by AOPSystem and
* should only be called once
@@ -162,6 +183,7 @@
public void unregisterClassLoader(ClassLoader loader)
{
+ classPoolRegistry.unregisterClassLoader(loader);
}
private boolean ignoreClass(String classname)
@@ -226,5 +248,4 @@
}
}
-
}
Added: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/SecurityActions.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/SecurityActions.java (rev 0)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/plugins/SecurityActions.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -0,0 +1,224 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.plugins;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Constructor;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+
+import javassist.CtClass;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision$
+ */
+class SecurityActions
+{
+ interface SetAccessibleAction
+ {
+ void setAccessible(AccessibleObject accessibleObject);
+
+ SetAccessibleAction PRIVILEGED = new SetAccessibleAction()
+ {
+ public void setAccessible(final AccessibleObject accessibleObject)
+ {
+ try
+ {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ accessibleObject.setAccessible(true);
+ return null;
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ throw new RuntimeException("Error setting " + accessibleObject + " as accessible ", e.getException());
+ }
+ }
+ };
+
+ SetAccessibleAction NON_PRIVILEGED = new SetAccessibleAction()
+ {
+ public void setAccessible(AccessibleObject accessibleObject)
+ {
+ accessibleObject.setAccessible(true);
+ }
+ };
+ }
+
+ static void setAccessible(AccessibleObject accessibleObject)
+ {
+ if (System.getSecurityManager() == null)
+ {
+ SetAccessibleAction.NON_PRIVILEGED.setAccessible(accessibleObject);
+ }
+ else
+ {
+ SetAccessibleAction.PRIVILEGED.setAccessible(accessibleObject);
+ }
+ }
+
+ interface CtClassDebugWriteFileAction
+ {
+ void debugWriteFile(CtClass ctClass);
+
+ CtClassDebugWriteFileAction PRIVILEGED = new CtClassDebugWriteFileAction()
+ {
+ public void debugWriteFile(final CtClass ctClass)
+ {
+ try
+ {
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ ctClass.debugWriteFile();
+ return null;
+ }
+ });
+ }
+ catch (PrivilegedActionException e)
+ {
+ //Not really a problem if we're not able to write the debug class file
+ }
+ }
+ };
+
+ CtClassDebugWriteFileAction NON_PRIVILEGED = new CtClassDebugWriteFileAction()
+ {
+ public void debugWriteFile(CtClass ctClass)
+ {
+ ctClass.debugWriteFile();
+ }
+ };
+ }
+
+ static void debugWriteFile(CtClass ctClass)
+ {
+ if (System.getSecurityManager() == null)
+ {
+ CtClassDebugWriteFileAction.NON_PRIVILEGED.debugWriteFile(ctClass);
+ }
+ else
+ {
+ CtClassDebugWriteFileAction.PRIVILEGED.debugWriteFile(ctClass);
+ }
+ }
+
+ public static class GetContextClassLoaderAction implements PrivilegedAction<ClassLoader>
+ {
+ public static GetContextClassLoaderAction INSTANCE = new GetContextClassLoaderAction();
+
+ public ClassLoader run()
+ {
+ return Thread.currentThread().getContextClassLoader();
+ }
+ }
+
+ static ClassLoader getContextClassLoader()
+ {
+ if (System.getSecurityManager() == null)
+ return Thread.currentThread().getContextClassLoader();
+ else
+ return AccessController.doPrivileged(GetContextClassLoaderAction.INSTANCE);
+ }
+
+ interface GetDeclaredConstructorsAction
+ {
+ Constructor<?>[] getDeclaredConstructors(Class<?> clazz);
+
+ GetDeclaredConstructorsAction NON_PRIVILEGED = new GetDeclaredConstructorsAction() {
+
+ public Constructor<?>[] getDeclaredConstructors(Class<?> clazz)
+ {
+ return clazz.getDeclaredConstructors();
+ }};
+
+ GetDeclaredConstructorsAction PRIVILEGED = new GetDeclaredConstructorsAction() {
+
+ public Constructor<?>[] getDeclaredConstructors(final Class<?> clazz)
+ {
+ return AccessController.doPrivileged(new PrivilegedAction<Constructor<?>[]>() {
+
+ public Constructor<?>[] run()
+ {
+ return clazz.getDeclaredConstructors();
+ }});
+ }};
+ }
+
+ static Constructor<?>[] getDeclaredConstructors(Class<?> clazz)
+ {
+ if (System.getSecurityManager() == null)
+ {
+ return GetDeclaredConstructorsAction.NON_PRIVILEGED.getDeclaredConstructors(clazz);
+ }
+ else
+ {
+ return GetDeclaredConstructorsAction.PRIVILEGED.getDeclaredConstructors(clazz);
+ }
+ }
+
+
+ interface GetClassLoaderAction
+ {
+ ClassLoader getClassLoader(Class<?> clazz);
+
+ GetClassLoaderAction NON_PRIVILEGED = new GetClassLoaderAction() {
+
+ public ClassLoader getClassLoader(Class<?> clazz)
+ {
+ return clazz.getClassLoader();
+ }};
+
+ GetClassLoaderAction PRIVILEGED = new GetClassLoaderAction() {
+
+ public ClassLoader getClassLoader(final Class<?> clazz)
+ {
+ return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
+
+ public ClassLoader run()
+ {
+ return clazz.getClassLoader();
+ }});
+ }};
+ }
+
+ static ClassLoader getClassLoader(Class<?> clazz)
+ {
+ if (System.getSecurityManager() == null)
+ {
+ return GetClassLoaderAction.NON_PRIVILEGED.getClassLoader(clazz);
+ }
+ else
+ {
+ return GetClassLoaderAction.PRIVILEGED.getClassLoader(clazz);
+ }
+ }
+}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -40,12 +40,12 @@
import javassist.Modifier;
import javassist.SerialVersionUID;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.ClassAdvisor;
import org.jboss.aop.ClassInstanceAdvisor;
import org.jboss.aop.InstanceAdvisor;
import org.jboss.aop.instrument.Instrumentor;
import org.jboss.aop.instrument.TransformerCommon;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.aop.util.JavassistMethodHashing;
import org.jboss.aop.util.reference.MethodPersistentReference;
import org.jboss.aop.util.reference.PersistentReference;
@@ -86,7 +86,7 @@
// Don't make a proxy of a proxy !
if (ClassProxy.class.isAssignableFrom(clazz)) clazz = clazz.getSuperclass();
- ClassPool pool = AspectManager.instance().findClassPool(clazz);
+ ClassPool pool = AOPSystem.getClassPoolRegistry().findClassPool(clazz);
if (pool == null) throw new NullPointerException("Could not find ClassPool");
@@ -277,12 +277,12 @@
{
HashSet<Long> mixinMethods = new HashSet<Long>();
Class<?>[] mixinf = mixins[i].getInterfaces();
- ClassPool mixPool = AspectManager.instance().findClassPool(mixins[i].getMixin().getClass());
+ ClassPool mixPool = AOPSystem.getClassPoolRegistry().findClassPool(mixins[i].getMixin().getClass());
CtClass mixClass = mixPool.get(mixins[i].getMixin().getClass().getName());
for (int j = 0; j < mixinf.length; j++)
{
if (addedInterfaces.contains(mixinf[j].getName())) throw new Exception("2 mixins are implementing the same interfaces");
- ClassPool mixIntfPool = AspectManager.instance().findClassPool(mixinf[j]);
+ ClassPool mixIntfPool = AOPSystem.getClassPoolRegistry().findClassPool(mixinf[j]);
CtClass intfClass = mixIntfPool.get(mixinf[j].getName());
CtMethod[] methods = intfClass.getMethods();
for (int m = 0; m < methods.length; m++)
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/ProxyFactory.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/ProxyFactory.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/ProxyFactory.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -32,6 +32,7 @@
import org.jboss.aop.InstanceAdvisor;
import org.jboss.aop.instrument.Instrumentor;
import org.jboss.aop.instrument.TransformerCommon;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.aop.util.JavassistMethodHashing;
import org.jboss.aop.util.reference.MethodPersistentReference;
import org.jboss.util.collection.WeakValueHashMap;
@@ -171,12 +172,12 @@
{
HashSet<Long> mixinMethods = new HashSet<Long>();
Class<?>[] mixinf = mixins[i].getInterfaces();
- ClassPool mixPool = AspectManager.instance().findClassPool(mixins[i].getMixin().getClass());
+ ClassPool mixPool = AOPSystem.getClassPoolRegistry().findClassPool(mixins[i].getMixin().getClass());
CtClass mixClass = mixPool.get(mixins[i].getMixin().getClass().getName());
for (int j = 0; j < mixinf.length; j++)
{
if (addedInterfaces.contains(mixinf[j].getName())) throw new Exception("2 mixins are implementing the same interfaces");
- ClassPool mixIntfPool = AspectManager.instance().findClassPool(mixinf[j]);
+ ClassPool mixIntfPool = AOPSystem.getClassPoolRegistry().findClassPool(mixinf[j]);
CtClass intfClass = mixIntfPool.get(mixinf[j].getName());
CtMethod[] methods = intfClass.getMethods();
for (int m = 0; m < methods.length; m++)
@@ -206,7 +207,7 @@
for (int i = 0; i < interfaces.length; i++)
{
if (addedInterfaces.contains(interfaces[i].getName())) continue;
- ClassPool mixPool = AspectManager.instance().findClassPool(interfaces[i]);
+ ClassPool mixPool = AOPSystem.getClassPoolRegistry().findClassPool(interfaces[i]);
CtClass intfClass = mixPool.get(interfaces[i].getName());
CtMethod[] methods = intfClass.getMethods();
for (int m = 0; m < methods.length; m++)
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/container/ContainerProxyFactory.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/container/ContainerProxyFactory.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/proxy/container/ContainerProxyFactory.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -61,6 +61,7 @@
import org.jboss.aop.instrument.TransformerCommon;
import org.jboss.aop.introduction.InterfaceIntroduction;
import org.jboss.aop.proxy.ClassProxyFactory;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.aop.util.JavassistMethodHashing;
@@ -256,11 +257,11 @@
if (loader != null)
{
validateLoader();
- pool = AspectManager.instance().findClassPool(loader);
+ pool = AOPSystem.getClassPoolRegistry().findClassPool(loader);
}
if (pool == null)
{
- pool = AspectManager.instance().findClassPool(clazz);
+ pool = AOPSystem.getClassPoolRegistry().findClassPool(clazz);
}
if (pool == null) throw new NullPointerException("Could not find ClassPool");
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/reflectprototype/AopClassPoolFactory.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/reflectprototype/AopClassPoolFactory.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/reflectprototype/AopClassPoolFactory.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -21,10 +21,10 @@
*/
package org.jboss.aop.reflectprototype;
-import org.jboss.aop.AspectManager;
-
import javassist.ClassPool;
+import org.jboss.aop.spi.AOPSystem;
+
/**
* A AopClassPoolFactory.
*
@@ -36,7 +36,7 @@
public ClassPool getPoolForLoader(ClassLoader cl)
{
- return AspectManager.instance().registerClassLoader(cl);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(cl);
}
}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/AOPSystem.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/AOPSystem.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/AOPSystem.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -60,9 +60,9 @@
private AOPSystem()
{
- System.out.println(SYSTEM);
SYSTEM.setConfiguration(INSTANCE, initialiseConfiguration());
- if (SYSTEM.getConfiguration(INSTANCE) == null)
+ final Configuration configuration = SYSTEM.getConfiguration(INSTANCE);
+ if (configuration == null)
{
throw new IllegalStateException("Null Configuration");
}
@@ -73,14 +73,29 @@
public Object run() throws Exception
{
SYSTEM.initRootManager(INSTANCE);
+
SYSTEM.initWeaver(INSTANCE);
final Weaver weaver = SYSTEM.getWeaver(INSTANCE);
if (weaver == null)
{
throw new IllegalStateException("Null Weaver");
}
+ weaver.setConfiguration(INSTANCE, configuration);
weaver.setAOPLock(INSTANCE, LOCK);
- SYSTEM.getConfiguration(INSTANCE).setWeaver(INSTANCE, weaver);
+
+ configuration.setWeaver(INSTANCE, weaver);
+
+ SYSTEM.initClassPoolRegistry(INSTANCE);
+ final ClassPoolRegistry classPoolRegistry = SYSTEM.getClassPoolRegistry(INSTANCE);
+ if (classPoolRegistry == null)
+ {
+ throw new IllegalStateException("Null ClassPoolRegistry");
+ }
+ classPoolRegistry.setConfiguration(INSTANCE, configuration);
+ classPoolRegistry.setWeaver(INSTANCE, weaver);
+
+ weaver.setClassPoolRegistry(INSTANCE, classPoolRegistry);
+
Deployment.deploy();
return null;
}});
@@ -121,6 +136,11 @@
return SYSTEM.getWeaver(INSTANCE);
}
+ public static ClassPoolRegistry getClassPoolRegistry()
+ {
+ return SYSTEM.getClassPoolRegistry(INSTANCE);
+ }
+
/**
* Initialises the AOPSystem using class given in the {@link ConfigurationProperties#AOP_SYSTEM}
* system property.
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/AbstractAOPSystem.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/AbstractAOPSystem.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/AbstractAOPSystem.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -71,7 +71,7 @@
protected abstract Manager getRootManager(AOPSystem system);
/**
- * Initialise the weaver to be used. This method will be called from withing a privileged block
+ * Initialise the weaver to be used. This method will be called from within a privileged block
* @param system The calling AOPSystem
*/
protected abstract void initWeaver(AOPSystem system);
@@ -82,4 +82,17 @@
* @return The weaver
*/
protected abstract Weaver getWeaver(AOPSystem system);
+
+ /**
+ * Initialise the weaver to be used. This method will be called from within a privileged block
+ * @param system The calling AOPSystem
+ */
+ protected abstract void initClassPoolRegistry(AOPSystem system);
+
+ /**
+ * Get the ClassPoolRegistry
+ * @param system The calling AOPSystem
+ * @return The weaver
+ */
+ protected abstract ClassPoolRegistry getClassPoolRegistry(AOPSystem system);
}
Added: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ClassPoolRegistry.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ClassPoolRegistry.java (rev 0)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ClassPoolRegistry.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -0,0 +1,144 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.spi;
+
+import java.util.Map;
+
+import javassist.ClassPool;
+import javassist.scopedpool.ScopedClassPoolFactory;
+
+import org.jboss.aop.ClassLoaderValidation;
+import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassPoolRegistry extends ConfigurationAware, WeaverAware
+{
+ /**
+ * Returns whether the underlying classpools prune a class once woven
+ * @return true if pruning happens
+ */
+ boolean isPrune();
+
+ /**
+ * Sets whether the underlying classpools should prune a class once woven
+ * @param prune Whether pruning should happen
+ */
+ void setPrune(boolean prune);
+
+ /**
+ * Returns a map of ClassLoaders to ClassPool that have been registered
+ * @return the map of ClassLoaders to ClassPools
+ */
+ Map<ClassLoader, ClassPool> getRegisteredCLs();
+
+ /**
+ * Clears the classloaders that no longer are active
+ */
+ void clearUnregisteredClassLoaders();
+
+ /**
+ * Registers a ClassLoader and creates a new ClassPool. If the classloader is already
+ * registered it returns the ClassPool for that ClassLoader
+ * @return The ClassPool
+ */
+ ClassPool registerClassLoader(ClassLoader cl);
+
+ /**
+ * Registers a class with the underlying classpool repository
+ * @param clazz The class to be registered
+ */
+ void registerClass(Class<?> clazz);
+
+ /**
+ * Finds the registered ClassPool for a ClassLoader
+ * @param cl The ClassLoader
+ * @return The found ClassPool or null if no ClassPool could be found
+ */
+ ClassPool findClassPool(ClassLoader cl);
+
+ /**
+ * Finds the registered ClassPool for a class
+ * @param clazz The class
+ * @return The found ClassPool or null if no ClassPool could be found
+ */
+ public ClassPool findClassPool(Class<?> clazz);
+
+ /**
+ * Unregisters a ClassLoader and destroys its ClassPool.
+ * @param The ClassLoader to unregister
+ */
+ void unregisterClassLoader(ClassLoader cl);
+
+ /**
+ * Gets the classpool factory. This is normally only overridden when running in a managed environment
+ * such as JBoss Application Server.
+ * @return The classpool factory
+ */
+ ScopedClassPoolFactory getClassPoolFactory();
+
+ /**
+ * Gets the classpool factory. This is normally only overridden when running in a managed environment
+ * such as JBoss Application Server.
+ * This should only get set on startup, subsequent attempts to change this are ignored.
+ * @param factory The classpool factory
+ */
+ void setClassPoolFactory(ScopedClassPoolFactory factory);
+
+ /**
+ * Gets the classloader scoping policy. This is normally only used when running in a managed environment
+ * such as JBoss Application Server
+ * @return The classloader scoping policy
+ */
+ //TODO SPI interface needed for AOPClassLoaderScopingPolicy
+ AOPClassLoaderScopingPolicy getClassLoaderScopingPolicy();
+
+ /**
+ * Sets the classloader scoping policy. This is normally only used when running in a managed environment
+ * such as JBoss Application Server.
+ * This should only get set on startup, subsequent attempts to change this are ignored.
+ * @param classLoaderScopingPolicy The classloader scoping policy
+ */
+ //TODO SPI interface needed for AOPClassLoaderScopingPolicy
+ void setClassLoaderScopingPolicy(AOPClassLoaderScopingPolicy classLoaderScopingPolicy);
+
+ /**
+ * Gets the classloader validation. This is normally only used whhen running in a managed environment
+ * such as JBoss Application Server.
+ * @return The classloader validation
+ */
+ //TODO SPI interface needed for ClassLoaderValidation
+ ClassLoaderValidation getClassLoaderValidator();
+
+ /**
+ * Sets the classloader validation. This is normally only used whhen running in a managed environment
+ * such as JBoss Application Server
+ * This should only get set on startup, subsequent attempts to change this are ignored.
+ * @param classLoaderValidator The classloader validation
+ */
+ //TODO SPI interface needed for ClassLoaderValidation
+ void setClassLoaderValidator(ClassLoaderValidation classLoaderValidator);
+
+}
\ No newline at end of file
Copied: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ClassPoolRegistryAware.java (from rev 84506, projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java)
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ClassPoolRegistryAware.java (rev 0)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ClassPoolRegistryAware.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.spi;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ClassPoolRegistryAware
+{
+ /**
+ * Sets the class pool registry once initialised. This method can only be called by AOPSystem and
+ * should only be called once
+ * @param system The calling AOPSystem
+ * @param classPoolRegistry The class pool registry set. This is guaranteed not-null
+ * @throws IllegalStateException if the class pool registry is already set
+ */
+ void setClassPoolRegistry(AOPSystem system, ClassPoolRegistry classPoolRegistry);
+
+}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/Configuration.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/Configuration.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/Configuration.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -24,8 +24,6 @@
import java.util.List;
import org.jboss.aop.Advisor;
-import org.jboss.aop.ClassLoaderValidation;
-import org.jboss.aop.classpool.AOPClassLoaderScopingPolicy;
import org.jboss.aop.pointcut.ast.ClassExpression;
@@ -36,18 +34,9 @@
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
-public interface Configuration
+public interface Configuration extends WeaverAware
{
/**
- * Sets the weaver once initialised. This method can only be called by AOPSystem and
- * should only be called once
- * @param system The calling AOPSystem
- * @param Weaver The weaver set. This is guaranteed not-null
- * @throws IllegalStateException if the weaver is already set
- */
- void setWeaver(AOPSystem system, Weaver weaver);
-
- /**
* Gets whether invocation classes should be generated to avoid reflection when using classic weaving.
* @return whether to generate invocation classes
*/
@@ -73,6 +62,14 @@
void setVerbose(boolean verbose);
/**
+ * Gets whether classes should be pruned in the underlying classpool.
+ * This only returns value for the {@link ConfigurationProperties#PRUNE} system
+ * property on startup. At runtime use {@link ClassPoolRegistry#isPrune()}
+ * @return The prune flag
+ */
+ public boolean isPrune();
+
+ /**
* Gets a list of annotation type names that should be checked in RuntimeInvisible(Parameter)Annotations
* @return the annotation types to be checked
*/
@@ -152,39 +149,4 @@
* @param maintainMethodInterceptors whether Advisor.methodinterceptors should be maintained
*/
void setMaintainAdvisorMethodInterceptors(boolean maintainMethodInterceptors);
-
- /**
- * Gets the classloader scoping policy. This is normally only used when running in a managed environment
- * such as JBoss Application Server
- * @return The classloader scoping policy
- */
- //TODO SPI interface needed for AOPClassLoaderScopingPolicy
- AOPClassLoaderScopingPolicy getClassLoaderScopingPolicy();
-
- /**
- * Sets the classloader scoping policy. This is normally only used when running in a managed environment
- * such as JBoss Application Server.
- * This should only get set on startup, subsequent attempts to change this are ignored.
- * @param classLoaderScopingPolicy The classloader scoping policy
- */
- //TODO SPI interface needed for AOPClassLoaderScopingPolicy
- void setClassLoaderScopingPolicy(AOPClassLoaderScopingPolicy classLoaderScopingPolicy);
-
- /**
- * Gets the classloader validation. This is normally only used whhen running in a managed environment
- * such as JBoss Application Server.
- * @return The classloader validation
- */
- //TODO SPI interface needed for ClassLoaderValidation
- ClassLoaderValidation getClassLoaderValidator();
-
- /**
- * Sets the classloader validation. This is normally only used whhen running in a managed environment
- * such as JBoss Application Server
- * This should only get set on startup, subsequent attempts to change this are ignored.
- * @param classLoaderValidator The classloader validation
- */
- //TODO SPI interface needed for ClassLoaderValidation
- void setClassLoaderValidator(ClassLoaderValidation classLoaderValidator);
-
}
Copied: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ConfigurationAware.java (from rev 84506, projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java)
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ConfigurationAware.java (rev 0)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/ConfigurationAware.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.spi;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface ConfigurationAware
+{
+ /**
+ * Sets the confiuration once initialised. This method can only be called by AOPSystem and
+ * should only be called once
+ * @param system The calling AOPSystem
+ * @param configuration The weaver set. This is guaranteed not-null
+ * @throws IllegalStateException if the configuration is already set
+ */
+ void setConfiguration(AOPSystem system, Configuration configuration);
+
+}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/Weaver.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/Weaver.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/Weaver.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -30,7 +30,7 @@
* @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
* @version $Revision: 1.1 $
*/
-public interface Weaver extends Translator
+public interface Weaver extends Translator, ConfigurationAware, ClassPoolRegistryAware
{
/**
* Sets the AOPLock. This method can only be called by AOPSystem and
@@ -41,7 +41,6 @@
*/
void setAOPLock(AOPSystem system, AOPLock lock);
-
/**
* Entry point for weaving a class
* @param className The name of the class we are loading
Copied: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/WeaverAware.java (from rev 84506, projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java)
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/WeaverAware.java (rev 0)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/WeaverAware.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.spi;
+
+/**
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface WeaverAware
+{
+ /**
+ * Sets the weaver once initialised. This method can only be called by AOPSystem and
+ * should only be called once
+ * @param system The calling AOPSystem
+ * @param Weaver The weaver set. This is guaranteed not-null
+ * @throws IllegalStateException if the weaver is already set
+ */
+ void setWeaver(AOPSystem system, Weaver weaver);
+
+}
Copied: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/temp/Internal.java (from rev 84506, projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java)
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/temp/Internal.java (rev 0)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/spi/temp/Internal.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -0,0 +1,35 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.aop.spi.temp;
+
+/**
+ * Annotation to help refactoring. Used to mark classes and spi methods that are only for internal use.
+ * If the class is a parameter/return for an spi method then it should be possible to just change that class
+ * into an interface in the spi package + an impl class in the plugins package
+ *
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public @interface Internal
+{
+
+}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/AOPTransformer.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/AOPTransformer.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/AOPTransformer.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -25,8 +25,8 @@
import java.lang.instrument.IllegalClassFormatException;
import java.security.ProtectionDomain;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.instrument.JoinPointGenerator;
+import org.jboss.aop.spi.AOPSystem;
/**
* Comment
@@ -84,7 +84,7 @@
try
{
//Make sure that we use the correct classloader, in order to get the correct domain if it is a scoped loader
- return AspectManager.instance(loader).transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
+ return AOPSystem.getWeaver().transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
}
catch (Exception e)
{
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/Agent.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/Agent.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/Agent.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -24,6 +24,7 @@
import org.jboss.aop.AspectManager;
import org.jboss.aop.DynamicAOPStrategy;
import org.jboss.aop.HotSwapStrategy;
+import org.jboss.aop.spi.AOPSystem;
import java.lang.instrument.Instrumentation;
@@ -46,15 +47,15 @@
{
instrumentation = inst;
StandaloneClassPoolFactory factory = new StandaloneClassPoolFactory();
- AspectManager.setClassPoolFactory(factory);
+ AOPSystem.getClassPoolRegistry().setClassPoolFactory(factory);
// necessary for configuration
AspectManager.instance();
if (agentArgs != null && agentArgs.indexOf("-hotSwap") != -1)
{
// setting dynamic aop strategy: hot swap classes through InstrumentationAdapter
DynamicAOPStrategy strategy = new HotSwapStrategy(new InstrumentationAdapter(inst));
- AspectManager.instance().setDynamicAOPStrategy(strategy);
- AspectManager.setPrune(false); // no prune
+ AOPSystem.getWeaver().setDynamicAOPStrategy(strategy);
+ AOPSystem.getClassPoolRegistry().setPrune(false);// no prune
}
inst.addTransformer(new AOPTransformer());
}
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/Compiler.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/Compiler.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/standalone/Compiler.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -389,7 +389,7 @@
System.out.println("[warning] Trying to compile " + info.getFile() + " and found it also within " + classUrl.getFile() + " will not proceed. ");
return;
}
- byte[] bytes = AspectManager.instance().transform(loader, info.getClassName(), null, null, null);
+ byte[] bytes = AOPSystem.getWeaver().transform(loader, info.getClassName(), null, null, null);
if (bytes == null)
{
if (verbose) System.out.println("[no comp needed] " + info.getFile());
Modified: projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/util/ReflectToJavassist.java
===================================================================
--- projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/util/ReflectToJavassist.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/main/java/org/jboss/aop/util/ReflectToJavassist.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -21,6 +21,10 @@
*/
package org.jboss.aop.util;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtConstructor;
@@ -28,12 +32,8 @@
import javassist.CtMethod;
import javassist.NotFoundException;
-import org.jboss.aop.AspectManager;
+import org.jboss.aop.spi.AOPSystem;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
/**
* Comment
*
@@ -45,7 +45,7 @@
{
public static CtClass classToJavassist(Class<?> clazz) throws NotFoundException
{
- ClassPool pool = AspectManager.instance().findClassPool(clazz);
+ ClassPool pool = AOPSystem.getClassPoolRegistry().findClassPool(clazz);
CtClass ct = pool.get(clazz.getName());
return ct;
}
Modified: projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/jdk15/dynamic/common/ScenarioLoader.java
===================================================================
--- projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/jdk15/dynamic/common/ScenarioLoader.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/jdk15/dynamic/common/ScenarioLoader.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -30,6 +30,7 @@
import java.util.Properties;
import org.jboss.aop.AspectManager;
+import org.jboss.aop.spi.AOPSystem;
/**
* Loads the scenario classes using a class loader. This assures that the scenario to
@@ -189,6 +190,6 @@
*/
public void removeClassLoaderFromAspectManager()
{
- AspectManager.instance().unregisterClassLoader(classLoader);
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(classLoader);
}
}
\ No newline at end of file
Modified: projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/jdk15/dynamic/common/scenario/ScenarioRunner.java
===================================================================
--- projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/jdk15/dynamic/common/scenario/ScenarioRunner.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/jdk15/dynamic/common/scenario/ScenarioRunner.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -36,6 +36,7 @@
import org.jboss.aop.advice.AdviceBinding;
import org.jboss.aop.classpool.AOPClassPool;
import org.jboss.aop.pointcut.ast.ParseException;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.test.aop.jdk15.dynamic.common.BindingInterceptor;
import org.jboss.test.aop.jdk15.dynamic.common.InstanceInterceptor;
import org.jboss.test.aop.jdk15.dynamic.common.POJOWrappingInfo;
@@ -325,7 +326,7 @@
*/
private static void loadPOJOData()
{
- Map<ClassLoader, ClassPool> cls = AspectManager.getRegisteredCLs();
+ Map<ClassLoader, ClassPool> cls = AOPSystem.getClassPoolRegistry().getRegisteredCLs();
AOPClassPool classPool = (AOPClassPool) cls.get(POJO.class.getClassLoader());
try
{
Modified: projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/unit/spi/AOPSystemUnitTestCase.java
===================================================================
--- projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/unit/spi/AOPSystemUnitTestCase.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/unit/spi/AOPSystemUnitTestCase.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -22,8 +22,11 @@
package org.jboss.test.aop.unit.spi;
import org.jboss.aop.spi.AOPSystem;
+import org.jboss.aop.spi.ClassPoolRegistry;
import org.jboss.aop.spi.Configuration;
import org.jboss.aop.spi.ConfigurationProperties;
+import org.jboss.aop.spi.Manager;
+import org.jboss.aop.spi.Weaver;
import junit.framework.TestCase;
@@ -37,11 +40,32 @@
protected void setUp() throws Exception
{
System.setProperty(ConfigurationProperties.VERBOSE, "true");
+ System.setProperty(ConfigurationProperties.PRUNE, "false");
}
public void testCanGetConfiuration()
{
Configuration config = AOPSystem.getConfiguration();
assertNotNull(config);
+ assertTrue(config.isVerbose());
}
+
+ public void testCanGetRootManager()
+ {
+ Manager manager = AOPSystem.getRootManager();
+ assertNotNull(manager);
+ }
+
+ public void testCanGetWeaver()
+ {
+ Weaver weaver = AOPSystem.getWeaver();
+ assertNotNull(weaver);
+ }
+
+ public void testCanGetClassPoolRegistry()
+ {
+ ClassPoolRegistry registry = AOPSystem.getClassPoolRegistry();
+ assertNotNull(registry);
+ assertFalse(registry.isPrune());
+ }
}
Modified: projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/unit/spi/ConfigurationUnitTestCase.java
===================================================================
--- projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/unit/spi/ConfigurationUnitTestCase.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/aop/src/test/java/org/jboss/test/aop/unit/spi/ConfigurationUnitTestCase.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -461,7 +461,27 @@
}
}
+
+ public void testPruneNotSet()
+ {
+ Configuration conf = createConfiguration();
+ assertTrue(conf.isPrune());
+ }
+ public void testPruneSet()
+ {
+ System.setProperty("jboss.aop.prune", "false");
+ try
+ {
+ Configuration conf = createConfiguration();
+ assertFalse(conf.isPrune());
+ }
+ finally
+ {
+ System.clearProperty("jboss.aop.prune");
+ }
+ }
+
private Configuration createConfiguration()
{
return new DefaultConfiguration();
Modified: projects/aop/branches/createspi/asintegration-core/src/main/java/org/jboss/aop/asintegration/core/AspectManagerServiceDelegate.java
===================================================================
--- projects/aop/branches/createspi/asintegration-core/src/main/java/org/jboss/aop/asintegration/core/AspectManagerServiceDelegate.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-core/src/main/java/org/jboss/aop/asintegration/core/AspectManagerServiceDelegate.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -57,6 +57,7 @@
import org.jboss.aop.introduction.InterfaceIntroduction;
import org.jboss.aop.pointcut.Pointcut;
import org.jboss.aop.spi.AOPSystem;
+import org.jboss.aop.spi.ClassPoolRegistry;
import org.jboss.aop.spi.Configuration;
import org.jboss.logging.Logger;
import org.jboss.system.server.ServerConfig;
@@ -71,7 +72,8 @@
public abstract class AspectManagerServiceDelegate
{
//TODO should be injected?
- Configuration configuration = AOPSystem.getConfiguration();
+ private Configuration configuration = AOPSystem.getConfiguration();
+ private ClassPoolRegistry classPoolRegistry = AOPSystem.getClassPoolRegistry();
Logger log = Logger.getLogger(AspectManagerServiceDelegate.class);
@@ -241,9 +243,9 @@
// Validate the the tmp dir exists
if (tmpClassesDir.exists() == false && tmpClassesDir.mkdirs() == false)
throw new FileNotFoundException("Failed to create tmpClassesDir: " + tmpClassesDir.getAbsolutePath());
- AspectManager.setClassPoolFactory(createFactory());
+ AOPSystem.getClassPoolRegistry().setClassPoolFactory(createFactory());
- configuration.setClassLoaderValidator(createClassLoaderValidation());
+ classPoolRegistry.setClassLoaderValidator(createClassLoaderValidation());
// Add the tmp classes dir to our UCL classpath
Deployment.searchClasspath = false; // turn off dynamic finding of DDs
@@ -257,7 +259,7 @@
{
attachTranslator();
}
- configuration.setClassLoaderScopingPolicy(integration.createAOPClassLoaderScopingPolicy());
+ classPoolRegistry.setClassLoaderScopingPolicy(integration.createAOPClassLoaderScopingPolicy());
deployBootstrapXml();
deployBaseXml();
@@ -433,7 +435,7 @@
try
{
//Make sure that we use the correct classloader, in order to get the correct domain if it is a scoped loader
- return AspectManager.instance(loader).translate(classname, loader, classBytes);
+ return AOPSystem.getWeaver().translate(classname, loader, classBytes);
}
catch (Exception e)
{
@@ -450,12 +452,12 @@
public boolean getPrune()
{
- return AspectManager.getPrune();
+ return configuration.isPrune();
}
public void setPrune(boolean prune)
{
- AspectManager.setPrune(prune);
+ AOPSystem.getClassPoolRegistry().setPrune(prune);
}
public String getExclude()
@@ -733,7 +735,7 @@
public String registeredClassLoaders()
{
- Map<ClassLoader, ClassPool> loaders = AspectManager.getRegisteredCLs();
+ Map<ClassLoader, ClassPool> loaders = AOPSystem.getClassPoolRegistry().getRegisteredCLs();
StringBuffer buffer = new StringBuffer("");
for (ClassLoader loader : loaders.keySet())
{
Modified: projects/aop/branches/createspi/asintegration-jmx/src/main/java/org/jboss/aop/asintegration/jboss4/ScopedJBossClassPool.java
===================================================================
--- projects/aop/branches/createspi/asintegration-jmx/src/main/java/org/jboss/aop/asintegration/jboss4/ScopedJBossClassPool.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-jmx/src/main/java/org/jboss/aop/asintegration/jboss4/ScopedJBossClassPool.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -25,19 +25,19 @@
import java.net.URL;
import java.util.ArrayList;
-import org.jboss.aop.AspectManager;
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.NotFoundException;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.aop.asintegration.jboss4.LoaderRepositoryUrlUtil.UrlInfo;
import org.jboss.aop.classpool.AOPClassPool;
import org.jboss.aop.classpool.AOPClassPoolRepository;
-import org.jboss.aop.asintegration.jboss4.LoaderRepositoryUrlUtil.UrlInfo;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
import org.jboss.mx.loading.LoaderRepository;
import org.jboss.mx.loading.RepositoryClassLoader;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.NotFoundException;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
/**
* A classpool in JBoss backed by a scoped (HierarchicalLoaderRepository) loader repository
*
@@ -194,18 +194,18 @@
private ClassPool getCorrectPoolForResource(String classname, URL url)
{
- synchronized(AspectManager.getRegisteredCLs())
+ synchronized(AOPSystem.getClassPoolRegistry().getRegisteredCLs())
{
//JBoss 5 has an extra NoAnnotationURLCLassLoader that is not on the default path, make sure that that is checked at the end
//FIXME This needs revisiting/removing once the
ArrayList<AOPClassPool> noAnnotationURLClassLoaderPools = null;
String resource = url.toString();
- for(ClassPool pool : AspectManager.getRegisteredCLs().values())
+ for(ClassPool pool : AOPSystem.getClassPoolRegistry().getRegisteredCLs().values())
{
AOPClassPool candidate = (AOPClassPool)pool;
if (candidate.isUnloadedClassLoader())
{
- AspectManager.instance().unregisterClassLoader(candidate.getClassLoader());
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(candidate.getClassLoader());
continue;
}
Modified: projects/aop/branches/createspi/asintegration-jmx/src/main/java/org/jboss/aop/deployment/AspectDeployer.java
===================================================================
--- projects/aop/branches/createspi/asintegration-jmx/src/main/java/org/jboss/aop/deployment/AspectDeployer.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-jmx/src/main/java/org/jboss/aop/deployment/AspectDeployer.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -36,6 +36,7 @@
import org.jboss.aop.AspectManager;
import org.jboss.aop.AspectXmlLoader;
import org.jboss.aop.asintegration.jboss4.ScopedRepositoryClassLoaderHelper;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.deployment.DeploymentException;
import org.jboss.deployment.DeploymentInfo;
import org.jboss.deployment.DeploymentState;
@@ -242,7 +243,7 @@
URL docURL = getDocUrl(di);
//long start = System.currentTimeMillis();
AspectXmlLoader.undeployXML(docURL);
- AspectManager.instance().unregisterClassLoader(di.ucl);
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(di.ucl);
/*
// System.out.println("************************");
Modified: projects/aop/branches/createspi/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java
===================================================================
--- projects/aop/branches/createspi/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-jmx/src/test/java/org/jboss/test/aop/classpool/ucl/test/UclClassPoolTest.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -35,8 +35,8 @@
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.classpool.ucl.JBossUclDelegatingClassPoolFactory;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
import org.jboss.mx.loading.LoaderRepository;
import org.jboss.mx.loading.RepositoryClassLoader;
@@ -80,7 +80,7 @@
try
{
MAIN_LOADER_REPOSITORY_OBJECT_NAME = new ObjectName("JMImplementation:name=Default,service=LoaderRepository");
- AspectManager.setClassPoolFactory(new JBossUclDelegatingClassPoolFactory(new File(".")));
+ AOPSystem.getClassPoolRegistry().setClassPoolFactory(new JBossUclDelegatingClassPoolFactory(new File(".")));
}
catch (Exception e)
{
@@ -162,7 +162,7 @@
protected ClassPool createGlobalClassPool(URL url) throws Exception
{
ClassLoader loader = createGlobalClassLoader(url);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassLoader createGlobalClassLoaderWithParent(URL url, ClassLoader parent) throws Exception
@@ -177,7 +177,7 @@
{
ClassLoader parentLoader = parent != null ? parent.getClassLoader() : null;
ClassLoader loader = createGlobalClassLoaderWithParent(url, parentLoader);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected void removeClassLoaderFromRepository(ClassLoader cl)
@@ -200,7 +200,7 @@
if (cl != null)
{
removeClassLoaderFromRepository(cl);
- AspectManager.instance().unregisterClassLoader(cl);
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(cl);
registeredClassLoaders.remove(cl);
//Delete the temporary directory since running in Eclipse does not do this automatically
deleteTempDir();
@@ -287,7 +287,7 @@
protected ClassPool createChildClassPool(URL url, boolean parentFirst) throws Exception
{
ClassLoader loader = createChildClassLoader(url, parentFirst);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassLoader createChildURLClassLoader(ClassLoader parent, URL url)
@@ -309,7 +309,7 @@
ClassLoader parentLoader = parent != null ? parent.getClassLoader() : null;
ClassLoader cl = createChildURLClassLoader(parentLoader, url);
registeredClassLoaders.add(cl);
- return AspectManager.instance().registerClassLoader(cl);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(cl);
}
protected ClassPool createChildURLClassPoolParentLast(ClassPool parent, URL url)
@@ -317,7 +317,7 @@
ClassLoader parentLoader = parent != null ? parent.getClassLoader() : null;
ClassLoader cl = createChildURLClassLoaderParentLast(parentLoader, url);
registeredClassLoaders.add(cl);
- ClassPool pool = AspectManager.instance().registerClassLoader(cl);
+ ClassPool pool = AOPSystem.getClassPoolRegistry().registerClassLoader(cl);
pool.childFirstLookup = true;
return pool;
}
Modified: projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/AOPClassLoaderInitializer.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/AOPClassLoaderInitializer.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/AOPClassLoaderInitializer.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -38,7 +38,7 @@
{
public static Domain initializeForUnit(DeploymentUnit unit)
{
- AOPClassLoaderScopingPolicyWithRegistry policy = (AOPClassLoaderScopingPolicyWithRegistry)AOPSystem.getConfiguration().getClassLoaderScopingPolicy();
+ AOPClassLoaderScopingPolicyWithRegistry policy = (AOPClassLoaderScopingPolicyWithRegistry)AOPSystem.getClassPoolRegistry().getClassLoaderScopingPolicy();
registerLoaders(policy, unit);
Domain domain = getDomain(policy.getRegistry(), unit);
@@ -47,12 +47,12 @@
public static void unregisterLoaders(AspectManager manager, DeploymentUnit unit)
{
- AOPClassLoaderScopingPolicyWithRegistry policy = (AOPClassLoaderScopingPolicyWithRegistry)AOPSystem.getConfiguration().getClassLoaderScopingPolicy();
+ AOPClassLoaderScopingPolicyWithRegistry policy = (AOPClassLoaderScopingPolicyWithRegistry)AOPSystem.getClassPoolRegistry().getClassLoaderScopingPolicy();
DomainRegistry registry = policy.getRegistry();
if (unit.isTopLevel() || unit.getParent().getClassLoader() != unit.getClassLoader())
{
registry.cleanupLoader(unit.getClassLoader());
- manager.unregisterClassLoader(unit.getClassLoader());
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(unit.getClassLoader());
}
}
Modified: projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/DefaultTranslator.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/DefaultTranslator.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/DefaultTranslator.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -23,7 +23,7 @@
import java.security.ProtectionDomain;
-import org.jboss.aop.AspectManager;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.util.loading.Translator;
/**
@@ -33,18 +33,12 @@
*/
public class DefaultTranslator implements Translator
{
- AspectManager manager;
boolean translate;
- public DefaultTranslator(AspectManager manager)
- {
- this.manager = manager;
- }
-
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
ProtectionDomain protectionDomain, byte[] classfileBuffer) throws Exception
{
- return manager.transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
+ return AOPSystem.getWeaver().transform(loader, className, classBeingRedefined, protectionDomain, classfileBuffer);
}
public void unregisterClassLoader(ClassLoader loader)
Modified: projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5ClassPoolFactory.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5ClassPoolFactory.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5ClassPoolFactory.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -28,9 +28,9 @@
import javassist.scopedpool.ScopedClassPoolFactory;
import javassist.scopedpool.ScopedClassPoolRepository;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.classpool.AOPClassPool;
import org.jboss.aop.classpool.AbstractJBossClassPoolFactory;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloading.spi.RealClassLoader;
@@ -88,7 +88,7 @@
private ClassPool getParentUnitClassPool(ClassLoader cl)
{
ClassLoader parent = registry.getParentUnitLoader(cl);
- return AspectManager.instance().registerClassLoader(parent);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(parent);
}
Modified: projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/JBoss5Integration.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -33,7 +33,6 @@
import javassist.scopedpool.ScopedClassPoolFactory;
import javassist.scopedpool.ScopedClassPoolRepository;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.asintegration.JBossIntegration;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloading.spi.RealClassLoader;
@@ -151,7 +150,7 @@
public void attachDeprecatedTranslator()
{
- ClassLoaderSystem.getInstance().setTranslator(new DefaultTranslator(AspectManager.getTopLevelAspectManager()));
+ ClassLoaderSystem.getInstance().setTranslator(new DefaultTranslator());
}
public void detachDeprecatedTranslator()
Modified: projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/ScopedJBoss5ClassPool.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/ScopedJBoss5ClassPool.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/ScopedJBoss5ClassPool.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -34,6 +34,7 @@
import org.jboss.aop.AspectManager;
import org.jboss.aop.classpool.AOPClassPool;
import org.jboss.aop.classpool.AOPClassPoolRepository;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.Loader;
import org.jboss.classloading.spi.RealClassLoader;
@@ -302,18 +303,18 @@
private ClassPool getCorrectPoolForResource(String classname, String resourceName, URL url, boolean trace)
{
- synchronized(AspectManager.getRegisteredCLs())
+ synchronized(AOPSystem.getClassPoolRegistry().getRegisteredCLs())
{
//JBoss 5 has an extra NoAnnotationURLCLassLoader that is not on the default path, make sure that that is checked at the end
//FIXME This needs revisiting/removing once the
ArrayList<ClassPool> noAnnotationURLClassLoaderPools = null;
- for(Iterator<ClassPool> it = AspectManager.getRegisteredCLs().values().iterator() ; it.hasNext() ; )
+ for(Iterator<ClassPool> it = AOPSystem.getClassPoolRegistry().getRegisteredCLs().values().iterator() ; it.hasNext() ; )
{
AOPClassPool candidate = (AOPClassPool)it.next();
if (candidate.isUnloadedClassLoader())
{
- AspectManager.instance().unregisterClassLoader(candidate.getClassLoader());
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(candidate.getClassLoader());
continue;
}
@@ -373,7 +374,7 @@
//Rememeber that the stuff in jboss5/lib goes in a child classloader of the default classloader. We need
//to make this the parent of the temp classloader
ClassLoader aopLoader = AspectManager.class.getClassLoader();
- ClassPool pool = AspectManager.instance().registerClassLoader(aopLoader);
+ ClassPool pool = AOPSystem.getClassPoolRegistry().registerClassLoader(aopLoader);
return AOPClassPool.createAOPClassPool(pool, AOPClassPoolRepository.getInstance());
}
Modified: projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/VFSClassLoaderScopingPolicy.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/VFSClassLoaderScopingPolicy.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/asintegration/jboss5/VFSClassLoaderScopingPolicy.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -27,6 +27,7 @@
import org.jboss.aop.AspectManager;
import org.jboss.aop.Domain;
import org.jboss.aop.classpool.ExtraClassPoolFactoryParameters;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.classloading.spi.dependency.Module;
import org.jboss.logging.Logger;
@@ -54,7 +55,7 @@
ExtraClassPoolFactoryParameters.pushThreadProperties(properties);
try
{
- AspectManager.instance().registerClassLoader(loader); //Ends up in classpool factory create method
+ AOPSystem.getClassPoolRegistry().registerClassLoader(loader); //Ends up in classpool factory create method
}
finally
{
Modified: projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClClassPoolToClassPoolDomainAdapter.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -23,8 +23,8 @@
import javassist.ClassPool;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.classpool.ClassPoolToClassPoolDomainAdapter;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.classloader.spi.base.BaseClassLoaderDomain;
/**
@@ -37,6 +37,6 @@
@Override
public ClassPool initialiseParentClassLoader()
{
- return AspectManager.instance().registerClassLoader(BaseClassLoaderDomain.class.getClassLoader());
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(BaseClassLoaderDomain.class.getClassLoader());
}
}
Modified: projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/main/java/org/jboss/aop/classpool/jbosscl/JBossClDelegatingClassPoolFactory.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -26,13 +26,13 @@
import javassist.scopedpool.ScopedClassPoolFactory;
import javassist.scopedpool.ScopedClassPoolRepository;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.asintegration.jboss5.DomainRegistry;
import org.jboss.aop.classpool.AbstractJBossDelegatingClassPoolFactory;
import org.jboss.aop.classpool.ClassPoolDomain;
import org.jboss.aop.classpool.ClassPoolDomainRegistry;
import org.jboss.aop.classpool.ClassPoolToClassPoolDomainAdapter;
import org.jboss.aop.classpool.NonDelegatingClassPool;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.classloader.spi.ClassLoaderDomain;
import org.jboss.classloader.spi.ClassLoaderSystem;
import org.jboss.classloading.spi.RealClassLoader;
@@ -100,7 +100,7 @@
ClassLoader parentUnitLoader = registry.getParentUnitLoader(cl);
if (parentUnitLoader != null)
{
- ClassPool parentUnitPool = AspectManager.getTopLevelAspectManager().registerClassLoader(parentUnitLoader);
+ ClassPool parentUnitPool = AOPSystem.getClassPoolRegistry().registerClassLoader(parentUnitLoader);
parentPoolDomain = new ClassPoolToClassPoolDomainAdapter(parentUnitPool);
}
}
Modified: projects/aop/branches/createspi/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/ClassPoolWithReplaceReferencesTestCase.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -38,9 +38,9 @@
import javassist.Modifier;
import junit.framework.Test;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.classpool.AOPClassPool;
import org.jboss.aop.classpool.AOPClassPoolRepository;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.classloading.spi.DomainClassLoader;
import org.jboss.test.AbstractTestDelegate;
import org.jboss.util.loading.Translator;
@@ -202,7 +202,7 @@
return null;
}
- ClassPool pool = AspectManager.instance().registerClassLoader(loader);
+ ClassPool pool = AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
CtClass clazz = pool.get(className);
if (className.endsWith("Caller"))
{
Modified: projects/aop/branches/createspi/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java
===================================================================
--- projects/aop/branches/createspi/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java 2009-02-20 17:57:17 UTC (rev 84563)
+++ projects/aop/branches/createspi/asintegration-mc/src/test/java/org/jboss/test/aop/classpool/jbosscl/test/JBossClClassPoolTest.java 2009-02-20 18:21:08 UTC (rev 84564)
@@ -35,9 +35,9 @@
import javassist.CtClass;
import junit.framework.Test;
-import org.jboss.aop.AspectManager;
import org.jboss.aop.asintegration.jboss5.VFSClassLoaderDomainRegistry;
import org.jboss.aop.classpool.jbosscl.JBossClDelegatingClassPoolFactory;
+import org.jboss.aop.spi.AOPSystem;
import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
import org.jboss.classloader.plugins.filter.CombiningClassFilter;
import org.jboss.classloader.plugins.filter.PatternClassFilter;
@@ -122,7 +122,7 @@
{
domainRegistry = new VFSClassLoaderDomainRegistry();
- AspectManager.setClassPoolFactory(new JBossClDelegatingClassPoolFactory(domainRegistry));
+ AOPSystem.getClassPoolRegistry().setClassPoolFactory(new JBossClDelegatingClassPoolFactory(domainRegistry));
VFS.init();
}
@@ -507,7 +507,7 @@
protected ClassPool createClassPool(Result result, String name, boolean importAll, URL... urls) throws Exception
{
ClassLoader loader = createClassLoader(result, name, importAll, urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createClassPool(String name, BundleInfoBuilder builder, URL... urls) throws Exception
@@ -529,7 +529,7 @@
{
TestVFSClassLoaderFactory factory = TestVFSClassLoaderFactoryFactory.createClassLoaderFactory(name, importAll, builder, urls);
ClassLoader loader = createClassLoader(result, factory);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, URL... urls) throws Exception
@@ -540,7 +540,7 @@
protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
@@ -551,7 +551,7 @@
protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
@@ -562,7 +562,7 @@
protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, importAll, urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, URL... urls) throws Exception
@@ -573,7 +573,7 @@
protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
@@ -584,7 +584,7 @@
protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, boolean importAll, ClassPool parent, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, importAll, parent.getClassLoader(), urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
@@ -595,7 +595,7 @@
protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, String parentDomainName, boolean importAll, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, parentDomainName, importAll, urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, String parentDomainName, BundleInfoBuilder builder, URL... urls) throws Exception
@@ -606,7 +606,7 @@
protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, String parentDomainName, BundleInfoBuilder builder, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, parentDomainName, builder, urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildDomainParentFirstClassPool(String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
@@ -617,7 +617,7 @@
protected ClassPool createChildDomainParentFirstClassPool(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentFirstClassLoader(result, name, domainName, builder, urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildDomainParentLastClassPool(String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
@@ -628,7 +628,7 @@
protected ClassPool createChildDomainParentLastClassPool(Result result, String name, String domainName, BundleInfoBuilder builder, URL... urls) throws Exception
{
ClassLoader loader = createChildDomainParentLastClassLoader(result, name, domainName, builder, urls);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected ClassPool createChildURLClassPool(ClassPool parent, URL url)
@@ -639,7 +639,7 @@
parentLoader = parent.getClassLoader();
}
ClassLoader loader = createChildURLClassLoader(parentLoader, url);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected void registerModule(ClassLoader loader, Module module)
@@ -722,7 +722,7 @@
if (pool != null)
{
ClassLoader loader = pool.getClassLoader();
- AspectManager.instance().unregisterClassLoader(loader);
+ AOPSystem.getClassPoolRegistry().unregisterClassLoader(loader);
if (loader != null)
{
unregisterClassLoader(loader);
@@ -815,7 +815,7 @@
protected ClassPool assertClassPool(TestVFSClassLoaderFactory factory) throws Exception
{
ClassLoader loader = assertClassLoader(factory);
- return AspectManager.instance().registerClassLoader(loader);
+ return AOPSystem.getClassPoolRegistry().registerClassLoader(loader);
}
protected Class<?> assertLoadClass(String name, ClassLoader initiating) throws Exception
More information about the jboss-cvs-commits
mailing list