You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mb...@apache.org on 2013/04/21 01:12:29 UTC

svn commit: r1470250 - in /commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model: AnnotatedElements.java ScanResult.java

Author: mbenson
Date: Sat Apr 20 23:12:28 2013
New Revision: 1470250

URL: http://svn.apache.org/r1470250
Log:
javadoc, fmt

Modified:
    commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java
    commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java

Modified: commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java
URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java?rev=1470250&r1=1470249&r2=1470250&view=diff
==============================================================================
--- commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java (original)
+++ commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java Sat Apr 20 23:12:28 2013
@@ -19,8 +19,22 @@
 package org.apache.commons.weaver.model;
 
 import java.lang.annotation.Annotation;
+import java.lang.annotation.RetentionPolicy;
 import java.lang.reflect.AnnotatedElement;
 
+/**
+ * Interface defining a means of iterating over a particular type of {@link AnnotatedElement} as well as filtering by
+ * annotation type (including annotations with {@link RetentionPolicy#CLASS} retention in addition to those with
+ * {@link RetentionPolicy#RUNTIME} retention.
+ * 
+ * @param <T>
+ */
 public interface AnnotatedElements<T extends AnnotatedElement> extends Iterable<T> {
+    /**
+     * Filter by annotation type.
+     * 
+     * @param annotationType
+     * @return {@link AnnotatedElements}, narrowed
+     */
     AnnotatedElements<T> with(Class<? extends Annotation> annotationType);
 }

Modified: commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java
URL: http://svn.apache.org/viewvc/commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java?rev=1470250&r1=1470249&r2=1470250&view=diff
==============================================================================
--- commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java (original)
+++ commons/sandbox/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java Sat Apr 20 23:12:28 2013
@@ -29,12 +29,30 @@ import java.util.NoSuchElementException;
 import java.util.concurrent.ConcurrentNavigableMap;
 import java.util.concurrent.ConcurrentSkipListMap;
 
+import org.apache.commons.weaver.WeaveProcessor;
+import org.apache.commons.weaver.spi.Weaver;
+
 /**
- * Encapsulates the result of scanning based on a {@link ScanRequest}.
+ * Encapsulates the result of scanning based on a {@link ScanRequest}. The scan results are available in a structure
+ * corresponding to the Java class hierarchy; i.e.:
+ * 
+ * <pre>
+ *   package
+ *   |_class
+ *     |_field
+ *     |_method
+ *     | |_method parameter
+ *     |_constructor
+ *       |_constructor parameter
+ * </pre>
+ * 
+ * The tree of results can be iterated in this manner using {@link #getPackages()}. However, if a given {@link Weaver}
+ * is known not to handle packages but some other element, convenience methods are provided here giving direct access to
+ * the various elements that may have been discovered.
  */
 public class ScanResult {
     private static abstract class Projection<PARENT, CHILD extends AnnotatedElement> implements
-        AnnotatedElements<CHILD> {
+            AnnotatedElements<CHILD> {
         private final Iterable<PARENT> parents;
 
         Projection(Iterable<PARENT> parents) {
@@ -149,9 +167,14 @@ public class ScanResult {
 
     }
 
-    private final ConcurrentNavigableMap<String, WeavablePackage> packages =
-        new ConcurrentSkipListMap<String, WeavablePackage>();
+    private final ConcurrentNavigableMap<String, WeavablePackage> packages = new ConcurrentSkipListMap<String, WeavablePackage>();
 
+    /**
+     * Public for use by {@link WeaveProcessor}.
+     * 
+     * @param pkg
+     * @return {@link WeavablePackage}
+     */
     public WeavablePackage getWeavable(Package pkg) {
         final String key = pkg.getName();
         if (packages.containsKey(key)) {
@@ -162,18 +185,42 @@ public class ScanResult {
         return faster == null ? result : faster;
     }
 
+    /**
+     * Public for use by {@link WeaveProcessor}.
+     * 
+     * @param cls
+     * @return {@link WeavableClass}
+     */
     public <T> WeavableClass<T> getWeavable(Class<T> cls) {
         return getWeavable(cls.getPackage()).getWeavable(cls);
     }
 
+    /**
+     * Public for use by {@link WeaveProcessor}.
+     * 
+     * @param fld
+     * @return {@link WeavableField}
+     */
     public WeavableField<?> getWeavable(Field fld) {
         return getWeavable(fld.getDeclaringClass()).getWeavable(fld);
     }
 
+    /**
+     * Public for use by {@link WeaveProcessor}.
+     * 
+     * @param mt
+     * @return {@link WeavableMethod}
+     */
     public WeavableMethod<?> getWeavable(Method mt) {
         return getWeavable(mt.getDeclaringClass()).getWeavable(mt);
     }
 
+    /**
+     * Public for use by {@link WeaveProcessor}.
+     * 
+     * @param ctor
+     * @return {@link WeavableConstructor}
+     */
     public <T> WeavableConstructor<T> getWeavable(Constructor<T> ctor) {
         return getWeavable(ctor.getDeclaringClass()).getWeavable(ctor);
     }