| Modifier and Type | Field and Description |
|---|---|
| private transient List | |
| private Set | |
| public static final String | |
| private CustomMungerFactory | |
| private transient List | |
| private transient List | |
| private boolean | |
| private boolean | |
| private transient List | |
| private Manifest | |
| private boolean | |
| private transient List | |
| public static final String | |
| private static Trace | |
| private transient List | |
| private final transient BcelWorld | |
| private final CrosscuttingMembersSet | |
| private ZipOutputStream |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| private List | Returns: the list of discovered aspectsthe directory in which to look for Aspect .class files directory)Look for .class files that represent aspects in the supplied directory - return the list of accumulated aspects. |
| private List | |
| public ReferenceType | |
| public UnwovenClassFile | |
| private void | |
| public List | |
| public List | |
| public ResolvedType | |
| public void | |
| public void | |
| public void | |
| public void | |
| public void | |
| private boolean | applyDeclareAtType(DeclareAnnotation decA, ResolvedType onType, boolean reportProblems)
Apply a declare @type - return true if we change the type |
| private boolean | applyDeclareParents(DeclareParents p, ResolvedType onType)
Apply a single declare parents - return true if we change the type |
| private void | |
| private boolean | |
| public void | |
| private void | |
| private void | |
| private List | Returns: a list of shadow mungers that might match with those that cannot (according to fast match rules) removedlist of all shadow mungers that might match list, ResolvedType the target type type)Perform a fast match of the specified list of shadowmungers against the specified type. |
| private Pointcut | |
| public UnwovenClassFile[] | |
| public BcelObjectType | getClassType(String forClass)
helper method - will return NULL if the underlying delegate is an EclipseSourceType and not a BcelObjectType |
| private String | |
| public Manifest | |
| public World | |
| private boolean | |
| private ResolvedType | Returns: a ResolvedType if the classbytes represent an aspect, otherwise nullthe classbytes that might represent an aspect classbytes, String the name of the class name, File directory which contained the class file dir)Determine if the supplied bytes represent an aspect, if they do then create a ResolvedType instance for the aspect and return it, otherwise return null |
| public boolean | |
| public boolean | |
| public void | |
| public void | |
| public void | |
| private void | |
| private void | |
| private void | |
| private void | |
| private void | removeSourceFileIfNoMoreTypeDeclarationsInside(AspectJElementHierarchy hierarchy, IProgramElement typeElement, IProgramElement sourceFileNode)
|
| private void | |
| public void | |
| public void | |
| public void | |
| public void | |
| private Pointcut | |
| public void | |
| private void | |
| private void | validateOrBranch(OrPointcut pc, Pointcut userPointcut, int numFormals, String[] names, Pointcut[] leftBindings, Pointcut[] rightBindings)
|
| private void | validateSingleBranch(Pointcut pc, Pointcut userPointcut, int numFormals, String[] names, Pointcut[] bindings)
|
| private void | validateSingleBranchRecursion(Pointcut pc, Pointcut userPointcut, boolean[] foundFormals, String[] names, Pointcut[] bindings)
|
| private boolean | verifyTargetIsOK(DeclareAnnotation decA, ResolvedType onType, AnnotationAJ annoX, boolean outputProblems)
Checks for an @target() on the annotation and if found ensures it allows the annotation to be attached to the target type that matched. |
| private void | walkUpRemovingEmptyTypesAndPossiblyEmptySourceFile(AspectJElementHierarchy hierarchy, String tname, IProgramElement typeThatHasChildRemoved)
|
| private void | warnOnUnmatchedAdvice()
In 1.5 mode and with XLint:adviceDidNotMatch enabled, put out messages for any mungers that did not match anything. |
| public Collection | |
| public Collection | |
| pack-priv LazyClassGen | |
| private LazyClassGen | |
| private void | |
| public void | |
| private void | weaveParentsFor(List<String> typesForWeaving, String typeToWeave, ResolvedType resolvedTypeToWeave)
'typeToWeave' is one from the 'typesForWeaving' list. |
| public void | weaveParentTypeMungers(ResolvedType onType)
Weaves new parents and annotations onto a type ("declare parents" and "declare @type") Algorithm: 1. |
| public LazyClassGen | |
| public void | |
| private void |
| addedClasses | back to summary |
|---|---|
| private transient List<UnwovenClassFile> addedClasses | |
| candidatesForRemoval | back to summary |
|---|---|
| private Set<IProgramElement> candidatesForRemoval | |
| CLOSURE_CLASS_PREFIX | back to summary |
|---|---|
| public static final String CLOSURE_CLASS_PREFIX | |
| customMungerFactory | back to summary |
|---|---|
| private CustomMungerFactory customMungerFactory | |
| declareParentsList | back to summary |
|---|---|
| private transient List<DeclareParents> declareParentsList | |
| deletedTypenames | back to summary |
|---|---|
| private transient List<String> deletedTypenames | |
| inReweavableMode | back to summary |
|---|---|
| private boolean inReweavableMode | |
| isBatchWeave | back to summary |
|---|---|
| private boolean isBatchWeave | |
| lateTypeMungerList | back to summary |
|---|---|
| private transient List<ConcreteTypeMunger> lateTypeMungerList | |
| manifest | back to summary |
|---|---|
| private Manifest manifest | |
| needToReweaveWorld | back to summary |
|---|---|
| private boolean needToReweaveWorld | |
| shadowMungerList | back to summary |
|---|---|
| private transient List<ShadowMunger> shadowMungerList | |
| SYNTHETIC_CLASS_POSTFIX | back to summary |
|---|---|
| public static final String SYNTHETIC_CLASS_POSTFIX | |
| trace | back to summary |
|---|---|
| private static Trace trace | |
| typeMungerList | back to summary |
|---|---|
| private transient List<ConcreteTypeMunger> typeMungerList | |
| world | back to summary |
|---|---|
| private final transient BcelWorld world | |
| xcutSet | back to summary |
|---|---|
| private final CrosscuttingMembersSet xcutSet | |
| zipOutputStream | back to summary |
|---|---|
| private ZipOutputStream zipOutputStream | |
| BcelWeaver | back to summary |
|---|---|
| public BcelWeaver(BcelWorld world) | |
| addAspectsFromDirectory | back to summary |
|---|---|
| private List Look for .class files that represent aspects in the supplied directory - return the list of accumulated aspects.
| |
| addAspectsFromJarFile | back to summary |
|---|---|
| private List | |
| addClassFile | back to summary |
|---|---|
| public ReferenceType addClassFile(UnwovenClassFile classFile, boolean fromInpath) Should be addOrReplace | |
| addClassFile | back to summary |
|---|---|
| public UnwovenClassFile addClassFile(File classFile, File inPathDir, File outDir) throws IOException | |
| addCustomMungers | back to summary |
|---|---|
| private void addCustomMungers() | |
| addDirectoryContents | back to summary |
|---|---|
| public List Add any .class files in the directory to the outdir. Anything other than .class files in the directory (or its subdirectories) are considered resources and are also copied. | |
| addJarFile | back to summary |
|---|---|
| public List Adds all class files in the jar | |
| addLibraryAspect | back to summary |
|---|---|
| public ResolvedType addLibraryAspect(String aspectName) Add the given aspect to the weaver. The type is resolved to support DOT for static inner classes as well as DOLLAR
| |
| addLibraryJarFile | back to summary |
|---|---|
public void addLibraryJarFile(File inFile) throws IOException
| |
| addManifest | back to summary |
|---|---|
| public void addManifest(Manifest newManifest) | |
| addNormalTypeMungers | back to summary |
|---|---|
| public void addNormalTypeMungers(String typeName) | |
| addParentTypeMungers | back to summary |
|---|---|
| public void addParentTypeMungers(String typeName) | |
| allWeavingComplete | back to summary |
|---|---|
| public void allWeavingComplete() | |
| applyDeclareAtType | back to summary |
|---|---|
| private boolean applyDeclareAtType(DeclareAnnotation decA, ResolvedType onType, boolean reportProblems) Apply a declare @type - return true if we change the type | |
| applyDeclareParents | back to summary |
|---|---|
| private boolean applyDeclareParents(DeclareParents p, ResolvedType onType) Apply a single declare parents - return true if we change the type | |
| checkDeclareTypeErrorOrWarning | back to summary |
|---|---|
| private void checkDeclareTypeErrorOrWarning(BcelWorld world2, BcelObjectType classType) | |
| couldEverMatchSameJoinPoints | back to summary |
|---|---|
| private boolean couldEverMatchSameJoinPoints(Pointcut left, Pointcut right) | |
| deleteClassFile | back to summary |
|---|---|
| public void deleteClassFile(String typename) | |
| dump | back to summary |
|---|---|
| private void dump(UnwovenClassFile classFile, LazyClassGen clazz) throws IOException | |
| dumpUnchanged | back to summary |
|---|---|
| private void dumpUnchanged(UnwovenClassFile classFile) throws IOException | |
| fastMatch | back to summary |
|---|---|
| private List Perform a fast match of the specified list of shadowmungers against the specified type. A subset of those that might match is returned.
| |
| findFirstPointcutIn | back to summary |
|---|---|
| private Pointcut findFirstPointcutIn(Pointcut toSearch, Class<?> toLookFor) | |
| getClassFilesFor | back to summary |
|---|---|
| public UnwovenClassFile[] getClassFilesFor(LazyClassGen clazz) | |
| getClassType | back to summary |
|---|---|
| public BcelObjectType getClassType(String forClass) helper method - will return NULL if the underlying delegate is an EclipseSourceType and not a BcelObjectType | |
| getEntryName | back to summary |
|---|---|
| private String getEntryName(String className) | |
| getManifest | back to summary |
|---|---|
| public Manifest getManifest(boolean shouldCreate) | |
| getWorld | back to summary |
|---|---|
| public World getWorld() | |
| hasInnerType | back to summary |
|---|---|
| private boolean hasInnerType(IProgramElement typeNode) | |
| isAspect | back to summary |
|---|---|
| private ResolvedType isAspect(byte[] classbytes, String name, File dir) throws IOException Determine if the supplied bytes represent an aspect, if they do then create a ResolvedType instance for the aspect and return it, otherwise return null
| |
| isReweavable | back to summary |
|---|---|
| public boolean isReweavable() | |
| needToReweaveWorld | back to summary |
|---|---|
| public boolean needToReweaveWorld() | |
| prepareForWeave | back to summary |
|---|---|
| public void prepareForWeave() | |
| prepareToProcessReweavableState | back to summary |
|---|---|
| public void prepareToProcessReweavableState() | |
| processReweavableStateIfPresent | back to summary |
|---|---|
| public void processReweavableStateIfPresent(String className, BcelObjectType classType) | |
| raiseAmbiguityInDisjunctionError | back to summary |
|---|---|
| private void raiseAmbiguityInDisjunctionError(Pointcut userPointcut, List<String> names) | |
| raiseAmbiguousBindingError | back to summary |
|---|---|
| private void raiseAmbiguousBindingError(String name, Pointcut pointcut) | |
| raiseNegationBindingError | back to summary |
|---|---|
| private void raiseNegationBindingError(Pointcut userPointcut) | |
| raiseUnboundFormalError | back to summary |
|---|---|
| private void raiseUnboundFormalError(String name, Pointcut userPointcut) | |
| removeSourceFileIfNoMoreTypeDeclarationsInside | back to summary |
|---|---|
| private void removeSourceFileIfNoMoreTypeDeclarationsInside(AspectJElementHierarchy hierarchy, IProgramElement typeElement, IProgramElement sourceFileNode) | |
| rewritePointcuts | back to summary |
|---|---|
| private void rewritePointcuts(List<ShadowMunger> shadowMungers) | |
| setCustomMungerFactory | back to summary |
|---|---|
| public void setCustomMungerFactory(CustomMungerFactory factory) | |
| setIsBatchWeave | back to summary |
|---|---|
| public void setIsBatchWeave(boolean b) | |
| setReweavableMode | back to summary |
|---|---|
| public void setReweavableMode(boolean xNotReweavable) | |
| setShadowMungers | back to summary |
|---|---|
| public void setShadowMungers(List<ShadowMunger> shadowMungers) | |
| shareEntriesFromMap | back to summary |
|---|---|
| private Pointcut shareEntriesFromMap(Pointcut p, Map<Pointcut, Pointcut> pcMap) | |
| tidyUp | back to summary |
|---|---|
| public void tidyUp() | |
| validateBindings | back to summary |
|---|---|
| private void validateBindings(Pointcut dnfPointcut, Pointcut userPointcut, int numFormals, String[] names) | |
| validateOrBranch | back to summary |
|---|---|
| private void validateOrBranch(OrPointcut pc, Pointcut userPointcut, int numFormals, String[] names, Pointcut[] leftBindings, Pointcut[] rightBindings) | |
| validateSingleBranch | back to summary |
|---|---|
| private void validateSingleBranch(Pointcut pc, Pointcut userPointcut, int numFormals, String[] names, Pointcut[] bindings) | |
| validateSingleBranchRecursion | back to summary |
|---|---|
| private void validateSingleBranchRecursion(Pointcut pc, Pointcut userPointcut, boolean[] foundFormals, String[] names, Pointcut[] bindings) | |
| verifyTargetIsOK | back to summary |
|---|---|
| private boolean verifyTargetIsOK(DeclareAnnotation decA, ResolvedType onType, AnnotationAJ annoX, boolean outputProblems) Checks for an @target() on the annotation and if found ensures it allows the annotation to be attached to the target type that matched. | |
| walkUpRemovingEmptyTypesAndPossiblyEmptySourceFile | back to summary |
|---|---|
| private void walkUpRemovingEmptyTypesAndPossiblyEmptySourceFile(AspectJElementHierarchy hierarchy, String tname, IProgramElement typeThatHasChildRemoved) | |
| warnOnUnmatchedAdvice | back to summary |
|---|---|
| private void warnOnUnmatchedAdvice() In 1.5 mode and with XLint:adviceDidNotMatch enabled, put out messages for any mungers that did not match anything. | |
| weave | back to summary |
|---|---|
| public Collection | |
| weave | back to summary |
|---|---|
| public Collection | |
| weave | back to summary |
|---|---|
| pack-priv LazyClassGen weave(UnwovenClassFile classFile, BcelObjectType classType) throws IOException | |
| weave | back to summary |
|---|---|
| private LazyClassGen weave(UnwovenClassFile classFile, BcelObjectType classType, boolean dump) throws IOException | |
| weaveAndNotify | back to summary |
|---|---|
| private void weaveAndNotify(UnwovenClassFile classFile, BcelObjectType classType, IWeaveRequestor requestor) throws IOException | |
| weaveNormalTypeMungers | back to summary |
|---|---|
| public void weaveNormalTypeMungers(ResolvedType onType) | |
| weaveParentsFor | back to summary |
|---|---|
| private void weaveParentsFor(List<String> typesForWeaving, String typeToWeave, ResolvedType resolvedTypeToWeave) 'typeToWeave' is one from the 'typesForWeaving' list. This routine ensures we process supertypes (classes/interfaces) of 'typeToWeave' that are in the 'typesForWeaving' list before 'typeToWeave' itself. 'typesToWeave' is then removed from the 'typesForWeaving' list. Note Future gotcha in here ... when supplying partial hierarchies, this algorithm may break down. If you have a hierarchy A>B>C and only give A and C to the weaver, it may choose to weave them in either order - but you'll probably have other problems if you are supplying partial hierarchies like that ! | |
| weaveParentTypeMungers | back to summary |
|---|---|
| public void weaveParentTypeMungers(ResolvedType onType) Weaves new parents and annotations onto a type ("declare parents" and "declare @type") Algorithm: 1. First pass, do parents then do annotations. During this pass record: - any parent mungers that don't match but have a non-wild annotation type pattern - any annotation mungers that don't match 2. Multiple subsequent passes which go over the munger lists constructed in the first pass, repeatedly applying them until nothing changes. FIXME asc confirm that algorithm is optimal ?? | |
| weaveWithoutDump | back to summary |
|---|---|
| public LazyClassGen weaveWithoutDump(UnwovenClassFile classFile, BcelObjectType classType) throws IOException | |
| write | back to summary |
|---|---|
| public void write(CompressingDataOutputStream dos) throws IOException | |
| writeZipEntry | back to summary |
|---|---|
| private void writeZipEntry(String name, byte[] bytes) throws IOException | |