summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--weaver/src/org/aspectj/weaver/CustomMungerFactory.java43
1 files changed, 40 insertions, 3 deletions
diff --git a/weaver/src/org/aspectj/weaver/CustomMungerFactory.java b/weaver/src/org/aspectj/weaver/CustomMungerFactory.java
index 67f0dfc1a..3ff37a423 100644
--- a/weaver/src/org/aspectj/weaver/CustomMungerFactory.java
+++ b/weaver/src/org/aspectj/weaver/CustomMungerFactory.java
@@ -14,8 +14,45 @@ package org.aspectj.weaver;
import java.util.Collection;
+/**
+ * <p>
+ * This interface is introduced to support tools like PointcutDoctor.
+ * </p>
+ * <p>
+ * A CustomMungerFactory is used to create ShadowMungers and/or
+ * ConcreteTypeMungers so that an extender can extract extra information during
+ * the weaving process.
+ * </p>
+ * <p>
+ * A CustomMungerFactory is assigned to a weaver through its AjCompiler in
+ * extenders' code, and gets invoked by the weaver right before the weaving
+ * starts. The custom shadow/type mungers being created will be added into the
+ * shadow/type munger list in the weaver and participate the weaving process.
+ * For example, the match method of each custom shadow munger will be called
+ * against each shadow.
+ * </p>
+ * @author lintonye
+ *
+ */
public interface CustomMungerFactory {
- public Collection/*ShadowMunger*/ createCustomShadowMungers(ResolvedType aspectType);
- public Collection/*ConcreteTypeMunger*/ createCustomTypeMungers(ResolvedType aspectType);
-// public Collection<Declare> createCustomDeclares(ResolvedType aspectType);
+
+ /**
+ * @param aspectType
+ * @return a Collection&lt;ShadowMunger&gt; of custom shadow mungers for the
+ * given aspect
+ */
+ public Collection/* ShadowMunger */createCustomShadowMungers(
+ ResolvedType aspectType);
+
+ /**
+ * @param aspectType
+ * @return a Collection&lt;ConcreteTypeMunger&gt; of custom type mungers for the
+ * given aspect
+ */
+ public Collection/* ConcreteTypeMunger */createCustomTypeMungers(
+ ResolvedType aspectType);
+
+ public Collection/* ShadowMunger */getAllCreatedCustomShadowMungers();
+
+ public Collection/* ConcreteTypeMunger */getAllCreatedCustomTypeMungers();
}