|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jboss.aop.AspectManager
public class AspectManager
This singleton class manages all pointcuts and metadata. Coders can access it via the AspectManager.instance() method.
It is also the middle man between the ClassLoader and the actual class instrumentation as well. App Developers that want to create and apply, interceptors, pointcuts, or metadata at runtime can also use this object to do that.
Field Summary | |
---|---|
protected WeakHashMap |
advisors
|
protected LinkedHashMap |
annotationIntroductions
|
protected LinkedHashMap |
annotationOverrides
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
aspectDefinitions
|
protected LinkedHashMap |
bindings
|
protected boolean |
call
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
cflowStacks
|
static ClassLoaderValidation |
classLoaderValidator
|
protected LinkedHashMap |
classMetaData
|
protected Hashtable |
classMetaDataLoaders
|
protected boolean |
construction
|
protected HashMap |
containers
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
convertableReference
|
static boolean |
debugClasses
|
protected HashMap |
declares
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
dynamicCFlows
|
protected DynamicAOPStrategy |
dynamicStrategy
|
protected ArrayList |
exclude
class name prefixes to explicitly exclude unless contained in include. |
protected boolean |
execution
|
protected boolean |
get
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
hasConstructorInterception
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
hasFieldInterception
|
protected ArrayList |
ignore
A set of wildcard enabled classnames that will be ignored no matter if they have been included. |
protected ClassExpression[] |
ignoreExpressions
ClassExpressions built from ignore. |
protected ArrayList |
include
class name prefixes to explicitly include, this overrides whatever was set in exclude. |
protected HashMap |
interceptorFactories
|
protected HashMap |
interceptorStacks
|
protected LinkedHashMap |
interfaceIntroductions
|
protected static AspectManager |
manager
|
static AspectNotificationHandler |
notificationHandler
This is a callback object that receives events about new pointcuts, interceptors and metadata. |
static boolean |
optimize
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
perVMAspects
|
protected LinkedHashMap |
pointcutInfos
|
protected LinkedHashMap |
pointcuts
|
protected LinkedHashMap |
precedenceDefs
|
protected WeakHashMap |
scopedClassLoaderDomains
A map of domains by loaderRepository, maintaned by the top level AspectManager |
static AOPScopedClassLoaderHelper |
scopedCLHelper
|
protected boolean |
set
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
skipConstructorInterception
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
skipConvertableReference
|
protected EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap |
skipFieldInterception
|
protected PrecedenceDefEntry[] |
sortedPrecedenceDefEntries
|
protected WeakHashMap |
subDomainsPerClass
A map of domains by class, maintaned by the top level AspectManager |
protected int |
subscribedDomainQueueRef
|
protected WeakHashMap |
subscribedSubDomains
Each domain may have sub domains interested in changes happening in this manager/domain |
protected WeakHashMap |
subscribedSubDomainsQueue
A queue for adding new subscribed subdomains to |
static boolean |
suppressReferenceErrors
Suppress when a class cannot be found that a class references This may happen if code in a class references something and the class is not in the classpath. |
static boolean |
suppressTransformationErrors
|
protected boolean |
transformationStarted
|
protected LinkedHashMap |
typedefs
|
static boolean |
verbose
logging switch. |
protected boolean |
within
|
protected boolean |
withincode
|
Constructor Summary | |
---|---|
AspectManager()
|
Method Summary | |
---|---|
void |
addAdviceStack(AdviceStack stack)
Add a referencable InterceptorStack( <stack> ) |
protected void |
addAdvisorToClassMetaDataBinding(ClassMetaDataBinding meta,
Class clazz,
Advisor advisor,
Class advisedClass)
|
void |
addAnnotationIntroduction(AnnotationIntroduction pointcut)
Register an annotation introduction |
void |
addAnnotationOverride(AnnotationIntroduction pointcut)
Register an annotation introduction |
void |
addAspectDefinition(AspectDefinition def)
|
void |
addBinding(AdviceBinding binding)
Add an interceptor pointcut with a given name |
void |
addCFlowStack(CFlowStack stack)
|
void |
addClassMetaData(ClassMetaDataBinding meta)
|
void |
addClassMetaDataLoader(String group,
ClassMetaDataLoader loader)
Every <class-metadata> tag corresponds to a ClassMetaDataLoader. |
void |
addConstructionInterceptionMarker(String classname)
|
void |
addContainer(DomainDefinition def)
|
void |
addDeclare(DeclareDef declare)
|
void |
addDynamicCFlow(String name,
DynamicCFlowDefinition cflow)
|
void |
addFieldInterceptionMarker(String classname)
|
void |
addInterceptorFactory(String name,
InterceptorFactory factory)
Add an interceptor factory that can be referenced by name. |
void |
addInterfaceIntroduction(InterfaceIntroduction pointcut)
Register an introduction pointcut |
void |
addPointcut(Pointcut pointcut)
Add an interceptor pointcut with a given name |
void |
addPrecedence(PrecedenceDef precedenceDef)
|
void |
addSubDomainPerClass(Class clazz,
Domain domain)
|
void |
addTypedef(Typedef def)
|
protected void |
applyInterfaceIntroductions(Advisor advisor,
Class clazz)
|
protected void |
applyInterfaceIntroductions(ClassAdvisor advisor,
javassist.CtClass clazz)
|
protected void |
attachMetaData(ClassAdvisor advisor,
Class clazz)
|
protected boolean |
attachMetaData(ClassAdvisor advisor,
javassist.CtClass clazz,
boolean addAdvisor)
|
void |
clearUnregisteredClassLoaders()
This method will check to see if a register classloader has been undeployed (as in JBoss) |
boolean |
convertReference(String classname)
|
protected Object |
createPerVmAspect(String def,
AspectDefinition adef,
ClassLoader scopedClassLoader)
|
boolean |
excludeClass(String classname)
|
Advisor |
findAdvisor(Class clazz)
|
ClassMetaDataLoader |
findClassMetaDataLoader(String group)
Every <class-metadata> tag corresponds to a ClassMetaDataLoader. |
javassist.ClassPool |
findClassPool(ClassLoader cl)
|
protected void |
forceResortPrecedenceDefs()
|
AdviceStack |
getAdviceStack(String name)
Find an interceptor stack referenced by name ( <stack> ) |
ClassAdvisor |
getAdvisor(Class clazz)
This method is called by the aspectized class when it is loaded This causes all initialization of interceptors for ClassAdvisor |
Advisor |
getAdvisor(String name)
|
ClassAdvisor |
getAdvisorIfAdvised(Class clazz)
|
Map |
getAdvisors()
|
List |
getAnnotationIntroductions()
|
List |
getAnnotationOverrides()
|
Advisor |
getAnyAdvisorIfAdvised(Class clazz)
Take into account that an advisor may be a container |
AspectDefinition |
getAspectDefinition(String name)
|
Map |
getAspectDefinitions()
|
LinkedHashMap |
getBindings()
|
CFlowStack |
getCFlowStack(String name)
|
Map |
getCflowStacks()
|
Map |
getClassMetaData()
|
Map |
getClassMetaDataLoaders()
|
static javassist.scopedpool.ScopedClassPoolFactory |
getClassPoolFactory()
|
DomainDefinition |
getContainer(String name)
|
Iterator |
getDeclares()
|
DynamicAOPStrategy |
getDynamicAOPStrategy()
Returns the dynamic aop strategy to be used. |
DynamicCFlow |
getDynamicCFlow(String name)
|
Map |
getDynamicCFlows()
|
ArrayList |
getExclude()
|
ArrayList |
getIgnore()
|
ClassExpression[] |
getIgnoreExpressions()
|
ArrayList |
getInclude()
|
Map |
getInterceptorFactories()
|
InterceptorFactory |
getInterceptorFactory(String name)
Find the interceptor factory that can be referenced by name. |
Map |
getInterceptorStacks()
|
InterfaceIntroduction |
getInterfaceIntroduction(String name)
Retrieve an introduction pointcut of a certain name |
Map |
getInterfaceIntroductions()
|
Object |
getPerVMAspect(AspectDefinition def)
|
Object |
getPerVMAspect(String def)
|
Map |
getPerVMAspects()
|
Pointcut |
getPointcut(String name)
Find a pointcut of with a given name |
LinkedHashMap |
getPointcutInfos()
|
LinkedHashMap |
getPointcuts()
|
LinkedHashMap |
getPrecedenceDefs()
|
static boolean |
getPrune()
|
protected javassist.ClassPool |
getRegisteredClassPool(ClassLoader cl)
|
static Map |
getRegisteredCLs()
|
protected Map |
getScopedClassLoaderDomains()
|
PrecedenceDefEntry[] |
getSortedPrecedenceDefEntries()
|
protected Map |
getSubDomainsPerClass()
|
ClassAdvisor |
getTempClassAdvisor(javassist.CtClass clazz)
|
Advisor |
getTempClassAdvisorIfNotExist(Class clazz)
|
static AspectManager |
getTopLevelAspectManager()
|
Typedef |
getTypedef(String name)
|
Map |
getTypedefs()
|
boolean |
ignoreClass(String classname)
|
boolean |
includeClass(String classname)
|
void |
initialiseClassAdvisor(Class clazz,
ClassAdvisor advisor)
|
static AspectManager |
instance()
|
static AspectManager |
instance(ClassLoader loadingClassLoader)
|
protected AspectDefinition |
internalRemoveAspectDefintion(String name)
|
boolean |
isAdvisorRegistered(Advisor advisor)
Checks to see if an Advisor represents a class that should have been undeployed. |
boolean |
isCall()
|
boolean |
isConstruction()
|
boolean |
isExecution()
|
boolean |
isGet()
|
boolean |
isNonAdvisableClassName(String classname)
|
boolean |
isSet()
|
boolean |
isWithin()
|
boolean |
isWithincode()
|
protected void |
registerClass(Class clazz)
|
javassist.ClassPool |
registerClassLoader(ClassLoader ucl)
|
void |
removeAnnotationIntroduction(AnnotationIntroduction pointcut)
remove an annotation pointcut |
void |
removeAnnotationOverride(AnnotationIntroduction pointcut)
remove an annotation pointcut |
void |
removeAspectDefinition(String name)
|
void |
removeBinding(String name)
Remove an interceptor pointcut with a given name |
void |
removeBindings(ArrayList binds)
|
void |
removeCFlowStack(String name)
|
void |
removeClassMetaData(String name)
|
void |
removeClassMetaDataLoader(String group)
Remove a loader for a given group |
void |
removeContainer(String name)
|
void |
removeDeclare(String name)
|
void |
removeDynamicCFlow(String name)
|
void |
removeInterceptorFactory(String name)
Remove an interceptor factory that can be referenced by name. |
void |
removeInterceptorStack(String name)
Remove a referencable InterceptorStack( <stack> ) |
void |
removeInterfaceIntroduction(String name)
remove an introduction pointcut of a certain name |
void |
removePointcut(String name)
Remove an interceptor pointcut with a given name |
void |
removePrecedence(String name)
|
void |
removeTypedef(String name)
|
void |
setBindings(LinkedHashMap bindings)
|
static void |
setClassPoolFactory(javassist.scopedpool.ScopedClassPoolFactory factory)
|
void |
setDynamicAOPStrategy(DynamicAOPStrategy strategy)
Sets the dynamic aop strategy to be used. |
void |
setExclude(ArrayList exclude)
|
void |
setIgnore(ArrayList ignore)
|
void |
setInclude(ArrayList include)
|
static void |
setPrune(boolean prune)
|
boolean |
shouldSkipConstruction(String classname)
|
boolean |
shouldSkipFieldAccess(String classname)
|
void |
skipConstruction(String classname)
|
void |
skipFieldAccess(String classname)
|
void |
skipReference(String classname)
|
void |
subscribeSubDomain(Domain domain)
Add subscriber to queue |
byte[] |
transform(ClassLoader loader,
String className,
Class classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer)
This is the hook for ClassLoaders that want to instrument their classes with AOP This would be called during a findClass or loadClass call. |
byte[] |
translate(String className,
ClassLoader loader)
This is to be backward compatible with JBoss 3.2.3 Translator interface |
byte[] |
translate(String className,
ClassLoader loader,
byte[] classfileBuffer)
This is to be backward compatible with JBoss 3.2.3 Translator interface |
void |
unregisterClassLoader(ClassLoader cl)
|
void |
unsubscribeSubDomain(Domain domain)
|
void |
updateAdvisorsForAddedAnnotationOverride(AnnotationIntroduction introduction)
|
void |
updateAdvisorsForAddedBinding(AdviceBinding binding)
|
protected void |
updateAdvisorsForAddedClassMetaData(ClassMetaDataBinding meta)
|
protected void |
updatePointcutStats(Pointcut pointcut)
THis method is used for performance reasons. |
protected void |
updateStats(PointcutStats stats)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final WeakHashMap advisors
protected final WeakHashMap scopedClassLoaderDomains
protected final WeakHashMap subDomainsPerClass
protected final WeakHashMap subscribedSubDomains
protected final WeakHashMap subscribedSubDomainsQueue
protected int subscribedDomainQueueRef
protected final LinkedHashMap interfaceIntroductions
protected final LinkedHashMap annotationIntroductions
protected final LinkedHashMap annotationOverrides
protected final LinkedHashMap bindings
protected final LinkedHashMap typedefs
protected final HashMap interceptorFactories
protected final Hashtable classMetaDataLoaders
protected final HashMap interceptorStacks
protected final HashMap declares
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap cflowStacks
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap dynamicCFlows
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap aspectDefinitions
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap perVMAspects
protected final ArrayList exclude
protected final ArrayList include
protected final ArrayList ignore
protected ClassExpression[] ignoreExpressions
protected final LinkedHashMap pointcuts
protected final LinkedHashMap pointcutInfos
protected boolean execution
protected boolean construction
protected boolean call
protected boolean within
protected boolean get
protected boolean set
protected boolean withincode
protected final LinkedHashMap classMetaData
protected final HashMap containers
protected final LinkedHashMap precedenceDefs
protected PrecedenceDefEntry[] sortedPrecedenceDefEntries
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap convertableReference
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap hasFieldInterception
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap hasConstructorInterception
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap skipConvertableReference
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap skipFieldInterception
protected final EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap skipConstructorInterception
protected DynamicAOPStrategy dynamicStrategy
protected boolean transformationStarted
public static AOPScopedClassLoaderHelper scopedCLHelper
protected static AspectManager manager
public static boolean optimize
public static boolean debugClasses
public static ClassLoaderValidation classLoaderValidator
public static boolean verbose
public static AspectNotificationHandler notificationHandler
public static boolean suppressTransformationErrors
public static boolean suppressReferenceErrors
Constructor Detail |
---|
public AspectManager()
Method Detail |
---|
public void addConstructionInterceptionMarker(String classname)
public void addFieldInterceptionMarker(String classname)
public void skipReference(String classname)
public boolean shouldSkipConstruction(String classname)
public boolean shouldSkipFieldAccess(String classname)
public void skipConstruction(String classname)
public void skipFieldAccess(String classname)
public boolean convertReference(String classname)
public static AspectManager getTopLevelAspectManager()
public static AspectManager instance()
public static AspectManager instance(ClassLoader loadingClassLoader)
public LinkedHashMap getPointcuts()
public LinkedHashMap getPointcutInfos()
public CFlowStack getCFlowStack(String name)
public void addCFlowStack(CFlowStack stack)
public void removeCFlowStack(String name)
public DynamicCFlow getDynamicCFlow(String name)
public void addDynamicCFlow(String name, DynamicCFlowDefinition cflow)
public void removeDynamicCFlow(String name)
public ClassMetaDataLoader findClassMetaDataLoader(String group)
public void addClassMetaDataLoader(String group, ClassMetaDataLoader loader)
public void removeClassMetaDataLoader(String group)
public Map getAdvisors()
public Advisor getAdvisor(String name)
public LinkedHashMap getBindings()
protected Map getSubDomainsPerClass()
public Advisor findAdvisor(Class clazz)
public ClassAdvisor getAdvisorIfAdvised(Class clazz)
public Advisor getAnyAdvisorIfAdvised(Class clazz)
public ClassAdvisor getAdvisor(Class clazz)
clazz
-
public void initialiseClassAdvisor(Class clazz, ClassAdvisor advisor)
public static Map getRegisteredCLs()
public void clearUnregisteredClassLoaders()
public boolean isAdvisorRegistered(Advisor advisor)
advisor
-
public javassist.ClassPool findClassPool(ClassLoader cl)
protected javassist.ClassPool getRegisteredClassPool(ClassLoader cl)
public javassist.ClassPool registerClassLoader(ClassLoader ucl)
protected void registerClass(Class clazz)
protected Map getScopedClassLoaderDomains()
public void unregisterClassLoader(ClassLoader cl)
unregisterClassLoader
in interface org.jboss.util.loading.Translator
public ArrayList getExclude()
public void setExclude(ArrayList exclude)
public ArrayList getInclude()
public void setInclude(ArrayList include)
public ArrayList getIgnore()
public ClassExpression[] getIgnoreExpressions()
public void setIgnore(ArrayList ignore)
public boolean ignoreClass(String classname)
public boolean includeClass(String classname)
public boolean excludeClass(String classname)
public static boolean getPrune()
public static void setPrune(boolean prune)
public static void setClassPoolFactory(javassist.scopedpool.ScopedClassPoolFactory factory)
public static javassist.scopedpool.ScopedClassPoolFactory getClassPoolFactory()
public boolean isNonAdvisableClassName(String classname)
public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws Exception
transform
in interface org.jboss.util.loading.Translator
Exception
public byte[] translate(String className, ClassLoader loader) throws Exception
className
- loader
-
Exception
public byte[] translate(String className, ClassLoader loader, byte[] classfileBuffer) throws Exception
className
- loader
-
Exception
public void addInterceptorFactory(String name, InterceptorFactory factory)
public void removeInterceptorFactory(String name)
public Map getInterceptorFactories()
public InterceptorFactory getInterceptorFactory(String name)
public void addPrecedence(PrecedenceDef precedenceDef)
public void removePrecedence(String name)
protected void forceResortPrecedenceDefs()
public LinkedHashMap getPrecedenceDefs()
public PrecedenceDefEntry[] getSortedPrecedenceDefEntries()
public void addAdviceStack(AdviceStack stack)
public void removeInterceptorStack(String name)
public AdviceStack getAdviceStack(String name)
protected boolean attachMetaData(ClassAdvisor advisor, javassist.CtClass clazz, boolean addAdvisor) throws Exception
Exception
protected void attachMetaData(ClassAdvisor advisor, Class clazz)
public ClassAdvisor getTempClassAdvisor(javassist.CtClass clazz) throws Exception
Exception
public Advisor getTempClassAdvisorIfNotExist(Class clazz)
public DomainDefinition getContainer(String name)
public void addContainer(DomainDefinition def)
public void removeContainer(String name)
public Pointcut getPointcut(String name)
public void removePointcut(String name)
public void addPointcut(Pointcut pointcut)
protected void updatePointcutStats(Pointcut pointcut)
pointcut
- protected void updateStats(PointcutStats stats)
public boolean isExecution()
public boolean isConstruction()
public boolean isCall()
public boolean isWithin()
public boolean isWithincode()
public boolean isGet()
public boolean isSet()
public void removeBinding(String name)
public void removeBindings(ArrayList binds)
public void addBinding(AdviceBinding binding)
public void updateAdvisorsForAddedBinding(AdviceBinding binding)
public void removeClassMetaData(String name)
public void addClassMetaData(ClassMetaDataBinding meta)
protected void updateAdvisorsForAddedClassMetaData(ClassMetaDataBinding meta)
protected void addAdvisorToClassMetaDataBinding(ClassMetaDataBinding meta, Class clazz, Advisor advisor, Class advisedClass)
public InterfaceIntroduction getInterfaceIntroduction(String name)
public void addInterfaceIntroduction(InterfaceIntroduction pointcut)
public void removeInterfaceIntroduction(String name)
public void addAnnotationIntroduction(AnnotationIntroduction pointcut)
public void removeAnnotationIntroduction(AnnotationIntroduction pointcut)
public List getAnnotationIntroductions()
public void addDeclare(DeclareDef declare)
public void removeDeclare(String name)
public Iterator getDeclares()
protected void applyInterfaceIntroductions(Advisor advisor, Class clazz)
protected void applyInterfaceIntroductions(ClassAdvisor advisor, javassist.CtClass clazz) throws Exception
Exception
public void addAnnotationOverride(AnnotationIntroduction pointcut)
public void updateAdvisorsForAddedAnnotationOverride(AnnotationIntroduction introduction)
public void removeAnnotationOverride(AnnotationIntroduction pointcut)
public List getAnnotationOverrides()
public Object getPerVMAspect(AspectDefinition def)
public Object getPerVMAspect(String def)
protected Object createPerVmAspect(String def, AspectDefinition adef, ClassLoader scopedClassLoader)
public void addAspectDefinition(AspectDefinition def)
public void removeAspectDefinition(String name)
protected AspectDefinition internalRemoveAspectDefintion(String name)
public Map getAspectDefinitions()
public AspectDefinition getAspectDefinition(String name)
public void addTypedef(Typedef def) throws Exception
Exception
public void removeTypedef(String name)
public Typedef getTypedef(String name)
public Map getInterfaceIntroductions()
public Map getTypedefs()
public Map getInterceptorStacks()
public Map getClassMetaDataLoaders()
public Map getCflowStacks()
public Map getDynamicCFlows()
public Map getPerVMAspects()
public Map getClassMetaData()
public DynamicAOPStrategy getDynamicAOPStrategy()
public void setDynamicAOPStrategy(DynamicAOPStrategy strategy)
strategy
- the new dynamic aop strategy.public void setBindings(LinkedHashMap bindings)
public void addSubDomainPerClass(Class clazz, Domain domain)
public void subscribeSubDomain(Domain domain)
copySubDomainsFromQueue(boolean)
public void unsubscribeSubDomain(Domain domain)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |