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 2014/01/10 21:14:42 UTC

svn commit: r1557247 [2/2] - in /commons/proper/weaver/trunk: ./ ant/lib/src/main/java/org/apache/commons/weaver/ant/ build-tools/ build-tools/src/main/resources/org/apache/commons/proxy2/ build-tools/src/main/resources/org/apache/commons/weaver/ examp...

Modified: commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java (original)
+++ commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Policy.java Fri Jan 10 20:14:41 2014
@@ -50,7 +50,6 @@ public enum Policy {
 
     /**
      * Get the {@link Policy} value that should be used as a default.
-     * 
      * @return {@link Policy#DYNAMIC}
      */
     public static Policy defaultValue() {
@@ -59,8 +58,7 @@ public enum Policy {
 
     /**
      * Parse from a {@link String} returning {@link #defaultValue()} for blank/null input.
-     * 
-     * @param s
+     * @param s to parse
      * @return {@link Policy}
      */
     public static Policy parse(String s) {
@@ -70,6 +68,10 @@ public enum Policy {
         return valueOf(s.trim().toUpperCase(Locale.US));
     }
 
+    /**
+     * Learn whether this is a conditional {@link Policy}.
+     * @return {@code this == ON_INIT || this == DYNAMIC}
+     */
     public boolean isConditional() {
         return this == ON_INIT || this == DYNAMIC;
     }

Modified: commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilized.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilized.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilized.java (original)
+++ commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilized.java Fri Jan 10 20:14:41 2014
@@ -26,5 +26,8 @@ import java.lang.annotation.Target;
  */
 @Target(ElementType.TYPE)
 public @interface Privilized {
+    /**
+     * Name of {@link Policy} with which privilized weaving was performed.
+     */
     String value();
 }
\ No newline at end of file

Modified: commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java (original)
+++ commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java Fri Jan 10 20:14:41 2014
@@ -18,7 +18,6 @@
  */
 package org.apache.commons.weaver.privilizer;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -42,7 +41,13 @@ import org.objectweb.asm.Type;
 import org.objectweb.asm.util.CheckClassAdapter;
 import org.objectweb.asm.util.TraceClassVisitor;
 
+/**
+ * Coordinates privilization activities.
+ */
 public class Privilizer {
+    /**
+     * An ASM {@link ClassVisitor} for privilization.
+     */
     abstract class PrivilizerClassVisitor extends ClassVisitor {
         String className;
         Type target;
@@ -60,13 +65,17 @@ public class Privilizer {
         }
 
         @Override
-        public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
+        public void visit(int version, int access, String name, String signature, String superName,
+            String[] interfaces) {
             super.visit(version, access, name, signature, superName, interfaces);
             className = name;
             target = Type.getObjectType(name);
         }
     }
 
+    /**
+     * Convenient {@link ClassVisitor} layer to write classfiles into the {@link WeaveEnvironment}.
+     */
     class WriteClass extends PrivilizerClassVisitor {
         WriteClass(ClassWriter cw) {
             super(cw);
@@ -81,9 +90,8 @@ public class Privilizer {
                 verify(className, bytecode);
             }
 
-            final String resourceName = className.replace('.', File.separatorChar) + ".class";
-            final DataSource classfile = env.getResource(resourceName);
-            env.debug("Writing class %s to resource %s", className, resourceName);
+            final DataSource classfile = env.getClassfile(className);
+            env.debug("Writing class %s to resource %s", className, classfile.getName());
             OutputStream outputStream = null;
             try {
                 outputStream = classfile.getOutputStream();
@@ -96,12 +104,27 @@ public class Privilizer {
         }
     }
 
+    /**
+     * Privilizer weaver configuration prefix.
+     */
     public static final String CONFIG_WEAVER = "privilizer.";
 
+    /**
+     * {@link AccessLevel} configuration key.
+     * @see AccessLevel#parse(String)
+     */
     public static final String CONFIG_ACCESS_LEVEL = CONFIG_WEAVER + "accessLevel";
 
+    /**
+     * Weave {@link Policy} configuration key.
+     * @see Policy#parse(String)
+     */
     public static final String CONFIG_POLICY = CONFIG_WEAVER + "policy";
 
+    /**
+     * Verification configuration key.
+     * @see BooleanUtils#toBoolean(String)
+     */
     public static final String CONFIG_VERIFY = CONFIG_WEAVER + "verify";
 
     private static final String GENERATE_NAME = "__privileged_%s";
@@ -113,6 +136,10 @@ public class Privilizer {
     final Policy policy;
     final boolean verify;
 
+    /**
+     * Create a new {@link Privilizer}.
+     * @param env to use
+     */
     public Privilizer(WeaveEnvironment env) {
         super();
         this.env = env;

Modified: commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerWeaver.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerWeaver.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerWeaver.java (original)
+++ commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerWeaver.java Fri Jan 10 20:14:41 2014
@@ -28,12 +28,11 @@ import org.apache.commons.weaver.model.S
 import org.apache.commons.weaver.model.WeavableClass;
 import org.apache.commons.weaver.model.WeaveEnvironment;
 import org.apache.commons.weaver.model.WeaveInterest;
-import org.apache.commons.weaver.privilizer.Policy;
-import org.apache.commons.weaver.privilizer.Privileged;
-import org.apache.commons.weaver.privilizer.Privilized;
-import org.apache.commons.weaver.privilizer.Privilizing;
 import org.apache.commons.weaver.spi.Weaver;
 
+/**
+ * Privilizer {@link Weaver} implementation.
+ */
 public class PrivilizerWeaver implements Weaver {
     @Override
     public boolean process(WeaveEnvironment weaveEnvironment, Scanner scanner) {
@@ -65,10 +64,8 @@ public class PrivilizerWeaver implements
 
     /**
      * Validate a weaving request for a given target type.
-     * 
-     * @param privilizer
-     * @param type
-     * 
+     * @param privilizer whose configuration to consult
+     * @param type target
      * @return whether weaving should proceed
      * @throws IllegalStateException if class has already been woven with some other policy
      */

Modified: commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java (original)
+++ commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java Fri Jan 10 20:14:41 2014
@@ -38,12 +38,20 @@ import org.objectweb.asm.commons.Generat
 import org.objectweb.asm.commons.Method;
 import org.objectweb.asm.commons.StaticInitMerger;
 
+/**
+ * ASM {@link ClassVisitor} to privilize {@link Privileged} methods.
+ */
 class PrivilizingVisitor extends Privilizer.PrivilizerClassVisitor {
     final Map<Method, String> privilegedMethods = new LinkedHashMap<Method, String>();
     boolean annotated;
     final Policy policy;
     final AccessLevel accessLevel;
 
+    /**
+     * Create a new {@link PrivilizingVisitor}.
+     * @param privilizer owner
+     * @param cv next
+     */
     PrivilizingVisitor(Privilizer privilizer, ClassVisitor cv) {
         privilizer.super();
         this.policy = privilizer.policy;
@@ -212,9 +220,9 @@ class PrivilizingVisitor extends Privili
     }
 
     /**
-     * Generates the instructions to push onto the stack whether there is a security manager available
-     * 
-     * @param mg
+     * Generates the instructions to push onto the stack whether there is a
+     * security manager available.
+     * @param mg to control
      */
     private static void checkSecurityManager(GeneratorAdapter mg) {
         final Label setFalse = new Label();

Added: commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/package-info.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/package-info.java?rev=1557247&view=auto
==============================================================================
--- commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/package-info.java (added)
+++ commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/package-info.java Fri Jan 10 20:14:41 2014
@@ -0,0 +1,4 @@
+/**
+ * Defines the Privilizer Weaver.
+ */
+package org.apache.commons.weaver.privilizer;
\ No newline at end of file

Propchange: commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/package-info.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: commons/proper/weaver/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/pom.xml?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/pom.xml (original)
+++ commons/proper/weaver/trunk/pom.xml Fri Jan 10 20:14:41 2014
@@ -56,6 +56,8 @@ under the License.
     <asm.version>4.1</asm.version>
     <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/${commons.site.path}</commons.scmPubUrl>
     <commons.project-info.version>2.6</commons.project-info.version>
+
+    <checkstyle.skip>false</checkstyle.skip>
   </properties>
 
   <developers>
@@ -203,6 +205,18 @@ under the License.
           <content>${project.build.directory}/staging</content>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <version>2.11</version>
+        <dependencies>
+          <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>commons-weaver-build-tools</artifactId>
+            <version>${project.version}</version>
+          </dependency>
+        </dependencies>
+      </plugin>
     </plugins>
   </build>
 
@@ -219,10 +233,21 @@ under the License.
           <aggregate>true</aggregate>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <version>2.11</version>
+        <configuration>
+          <configLocation>org/apache/commons/weaver/checkstyle.xml</configLocation>
+          <headerLocation>org/apache/commons/weaver/license-header.txt</headerLocation>
+          <skip>${checkstyle.skip}</skip>
+        </configuration>
+      </plugin>
     </plugins>
   </reporting>
 
   <modules>
+    <module>build-tools</module>
     <module>processor</module>
     <module>modules</module>
     <module>maven-plugin</module>

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/CleanProcessor.java Fri Jan 10 20:14:41 2014
@@ -38,8 +38,11 @@ import org.apache.xbean.finder.archive.F
  */
 public class CleanProcessor {
 
-    /** List of picked up cleaner plugins */
+    /**
+     * List of picked up cleaner plugins.
+     */
     private static final List<Cleaner> CLEANERS;
+
     static {
         List<Cleaner> cleaners = new ArrayList<Cleaner>();
         for (Cleaner c : ServiceLoader.load(Cleaner.class)) {
@@ -65,7 +68,7 @@ public class CleanProcessor {
 
     /**
      * Create a new {@link CleanProcessor} instance.
-     * 
+     *
      * @param classpath not {@code null}
      * @param target not {@code null}
      * @param configuration not {@code null}
@@ -86,7 +89,8 @@ public class CleanProcessor {
         final Finder finder = new Finder(new FileArchive(classLoader, target));
         for (Cleaner cleaner : CLEANERS) {
             final WeaveEnvironment env =
-                new LocalWeaveEnvironment(target, classLoader, configuration, Logger.getLogger(cleaner.getClass().getName()));
+                new LocalWeaveEnvironment(target, classLoader, configuration, Logger.getLogger(cleaner.getClass()
+                    .getName()));
             cleaner.clean(env, finder);
         }
     }

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java Fri Jan 10 20:14:41 2014
@@ -72,30 +72,31 @@ class Finder extends AnnotationFinder im
 
         @Override
         protected void storeValue(String name, Object value) {
-            Validate.notNull(value, "null annotation element");
-            if (value.getClass().isArray()) {
+            Object toStore = value;
+            Validate.notNull(toStore, "null annotation element");
+            if (toStore.getClass().isArray()) {
                 final Class<?> requiredType;
                 try {
                     requiredType = annotationType.getDeclaredMethod(name).getReturnType();
                 } catch (Exception e) {
                     throw new RuntimeException(e);
                 }
-                if (!requiredType.isInstance(value)) {
-                    final int len = Array.getLength(value);
+                if (!requiredType.isInstance(toStore)) {
+                    final int len = Array.getLength(toStore);
                     final Object typedArray = Array.newInstance(requiredType.getComponentType(), len);
                     for (int i = 0; i < len; i++) {
-                        Object o = Array.get(value, i);
+                        Object o = Array.get(toStore, i);
                         if (o instanceof Type) {
                             o = toClass((Type) o);
                         }
                         Array.set(typedArray, i, o);
                     }
-                    value = typedArray;
+                    toStore = typedArray;
                 }
-            } else if (value instanceof Type) {
-                value = toClass((Type) value);
+            } else if (toStore instanceof Type) {
+                toStore = toClass((Type) toStore);
             }
-            elements.put(name, value);
+            elements.put(name, toStore);
         }
     }
 
@@ -104,6 +105,11 @@ class Finder extends AnnotationFinder im
             super(Opcodes.ASM4, wrapped);
         }
 
+        /**
+         * Template method for storing an annotation value.
+         * @param name
+         * @param value
+         */
         protected abstract void storeValue(String name, Object value);
 
         @Override
@@ -185,6 +191,10 @@ class Finder extends AnnotationFinder im
         }
     }
 
+    /**
+     * Specialized {@link ClassVisitor} to inflate annotations for the info
+     * objects built by a wrapped {@link InfoBuildingVisitor}.
+     */
     public class Visitor extends ClassVisitor {
         private final InfoBuildingVisitor wrapped;
 
@@ -243,6 +253,7 @@ class Finder extends AnnotationFinder im
                     }
                 }
             } catch (ClassNotFoundException e) {
+                //ignore
             }
             if (testMethodInfo == null) {
                 return toWrap;
@@ -272,7 +283,7 @@ class Finder extends AnnotationFinder im
                                 break;
                             }
                         } catch (ClassNotFoundException e) {
-
+                            //ignore
                         }
                     }
                     return parameterInfo == null ? toWrap : new TopLevelAnnotationInflater(desc, toWrap, parameterInfo);
@@ -362,7 +373,7 @@ class Finder extends AnnotationFinder im
     /**
      * Helper class for finding elements with annotations (including those with classfile-level retention).
      */
-    public class WithAnnotations {
+    public final class WithAnnotations {
         private WithAnnotations() {
         }
 
@@ -379,6 +390,7 @@ class Finder extends AnnotationFinder im
                             result.add(annotated);
                         }
                     } catch (ClassNotFoundException e) {
+                        //ignore
                     }
                 }
             }
@@ -455,10 +467,11 @@ class Finder extends AnnotationFinder im
 
         }
 
-        public List<Annotated<Parameter<Method>>> findAnnotatedMethodParameters(Class<? extends Annotation> annotation) {
-            Finder.this.findAnnotatedMethodParameters(annotation);
+        public List<Annotated<Parameter<Method>>> findAnnotatedMethodParameters(
+            Class<? extends Annotation> annotationType) {
+            Finder.this.findAnnotatedMethodParameters(annotationType);
             final List<Annotated<Parameter<Method>>> result = new ArrayList<Annotated<Parameter<Method>>>();
-            for (Info info : getAnnotationInfos(annotation.getName())) {
+            for (Info info : getAnnotationInfos(annotationType.getName())) {
                 if (info instanceof ParameterInfo) {
                     ParameterInfo parameterInfo = (ParameterInfo) info;
                     if ("<init>".equals(parameterInfo.getDeclaringMethod().getName())) {
@@ -474,7 +487,7 @@ class Finder extends AnnotationFinder im
                     }
                     IncludesClassfile<Parameter<Method>> annotated =
                         new IncludesClassfile<Parameter<Method>>(parameter, classfileAnnotationsFor(parameterInfo));
-                    if (annotated.isAnnotationPresent(annotation)) {
+                    if (annotated.isAnnotationPresent(annotationType)) {
                         result.add(annotated);
                     }
                 }
@@ -590,7 +603,6 @@ class Finder extends AnnotationFinder im
 
     /**
      * Create a new {@link Finder} instance.
-     * 
      * @param archive
      */
     public Finder(Archive archive) {
@@ -602,10 +614,17 @@ class Finder extends AnnotationFinder im
         enableFindSubclasses();
     }
 
+    /**
+     * Fluent "finder with annotations".
+     * @return {@link WithAnnotations}
+     */
     public WithAnnotations withAnnotations() {
         return withAnnotations;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     protected void readClassDef(InputStream in) throws IOException {
         try {
             ClassReader classReader = new ClassReader(in);
@@ -615,71 +634,79 @@ class Finder extends AnnotationFinder im
         }
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public AnnotationFinder select(Class<?>... arg0) {
         throw new UnsupportedOperationException();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public AnnotationFinder select(Iterable<String> clazz) {
         throw new UnsupportedOperationException();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public AnnotationFinder select(String... clazz) {
         throw new UnsupportedOperationException();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public ScanResult scan(ScanRequest request) {
         final ScanResult result = new ScanResult();
 
         for (WeaveInterest interest : request.getInterests()) {
             switch (interest.target) {
-                case PACKAGE:
-                    for (Annotated<Package> pkg : this.withAnnotations().findAnnotatedPackages(interest.annotationType)) {
-                        result.getWeavable(pkg.get()).addAnnotations(pkg.getAnnotations());
-                    }
-                case TYPE:
-                    for (Annotated<Class<?>> type : this.withAnnotations()
-                        .findAnnotatedClasses(interest.annotationType)) {
-                        result.getWeavable(type.get()).addAnnotations(type.getAnnotations());
-                    }
-                    break;
-                case METHOD:
-                    for (Annotated<Method> method : this.withAnnotations()
-                        .findAnnotatedMethods(interest.annotationType)) {
-                        result.getWeavable(method.get()).addAnnotations(method.getAnnotations());
-                    }
-                    break;
-                case CONSTRUCTOR:
-                    for (Annotated<Constructor<?>> cs : this.withAnnotations().findAnnotatedConstructors(
-                        interest.annotationType)) {
-                        result.getWeavable(cs.get()).addAnnotations(cs.getAnnotations());
-                    }
-                    break;
-                case FIELD:
-                    for (Annotated<Field> fld : this.withAnnotations().findAnnotatedFields(interest.annotationType)) {
-                        result.getWeavable(fld.get()).addAnnotations(fld.getAnnotations());
-                    }
-                    break;
-                case PARAMETER:
-                    for (Annotated<Parameter<Method>> parameter : this.withAnnotations().findAnnotatedMethodParameters(
-                        interest.annotationType)) {
-                        result.getWeavable(parameter.get().getDeclaringExecutable())
-                            .getWeavableParameter(parameter.get().getIndex())
-                            .addAnnotations(parameter.getAnnotations());
-                    }
-                    for (Annotated<Parameter<Constructor<?>>> parameter : this.withAnnotations()
-                        .findAnnotatedConstructorParameters(interest.annotationType)) {
-                        result.getWeavable(parameter.get().getDeclaringExecutable())
-                            .getWeavableParameter(parameter.get().getIndex())
-                            .addAnnotations(parameter.getAnnotations());
-                    }
-                    break;
-                default:
-                    // should we log something?
-                    break;
+            case PACKAGE:
+                for (Annotated<Package> pkg : this.withAnnotations().findAnnotatedPackages(interest.annotationType)) {
+                    result.getWeavable(pkg.get()).addAnnotations(pkg.getAnnotations());
+                }
+            case TYPE:
+                for (Annotated<Class<?>> type : this.withAnnotations().findAnnotatedClasses(interest.annotationType)) {
+                    result.getWeavable(type.get()).addAnnotations(type.getAnnotations());
+                }
+                break;
+            case METHOD:
+                for (Annotated<Method> method : this.withAnnotations().findAnnotatedMethods(interest.annotationType)) {
+                    result.getWeavable(method.get()).addAnnotations(method.getAnnotations());
+                }
+                break;
+            case CONSTRUCTOR:
+                for (Annotated<Constructor<?>> cs : this.withAnnotations().findAnnotatedConstructors(
+                    interest.annotationType)) {
+                    result.getWeavable(cs.get()).addAnnotations(cs.getAnnotations());
+                }
+                break;
+            case FIELD:
+                for (Annotated<Field> fld : this.withAnnotations().findAnnotatedFields(interest.annotationType)) {
+                    result.getWeavable(fld.get()).addAnnotations(fld.getAnnotations());
+                }
+                break;
+            case PARAMETER:
+                for (Annotated<Parameter<Method>> parameter : this.withAnnotations().findAnnotatedMethodParameters(
+                    interest.annotationType)) {
+                    result.getWeavable(parameter.get().getDeclaringExecutable())
+                        .getWeavableParameter(parameter.get().getIndex()).addAnnotations(parameter.getAnnotations());
+                }
+                for (Annotated<Parameter<Constructor<?>>> parameter : this.withAnnotations()
+                    .findAnnotatedConstructorParameters(interest.annotationType)) {
+                    result.getWeavable(parameter.get().getDeclaringExecutable())
+                        .getWeavableParameter(parameter.get().getIndex()).addAnnotations(parameter.getAnnotations());
+                }
+                break;
+            default:
+                // should we log something?
+                break;
             }
         }
         for (Class<?> supertype : request.getSupertypes()) {

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Inflater.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Inflater.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Inflater.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Inflater.java Fri Jan 10 20:14:41 2014
@@ -88,9 +88,9 @@ class Inflater {
     final Map<PackageInfo, List<Annotation>> packageAnnotations;
     final Map<ClassInfo, List<Annotation>> classAnnotations;
     final Map<FieldInfo, List<Annotation>> fieldAnnotations;
-    final Map<MethodInfo, List<Annotation>> constructorAnnotations;
+    final Map<MethodInfo, List<Annotation>> ctorAnnotations;
     final Map<MethodInfo, List<Annotation>> methodAnnotations;
-    final Map<ParameterInfo, List<Annotation>> constructorParameterAnnotations;
+    final Map<ParameterInfo, List<Annotation>> ctorParameterAnnotations;
     final Map<ParameterInfo, List<Annotation>> methodParameterAnnotations;
 
     Inflater(Map<Info, List<Annotation>> m) {
@@ -99,9 +99,9 @@ class Inflater {
         this.packageAnnotations = subMap(m, new InfoMatcher(PackageInfo.class));
         this.classAnnotations = subMap(m, new InfoMatcher(ClassInfo.class));
         this.fieldAnnotations = subMap(m, new InfoMatcher(FieldInfo.class));
-        this.constructorAnnotations = subMap(m, new MethodMatcher(true));
+        this.ctorAnnotations = subMap(m, new MethodMatcher(true));
         this.methodAnnotations = subMap(m, new MethodMatcher(false));
-        this.constructorParameterAnnotations = subMap(m, new ParameterMatcher(true));
+        this.ctorParameterAnnotations = subMap(m, new ParameterMatcher(true));
         this.methodParameterAnnotations = subMap(m, new ParameterMatcher(false));
     }
 
@@ -142,7 +142,7 @@ class Inflater {
                     }
                 }
                 for (WeavableConstructor<?> cs : cls.getConstructors()) {
-                    for (Map.Entry<MethodInfo, List<Annotation>> e : constructorAnnotations.entrySet()) {
+                    for (Map.Entry<MethodInfo, List<Annotation>> e : ctorAnnotations.entrySet()) {
                         try {
                             if (e.getKey().get().equals(cs.getTarget())) {
                                 cs.addAnnotations(e.getValue());
@@ -152,7 +152,7 @@ class Inflater {
                         }
                     }
                     for (WeavableConstructorParameter<?> p : cs.getParameters()) {
-                        for (Map.Entry<ParameterInfo, List<Annotation>> e : constructorParameterAnnotations.entrySet()) {
+                        for (Map.Entry<ParameterInfo, List<Annotation>> e : ctorParameterAnnotations.entrySet()) {
                             try {
                                 final Parameter<?> parameter = e.getKey().get();
                                 if (parameter.getDeclaringExecutable().equals(cs.getTarget())

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/WeaveProcessor.java Fri Jan 10 20:14:41 2014
@@ -38,7 +38,9 @@ import org.apache.xbean.finder.archive.F
  */
 public class WeaveProcessor {
 
-    /** List of picked up weaver plugins */
+    /**
+     * List of picked up weaver plugins.
+     */
     private static final List<Weaver> WEAVERS;
 
     static {
@@ -66,7 +68,7 @@ public class WeaveProcessor {
 
     /**
      * Create a new {@link WeaveProcessor} instance.
-     * 
+     *
      * @param classpath not {@code null}
      * @param target not {@code null}
      * @param configuration not {@code null}
@@ -87,7 +89,8 @@ public class WeaveProcessor {
         final Finder finder = new Finder(new FileArchive(classLoader, target));
         for (Weaver weaver : WEAVERS) {
             final WeaveEnvironment env =
-                new LocalWeaveEnvironment(target, classLoader, configuration, Logger.getLogger(weaver.getClass().getName()));
+                new LocalWeaveEnvironment(target, classLoader, configuration, Logger.getLogger(weaver.getClass()
+                    .getName()));
             weaver.process(env, finder);
         }
     }

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/AnnotatedElements.java Fri Jan 10 20:14:41 2014
@@ -23,17 +23,16 @@ import java.lang.annotation.RetentionPol
 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>
+ * 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> element type
  */
 public interface AnnotatedElements<T extends AnnotatedElement> extends Iterable<T> {
     /**
      * Filter by annotation type.
-     * 
-     * @param annotationType
+     * @param annotationType filter
      * @return {@link AnnotatedElements}, narrowed
      */
     AnnotatedElements<T> with(Class<? extends Annotation> annotationType);

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/NestedWeavable.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/NestedWeavable.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/NestedWeavable.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/NestedWeavable.java Fri Jan 10 20:14:41 2014
@@ -18,25 +18,55 @@
  */
 package org.apache.commons.weaver.model;
 
-public abstract class NestedWeavable<SELF extends NestedWeavable<SELF, TARGET, PARENT, PARENT_TARGET>, TARGET, PARENT extends Weavable<PARENT, PARENT_TARGET>, PARENT_TARGET>
+/**
+ * Describes a {@link Weavable} that lives inside some other {@link Weavable}.
+ * @param <SELF> own type
+ * @param <TARGET> weavable target type
+ * @param <PARENT> enclosing weavable type
+ * @param <PARENT_TARGET> parent target type
+ */
+public abstract class NestedWeavable
+    <SELF extends NestedWeavable<SELF, TARGET, PARENT, PARENT_TARGET>,
+    TARGET,
+    PARENT extends Weavable<PARENT, PARENT_TARGET>,
+    PARENT_TARGET>
     extends Weavable<SELF, TARGET> {
 
     private final PARENT parent;
 
+    /**
+     * Create a new {@link NestedWeavable} instance.
+     * @param target element
+     * @param parent enclosing
+     */
     protected NestedWeavable(TARGET target, PARENT parent) {
         super(target);
         this.parent = parent;
     }
 
+    /**
+     * Get the parent.
+     * @return {@code PARENT}
+     */
     public PARENT getParent() {
         return parent;
     }
 
+    /**
+     * Implement {@link Comparable}.
+     * @param o {@code SELF}
+     * @return int per {@link Comparable#compareTo(Object)} contract
+     */
     @Override
     public final int compareTo(SELF o) {
         int result = getParent().compareTo(o.getParent());
         return result == 0 ? localCompareTo(o) : result;
     }
 
+    /**
+     * Compare against {@code o} without respect to {@link #getParent()}.
+     * @param o SELF{@code SELF}
+     * @return int per {@link Comparable#compareTo(Object)} contract
+     */
     protected abstract int localCompareTo(SELF o);
-}
\ No newline at end of file
+}

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanRequest.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanRequest.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanRequest.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanRequest.java Fri Jan 10 20:14:41 2014
@@ -38,6 +38,11 @@ public class ScanRequest {
     private final List<WeaveInterest> interests = new ArrayList<WeaveInterest>();
     private final Set<Class<?>> supertypes = new LinkedHashSet<Class<?>>();
 
+    /**
+     * Register a {@link WeaveInterest}.
+     * @param interest {@link WeaveInterest} to add
+     * @return {@code this}, fluently
+     */
     public ScanRequest add(WeaveInterest interest) {
         if (interest == null) {
             throw new NullPointerException();
@@ -46,15 +51,28 @@ public class ScanRequest {
         return this;
     }
 
+    /**
+     * Register one or more types whose subtypes you are looking for.
+     * @param types {@link Class}es to add
+     * @return {@code this}, fluently
+     */
     public ScanRequest addSupertypes(Class<?>... types) {
         Collections.addAll(supertypes, Validate.noNullElements(types, "null element at [%s]"));
         return this;
     }
 
+    /**
+     * Get registered {@link WeaveInterest}s.
+     * @return {@link Iterable}
+     */
     public Iterable<WeaveInterest> getInterests() {
         return Collections.unmodifiableList(interests);
     }
 
+    /**
+     * Get registered {@link Class}es whose subtypes will be returned.
+     * @return {@link Set}
+     */
     public Set<Class<?>> getSupertypes() {
         return Collections.unmodifiableSet(supertypes);
     }

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/ScanResult.java Fri Jan 10 20:14:41 2014
@@ -34,9 +34,9 @@ import org.apache.commons.weaver.WeavePr
 import org.apache.commons.weaver.spi.Weaver;
 
 /**
- * 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.:
- * 
+ * <p>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
@@ -46,13 +46,16 @@ import org.apache.commons.weaver.spi.Wea
  *     |_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.
+ * </p><p>
+ * 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.
+ * </p>
  */
 public class ScanResult {
-    private static abstract class Projection<PARENT, CHILD extends AnnotatedElement> implements
+    private abstract static class Projection<PARENT, CHILD extends AnnotatedElement> implements
         AnnotatedElements<CHILD> {
         private final Iterable<PARENT> parents;
 
@@ -173,8 +176,7 @@ public class ScanResult {
 
     /**
      * Public for use by {@link WeaveProcessor}.
-     * 
-     * @param pkg
+     * @param pkg to wrap
      * @return {@link WeavablePackage}
      */
     public WeavablePackage getWeavable(Package pkg) {
@@ -189,8 +191,8 @@ public class ScanResult {
 
     /**
      * Public for use by {@link WeaveProcessor}.
-     * 
-     * @param cls
+     * @param cls to wrap
+     * @param <T> type
      * @return {@link WeavableClass}
      */
     public <T> WeavableClass<T> getWeavable(Class<T> cls) {
@@ -199,8 +201,7 @@ public class ScanResult {
 
     /**
      * Public for use by {@link WeaveProcessor}.
-     * 
-     * @param fld
+     * @param fld to wrap
      * @return {@link WeavableField}
      */
     public WeavableField<?> getWeavable(Field fld) {
@@ -209,8 +210,7 @@ public class ScanResult {
 
     /**
      * Public for use by {@link WeaveProcessor}.
-     * 
-     * @param mt
+     * @param mt to wrap
      * @return {@link WeavableMethod}
      */
     public WeavableMethod<?> getWeavable(Method mt) {
@@ -219,14 +219,18 @@ public class ScanResult {
 
     /**
      * Public for use by {@link WeaveProcessor}.
-     * 
-     * @param ctor
+     * @param ctor to wrap
+     * @param <T> type
      * @return {@link WeavableConstructor}
      */
     public <T> WeavableConstructor<T> getWeavable(Constructor<T> ctor) {
         return getWeavable(ctor.getDeclaringClass()).getWeavable(ctor);
     }
 
+    /**
+     * Iterate or filter {@link WeavablePackage}s.
+     * @return {@link AnnotatedElements}
+     */
     public AnnotatedElements<WeavablePackage> getPackages() {
         return new AnnotatedElements<WeavablePackage>() {
 
@@ -242,6 +246,10 @@ public class ScanResult {
         };
     }
 
+    /**
+     * Iterate or filter {@link WeavableClass}es.
+     * @return {@link AnnotatedElements}
+     */
     public AnnotatedElements<WeavableClass<?>> getClasses() {
         return new Projection<WeavablePackage, WeavableClass<?>>(getPackages()) {
 
@@ -252,6 +260,11 @@ public class ScanResult {
         };
     }
 
+    /**
+     * Iterate or filter {@link WeavableClass}es assignable to {@code supertype}.
+     * @param supertype {@link Class} whose subtypes are sought
+     * @return {@link AnnotatedElements}
+     */
     public AnnotatedElements<WeavableClass<?>> getClassesAssignableTo(final Class<?> supertype) {
         Validate.notNull(supertype, "supertype");
 
@@ -306,6 +319,10 @@ public class ScanResult {
         };
     }
 
+    /**
+     * Iterate or filter {@link WeavableField}s.
+     * @return {@link AnnotatedElements}
+     */
     public AnnotatedElements<WeavableField<?>> getFields() {
         return new Projection<WeavableClass<?>, WeavableField<?>>(getClasses()) {
 
@@ -318,6 +335,10 @@ public class ScanResult {
         };
     }
 
+    /**
+     * Iterate or filter {@link WeavableConstructor}s.
+     * @return {@link AnnotatedElements}
+     */
     public AnnotatedElements<WeavableConstructor<?>> getConstructors() {
         return new Projection<WeavableClass<?>, WeavableConstructor<?>>(getClasses()) {
 
@@ -330,6 +351,10 @@ public class ScanResult {
         };
     }
 
+    /**
+     * Iterate or filter {@link WeavableMethod}s.
+     * @return {@link AnnotatedElements}
+     */
     public AnnotatedElements<WeavableMethod<?>> getMethods() {
         return new Projection<WeavableClass<?>, WeavableMethod<?>>(getClasses()) {
 
@@ -342,6 +367,10 @@ public class ScanResult {
         };
     }
 
+    /**
+     * Iterate or filter {@link WeavableMethodParameter}s.
+     * @return {@link AnnotatedElements}
+     */
     public AnnotatedElements<WeavableMethodParameter<?>> getMethodParameters() {
         return new Projection<WeavableMethod<?>, WeavableMethodParameter<?>>(getMethods()) {
 
@@ -354,6 +383,10 @@ public class ScanResult {
         };
     }
 
+    /**
+     * Iterate or filter {@link WeavableConstructorParameter}s.
+     * @return {@link AnnotatedElements}
+     */
     public AnnotatedElements<WeavableConstructorParameter<?>> getConstructorParameters() {
 
         return new Projection<WeavableConstructor<?>, WeavableConstructorParameter<?>>(getConstructors()) {

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Scanner.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Scanner.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Scanner.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Scanner.java Fri Jan 10 20:14:41 2014
@@ -25,9 +25,9 @@ public interface Scanner {
 
     /**
      * Perform the requested scan.
-     * 
-     * @param request
-     * @return ScanResult
+     *
+     * @param request to process
+     * @return {@link ScanResult}
      */
     ScanResult scan(ScanRequest request);
 }

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/Weavable.java Fri Jan 10 20:14:41 2014
@@ -19,6 +19,7 @@
 package org.apache.commons.weaver.model;
 
 import java.lang.annotation.Annotation;
+import java.lang.annotation.RetentionPolicy;
 import java.lang.reflect.AnnotatedElement;
 import java.util.Arrays;
 import java.util.LinkedHashSet;
@@ -26,6 +27,13 @@ import java.util.Set;
 
 import org.apache.commons.lang3.Validate;
 
+/**
+ * {@link Weavable} extends {@link AnnotatedElement} to include
+ * {@link RetentionPolicy#CLASS} annotations.
+ *
+ * @param <SELF> own type
+ * @param <TARGET> target type
+ */
 public abstract class Weavable<SELF extends Weavable<SELF, TARGET>, TARGET> implements Comparable<SELF>,
     AnnotatedElement {
     private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0];
@@ -33,6 +41,10 @@ public abstract class Weavable<SELF exte
     private final TARGET target;
     private Set<Annotation> annotations;
 
+    /**
+     * Create a new {@link Weavable} instance.
+     * @param target {@code TARGET}
+     */
     protected Weavable(TARGET target) {
         this.target = target;
         if (target instanceof AnnotatedElement) {
@@ -40,11 +52,21 @@ public abstract class Weavable<SELF exte
         }
     }
 
+    /**
+     * Add one or more annotations.
+     * @param toAdd {@link Annotation}[]
+     * @return whether any change was made
+     */
     public boolean addAnnotations(Annotation... toAdd) {
         Validate.noNullElements(toAdd);
         return addAnnotations(Arrays.asList(toAdd));
     }
 
+    /**
+     * Add annotations from an {@link Iterable}.
+     * @param toAdd {@link Iterable} of {@link Annotation}
+     * @return whether any change was made
+     */
     public boolean addAnnotations(Iterable<Annotation> toAdd) {
         if (toAdd == null) {
             return false;
@@ -61,11 +83,20 @@ public abstract class Weavable<SELF exte
         return result;
     }
 
+    /**
+     * Get the target of this {@link Weavable}.
+     * @return {@code TARGET}
+     */
     public TARGET getTarget() {
         return target;
     }
 
-    public Annotation[] getAnnotations() {
+    /**
+     * Get all {@link Annotation}s associated with this element.
+     * @return {@link Annotation}[]
+     */
+    @Override
+    public final Annotation[] getAnnotations() {
         synchronized (this) {
             if (annotations == null) {
                 return EMPTY_ANNOTATION_ARRAY;
@@ -74,6 +105,12 @@ public abstract class Weavable<SELF exte
         return annotations.toArray(EMPTY_ANNOTATION_ARRAY);
     }
 
+    /**
+     * Get any instance of {@code annotationClass} attached to {@link #getTarget()}.
+     * @param annotationClass {@link Class} annotation type
+     * @param <T> annotation type
+     * @return {@code T} instance if available, else {@code null}
+     */
     @Override
     public synchronized <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
         if (annotations == null) {
@@ -89,16 +126,29 @@ public abstract class Weavable<SELF exte
         return null;
     }
 
+    /**
+     * Overridden to return {@link #getAnnotations()}.
+     * @return {@link Annotation}[]
+     */
     @Override
-    public Annotation[] getDeclaredAnnotations() {
+    public final Annotation[] getDeclaredAnnotations() {
         return getAnnotations();
     }
 
+    /**
+     * Learn whether an annotation of type {@code annotationClass} is present.
+     * @param annotationClass to find
+     * @return {@code boolean}
+     */
     @Override
     public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) {
         return getAnnotation(annotationClass) != null;
     }
 
+    /**
+     * Return a {@link String} representation of this {@link Weavable}.
+     * @return {@link String}
+     */
     @Override
     public String toString() {
         return "Weavable " + getTarget().toString();

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableClass.java Fri Jan 10 20:14:41 2014
@@ -28,9 +28,15 @@ import java.util.concurrent.ConcurrentSk
 
 import org.apache.commons.weaver.utils.Args;
 
+/**
+ * {@link Weavable} {@link Class}.
+ *
+ * @param <T> type
+ */
 public class WeavableClass<T> extends NestedWeavable<WeavableClass<T>, Class<T>, WeavablePackage, Package> {
     private final ConcurrentNavigableMap<String, WeavableField<T>> fields =
         new ConcurrentSkipListMap<String, WeavableField<T>>();
+
     private final ConcurrentNavigableMap<Constructor<T>, WeavableConstructor<T>> ctors =
         new ConcurrentSkipListMap<Constructor<T>, WeavableConstructor<T>>(new Comparator<Constructor<?>>() {
 
@@ -39,6 +45,7 @@ public class WeavableClass<T> extends Ne
                 return Args.compare(o1.getParameterTypes(), o2.getParameterTypes());
             }
         });
+
     private final ConcurrentNavigableMap<Method, WeavableMethod<T>> methods =
         new ConcurrentSkipListMap<Method, WeavableMethod<T>>(new Comparator<Method>() {
 
@@ -49,10 +56,20 @@ public class WeavableClass<T> extends Ne
             }
         });
 
+    /**
+     * Create a new {@link WeavableClass} instance.
+     * @param target {@link Class}
+     * @param parent {@link WeavablePackage} enclosing
+     */
     public WeavableClass(Class<T> target, WeavablePackage parent) {
         super(target, parent);
     }
 
+    /**
+     * Get a {@link WeavableField} representing {@code fld}.
+     * @param fld to wrap
+     * @return {@link WeavableField}
+     */
     public WeavableField<T> getWeavable(Field fld) {
         final String key = fld.getName();
         if (fields.containsKey(key)) {
@@ -64,6 +81,11 @@ public class WeavableClass<T> extends Ne
         return faster == null ? result : faster;
     }
 
+    /**
+     * Get a {@link WeavableMethod} representing {@code mt}.
+     * @param mt to wrap
+     * @return {@link WeavableMethod}
+     */
     public WeavableMethod<T> getWeavable(Method mt) {
         if (methods.containsKey(mt)) {
             final WeavableMethod<T> result = (WeavableMethod<T>) methods.get(mt);
@@ -74,6 +96,11 @@ public class WeavableClass<T> extends Ne
         return faster == null ? result : faster;
     }
 
+    /**
+     * Get a {@link WeavableConstructor} representing {@code ctor}.
+     * @param ctor to wrap
+     * @return {@link WeavableConstructor}
+     */
     public WeavableConstructor<T> getWeavable(Constructor<T> ctor) {
         if (ctors.containsKey(ctor)) {
             final WeavableConstructor<T> result = (WeavableConstructor<T>) ctors.get(ctor);
@@ -84,18 +111,33 @@ public class WeavableClass<T> extends Ne
         return faster == null ? result : faster;
     }
 
+    /**
+     * Get {@link WeavableField}s of this {@link WeavableClass}.
+     * @return {@link Iterable}
+     */
     public Iterable<WeavableField<T>> getFields() {
         return Collections.unmodifiableCollection(fields.values());
     }
 
+    /**
+     * Get {@link WeavableConstructor}s of this {@link WeavableClass}.
+     * @return {@link Iterable}
+     */
     public Iterable<WeavableConstructor<T>> getConstructors() {
         return Collections.unmodifiableCollection(ctors.values());
     }
 
+    /**
+     * Get {@link WeavableMethod}s of this {@link WeavableClass}.
+     * @return {@link Iterable}
+     */
     public Iterable<WeavableMethod<T>> getMethods() {
         return Collections.unmodifiableCollection(methods.values());
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected int localCompareTo(WeavableClass<T> o) {
         return getTarget().getName().compareTo(o.getTarget().getName());

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableConstructor.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableConstructor.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableConstructor.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableConstructor.java Fri Jan 10 20:14:41 2014
@@ -20,18 +20,34 @@ package org.apache.commons.weaver.model;
 
 import java.lang.reflect.Constructor;
 
+/**
+ * {@link Weavable} {@link Constructor}.
+ *
+ * @param <T> type constructed
+ */
 public class WeavableConstructor<T> extends
     WeavableExecutable<WeavableConstructor<T>, Constructor<T>, T, WeavableConstructorParameter<T>> {
 
+    /**
+     * Create a new {@link WeavableConstructor} instance.
+     * @param target {@link Constructor}
+     * @param parent enclosing {@link WeavableClass}
+     */
     public WeavableConstructor(Constructor<T> target, WeavableClass<T> parent) {
         super(target, parent);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected Class<?>[] getParameterTypes() {
         return getTarget().getParameterTypes();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected WeavableConstructorParameter<T> createParameter(int index) {
         return new WeavableConstructorParameter<T>(Integer.valueOf(index), this);

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableConstructorParameter.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableConstructorParameter.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableConstructorParameter.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableConstructorParameter.java Fri Jan 10 20:14:41 2014
@@ -20,9 +20,19 @@ package org.apache.commons.weaver.model;
 
 import java.lang.reflect.Constructor;
 
+/**
+ * {@link Weavable} {@link Constructor} parameter.
+ *
+ * @param <T> constructed type
+ */
 public class WeavableConstructorParameter<T> extends
     WeavableParameter<WeavableConstructorParameter<T>, WeavableConstructor<T>, Constructor<T>, T> {
 
+    /**
+     * Create a new {@link WeavableConstructorParameter} instance.
+     * @param target parameter index
+     * @param parent declaring {@link WeavableConstructor}
+     */
     public WeavableConstructorParameter(Integer target, WeavableConstructor<T> parent) {
         super(target, parent);
     }

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableExecutable.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableExecutable.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableExecutable.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableExecutable.java Fri Jan 10 20:14:41 2014
@@ -25,11 +25,28 @@ import java.util.List;
 
 import org.apache.commons.weaver.utils.Args;
 
-public abstract class WeavableExecutable<SELF extends WeavableExecutable<SELF, TARGET, T, P>, TARGET extends Member, T, P extends WeavableParameter<P, SELF, TARGET, T>>
+/**
+ * Represents a {@link Weavable} "executable".
+ *
+ * @param <SELF> own type
+ * @param <TARGET> target executable type
+ * @param <T> owning type
+ * @param <P> parameter type
+ */
+public abstract class WeavableExecutable
+    <SELF extends WeavableExecutable<SELF, TARGET, T, P>,
+    TARGET extends Member,
+    T,
+    P extends WeavableParameter<P, SELF, TARGET, T>>
     extends NestedWeavable<SELF, TARGET, WeavableClass<T>, Class<T>> {
 
     private final List<P> parameters;
 
+    /**
+     * Create a new {@link WeavableExecutable} instance.
+     * @param target executable
+     * @param parent enclosing {@link WeavableClass}
+     */
     protected WeavableExecutable(TARGET target, WeavableClass<T> parent) {
         super(target, parent);
         final List<P> params = new ArrayList<P>();
@@ -39,19 +56,40 @@ public abstract class WeavableExecutable
         parameters = Collections.unmodifiableList(params);
     }
 
+    /**
+     * Create an appropriate {@link WeavableParameter} object.
+     * @param index of parameter
+     * @return {@code P}
+     */
     protected abstract P createParameter(int index);
 
+    /**
+     * Get the parameter types of {@link #getTarget()}.
+     * @return {@link Class}[]
+     */
     protected abstract Class<?>[] getParameterTypes();
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected int localCompareTo(SELF o) {
         return Args.compare(getParameterTypes(), o.getParameterTypes());
     }
 
+    /**
+     * Get the parameter at the specified index.
+     * @param index {@code int}
+     * @return {@code P}
+     */
     public P getWeavableParameter(int index) {
         return parameters.get(index);
     }
 
+    /**
+     * Get the parameters declared by this {@link WeavableExecutable}.
+     * @return {@link Iterable} of {@code P}
+     */
     public Iterable<P> getParameters() {
         return parameters;
     }

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableField.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableField.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableField.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableField.java Fri Jan 10 20:14:41 2014
@@ -20,12 +20,25 @@ package org.apache.commons.weaver.model;
 
 import java.lang.reflect.Field;
 
+/**
+ * Represents a {@link Weavable} {@link Field}.
+ *
+ * @param <T> enclosing type
+ */
 public class WeavableField<T> extends NestedWeavable<WeavableField<T>, Field, WeavableClass<T>, Class<T>> {
 
+    /**
+     * Create a new {@link WeavableField} instance.
+     * @param target field
+     * @param parent enclosing {@link WeavableClass}
+     */
     public WeavableField(Field target, WeavableClass<T> parent) {
         super(target, parent);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected int localCompareTo(WeavableField<T> o) {
         return getTarget().getName().compareTo(o.getTarget().getName());

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableMethod.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableMethod.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableMethod.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableMethod.java Fri Jan 10 20:14:41 2014
@@ -20,23 +20,42 @@ package org.apache.commons.weaver.model;
 
 import java.lang.reflect.Method;
 
+/**
+ * Represents a {@link Weavable} {@link Method}.
+ *
+ * @param <T> enclosing type
+ */
 public class WeavableMethod<T> extends WeavableExecutable<WeavableMethod<T>, Method, T, WeavableMethodParameter<T>> {
 
+    /**
+     * Create a new {@link WeavableMethod} instance.
+     * @param target method
+     * @param parent enclosing {@link WeavableClass}
+     */
     public WeavableMethod(Method target, WeavableClass<T> parent) {
         super(target, parent);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected Class<?>[] getParameterTypes() {
         return getTarget().getParameterTypes();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected int localCompareTo(WeavableMethod<T> o) {
         int result = getTarget().getName().compareTo(o.getTarget().getName());
         return result == 0 ? super.localCompareTo(o) : result;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected WeavableMethodParameter<T> createParameter(int index) {
         return new WeavableMethodParameter<T>(Integer.valueOf(index), this);

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableMethodParameter.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableMethodParameter.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableMethodParameter.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableMethodParameter.java Fri Jan 10 20:14:41 2014
@@ -20,9 +20,19 @@ package org.apache.commons.weaver.model;
 
 import java.lang.reflect.Method;
 
+/**
+ * {@link Weavable} {@link Method} parameter.
+ *
+ * @param <T> type of enclosing class
+ */
 public class WeavableMethodParameter<T> extends
     WeavableParameter<WeavableMethodParameter<T>, WeavableMethod<T>, Method, T> {
 
+    /**
+     * Create a new {@link WeavableMethodParameter} instance.
+     * @param target index
+     * @param parent declaring {@link WeavableMethod}
+     */
     public WeavableMethodParameter(Integer target, WeavableMethod<T> parent) {
         super(target, parent);
     }

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavablePackage.java Fri Jan 10 20:14:41 2014
@@ -22,15 +22,28 @@ import java.util.Collections;
 import java.util.concurrent.ConcurrentNavigableMap;
 import java.util.concurrent.ConcurrentSkipListMap;
 
+/**
+ * {@link Weavable} {@link Package}.
+ */
 public class WeavablePackage extends Weavable<WeavablePackage, Package> {
 
     private final ConcurrentNavigableMap<String, WeavableClass<?>> clazzes =
         new ConcurrentSkipListMap<String, WeavableClass<?>>();
 
+    /**
+     * Create a new {@link WeavablePackage} instance.
+     * @param target package
+     */
     public WeavablePackage(Package target) {
         super(target);
     }
 
+    /**
+     * Get a {@link WeavableClass} representing {@code cls}.
+     * @param cls to wrap
+     * @param <T> generic type of {@code cls}
+     * @return {@link WeavableClass}
+     */
     public synchronized <T> WeavableClass<T> getWeavable(Class<T> cls) {
         final String key = cls.getName();
         if (clazzes.containsKey(key)) {
@@ -44,10 +57,19 @@ public class WeavablePackage extends Wea
         return faster == null ? result : faster;
     }
 
+    /**
+     * Get enclosed {@link WeavableClass}es.
+     * @return {@link Iterable}
+     */
     public Iterable<WeavableClass<?>> getClasses() {
         return Collections.unmodifiableCollection(clazzes.values());
     }
 
+    /**
+     * Implement {@link Comparable}.
+     * @param arg0 {@link WeavablePackage} to compare against
+     * @return int per {@link Comparable#compareTo(Object)} contract
+     */
     @Override
     public int compareTo(WeavablePackage arg0) {
         return getTarget().getName().compareTo(arg0.getTarget().getName());

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableParameter.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableParameter.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableParameter.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeavableParameter.java Fri Jan 10 20:14:41 2014
@@ -20,13 +20,33 @@ package org.apache.commons.weaver.model;
 
 import java.lang.reflect.Member;
 
-public abstract class WeavableParameter<SELF extends WeavableParameter<SELF, PARENT, PARENT_TARGET, T>, PARENT extends WeavableExecutable<PARENT, PARENT_TARGET, T, SELF>, PARENT_TARGET extends Member, T>
+/**
+ * Represents the parameter of an executable.
+ *
+ * @param <SELF> own type
+ * @param <PARENT> {@link WeavableExecutable} type
+ * @param <PARENT_TARGET> target executable of parent
+ * @param <T> executable's owning type
+ */
+public abstract class WeavableParameter
+    <SELF extends WeavableParameter<SELF, PARENT, PARENT_TARGET, T>,
+    PARENT extends WeavableExecutable<PARENT, PARENT_TARGET, T, SELF>,
+    PARENT_TARGET extends Member,
+    T>
     extends NestedWeavable<SELF, Integer, PARENT, PARENT_TARGET> {
 
+    /**
+     * Create a new {@link WeavableParameter} instance.
+     * @param target index
+     * @param parent executable
+     */
     protected WeavableParameter(Integer target, PARENT parent) {
         super(target, parent);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     protected int localCompareTo(SELF o) {
         return getTarget().compareTo(getTarget());

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeaveEnvironment.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeaveEnvironment.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeaveEnvironment.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeaveEnvironment.java Fri Jan 10 20:14:41 2014
@@ -43,26 +43,40 @@ public abstract class WeaveEnvironment {
             this.name = name;
         }
 
+        /**
+         * Get the content type, always "application/octet-stream".
+         * @return {@link String}
+         */
         @Override
         public String getContentType() {
             return CONTENT_TYPE;
         }
 
+        /**
+         * Get an {@link InputStream} for reading this {@link Resource}.
+         */
         @Override
         public InputStream getInputStream() throws IOException {
             return classLoader.getResourceAsStream(name);
         }
 
+        /**
+         * Get the name of this {@link Resource}.
+         * @return {@link String}
+         */
         @Override
         public String getName() {
             return name;
         }
 
+        /**
+         * Get an {@link OutputStream} for writing to this {@link Resource}.
+         * @return {@link OutputStream}
+         */
         @Override
         public OutputStream getOutputStream() throws IOException {
             return WeaveEnvironment.this.getOutputStream(name);
         }
-
     }
 
     /**
@@ -80,10 +94,9 @@ public abstract class WeaveEnvironment {
 
     /**
      * Create a new {@link WeaveEnvironment}.
-     * 
-     * @param classLoader
-     * @param config
-     * @param log
+     * @param classLoader property
+     * @param config property
+     * @param log property
      */
     protected WeaveEnvironment(ClassLoader classLoader, Properties config, Logger log) {
         super();
@@ -92,50 +105,121 @@ public abstract class WeaveEnvironment {
         this.log = log;
     }
 
+    /**
+     * Handle a debug message.
+     * @param message text
+     * @param args format
+     * @see String#format(String, Object...)
+     */
     public void debug(String message, Object... args) {
         log.fine(String.format(message, args));
     }
 
+    /**
+     * Handle a verbose message.
+     * @param message text
+     * @param args format
+     * @see String#format(String, Object...)
+     */
     public void verbose(String message, Object... args) {
         log.fine(String.format(message, args));
     }
 
+    /**
+     * Handle a warning message.
+     * @param message text
+     * @param args format
+     * @see String#format(String, Object...)
+     */
     public void warn(String message, Object... args) {
         log.warning(String.format(message, args));
     }
 
+    /**
+     * Handle an info message.
+     * @param message text
+     * @param args format
+     * @see String#format(String, Object...)
+     */
     public void info(String message, Object... args) {
         log.info(String.format(message, args));
     }
 
+    /**
+     * Handle an error message.
+     * @param message text
+     * @param args format
+     * @see String#format(String, Object...)
+     */
     public void error(String message, Object... args) {
         log.severe(String.format(message, args));
     }
 
+    /**
+     * Get a {@link DataSource} representing {@code cls}.
+     * @param cls type
+     * @return {@link DataSource}
+     */
     public final DataSource getClassfile(Class<?> cls) {
         return getClassfile(cls.getName());
     }
 
+    /**
+     * Get a {@link DataSource} for the specified class.
+     * @param classname of type
+     * @return {@link DataSource}
+     */
     public final DataSource getClassfile(String classname) {
         return getResource(getResourceName(classname));
     }
 
+    /**
+     * Get a {@link DataSource} for the specified resource.
+     * @param name of resource
+     * @return {@link DataSource}
+     */
     public final DataSource getResource(String name) {
         return new Resource(name);
     }
 
+    /**
+     * Delete the classfile for {@code cls}.
+     * @param cls type
+     * @return whether successful
+     */
     public final boolean deleteClassfile(Class<?> cls) {
         return deleteClassfile(cls.getName());
     }
 
+    /**
+     * Delete the classfile for the specified class.
+     * @param classname of type
+     * @return whether successful
+     */
     public final boolean deleteClassfile(String classname) {
         return deleteResource(getResourceName(classname));
     }
 
+    /**
+     * Delete the specified resource.
+     * @param name to delete
+     * @return whether successful
+     */
     public abstract boolean deleteResource(String name);
 
+    /**
+     * Open an {@link OutputStream} for the specified resource.
+     * @param resourceName to open
+     * @return {@link OutputStream}
+     * @throws IOException on error
+     */
     protected abstract OutputStream getOutputStream(String resourceName) throws IOException;
 
+    /**
+     * Convert a classname into a resource name.
+     * @param classname to convert
+     * @return String
+     */
     protected static String getResourceName(String classname) {
         return classname.replace('.', '/') + ".class";
     }

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeaveInterest.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeaveInterest.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeaveInterest.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/WeaveInterest.java Fri Jan 10 20:14:41 2014
@@ -25,8 +25,16 @@ import java.lang.annotation.ElementType;
 /**
  * Weave interest composed of annotation type and target element type.
  */
-public class WeaveInterest {
+public final class WeaveInterest {
+
+    /**
+     * Observed annotation type.
+     */
     public final Class<? extends Annotation> annotationType;
+
+    /**
+     * Attached element type.
+     */
     public final ElementType target;
 
     private WeaveInterest(Class<? extends Annotation> annotationType, ElementType target) {
@@ -35,6 +43,12 @@ public class WeaveInterest {
         this.target = target;
     }
 
+    /**
+     * Get a {@link WeaveInterest}.
+     * @param annotationType observed annotation type
+     * @param target attached element type
+     * @return {@link WeaveInterest}
+     */
     public static WeaveInterest of(Class<? extends Annotation> annotationType, ElementType target) {
         return new WeaveInterest(annotationType, target);
     }

Added: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/package-info.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/package-info.java?rev=1557247&view=auto
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/package-info.java (added)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/package-info.java Fri Jan 10 20:14:41 2014
@@ -0,0 +1,4 @@
+/**
+ * Defines a domain model for weaving operations.
+ */
+package org.apache.commons.weaver.model;
\ No newline at end of file

Propchange: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/model/package-info.java
------------------------------------------------------------------------------
    svn:executable = *

Added: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/package-info.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/package-info.java?rev=1557247&view=auto
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/package-info.java (added)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/package-info.java Fri Jan 10 20:14:41 2014
@@ -0,0 +1,4 @@
+/**
+ * Defines the objects needed to perform filesystem-based weaving.
+ */
+package org.apache.commons.weaver;
\ No newline at end of file

Propchange: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/package-info.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/Cleaner.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/Cleaner.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/Cleaner.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/Cleaner.java Fri Jan 10 20:14:41 2014
@@ -22,16 +22,15 @@ import org.apache.commons.weaver.model.S
 import org.apache.commons.weaver.model.WeaveEnvironment;
 
 /**
- * SPI to provide a means for a weaver module to remove woven classes during incremental builds, if necessary.
+ * SPI to provide a means for a weaver module to remove woven classes during
+ * incremental builds, if necessary.
  */
 public interface Cleaner {
     /**
      * Using the supplied {@link Scanner}, clean a {@link WeaveEnvironment}.
-     * 
-     * @param environment
-     * @param scanner
+     * @param environment to use
+     * @param scanner to use
      * @return whether any work was done.
      */
     boolean clean(WeaveEnvironment environment, Scanner scanner);
-
 }

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/Weaver.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/Weaver.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/Weaver.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/Weaver.java Fri Jan 10 20:14:41 2014
@@ -22,16 +22,15 @@ import org.apache.commons.weaver.model.S
 import org.apache.commons.weaver.model.WeaveEnvironment;
 
 /**
- * A {@link Weaver} implementation performs the byte code enhancement in the classes.
+ * A {@link Weaver} implementation performs the byte code enhancement in the
+ * classes.
  */
 public interface Weaver {
     /**
      * Using the supplied {@link Scanner}, process a {@link WeaveEnvironment}.
-     * 
-     * @param environment
-     * @param scanner
+     * @param environment to use
+     * @param scanner to use
      * @return whether any work was done.
      */
     boolean process(WeaveEnvironment environment, Scanner scanner);
-
 }

Added: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/package-info.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/package-info.java?rev=1557247&view=auto
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/package-info.java (added)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/package-info.java Fri Jan 10 20:14:41 2014
@@ -0,0 +1,4 @@
+/**
+ * Defines the weaver module service provider interface (SPI).
+ */
+package org.apache.commons.weaver.spi;
\ No newline at end of file

Propchange: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/spi/package-info.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/Annotations.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/Annotations.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/Annotations.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/Annotations.java Fri Jan 10 20:14:41 2014
@@ -31,10 +31,17 @@ import org.apache.commons.lang3.Validate
 /**
  * Provide annotation-related utility methods.
  */
-public class Annotations {
+public final class Annotations {
     private Annotations() {
     }
 
+    /**
+     * Create an annotation instance.
+     * @param annotationType type
+     * @param elements values
+     * @param <A> generic annotation type
+     * @return {@code A}
+     */
     public static <A extends Annotation> A instanceOf(final Class<A> annotationType, final Map<String, ?> elements) {
         final ClassLoader proxyClassLoader = Validate.notNull(annotationType, "annotationType").getClassLoader();
         final InvocationHandler invocationHandler = new InvocationHandler() {

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/Args.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/Args.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/Args.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/Args.java Fri Jan 10 20:14:41 2014
@@ -21,13 +21,17 @@ package org.apache.commons.weaver.utils;
 /**
  * Argument/Parameter-related utilities.
  */
-public class Args {
+public final class Args {
+
+    private Args() {
+    }
 
     /**
      * Compare two parameter type arrays.
-     * @param paramTypes1
-     * @param paramTypes2
-     * @return int
+     * @param paramTypes1 lhs
+     * @param paramTypes2 rhs
+     * @return {@code int} as specified by
+     *         {@link java.util.Comparator#compare(Object, Object)}
      */
     public static int compare(Class<?>[] paramTypes1, Class<?>[] paramTypes2) {
         int i = 0;

Modified: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/URLArray.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/URLArray.java?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/URLArray.java (original)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/URLArray.java Fri Jan 10 20:14:41 2014
@@ -27,14 +27,13 @@ import java.util.Iterator;
 /**
  * {@link URL} Array utilities.
  */
-public abstract class URLArray {
+public final class URLArray {
     private URLArray() {
     }
 
     /**
      * Convert an {@link Iterable} of filesystem paths.
-     * 
-     * @param files
+     * @param files to convert
      * @return URL[]
      */
     public static URL[] fromPaths(final Iterable<String> files) {
@@ -63,8 +62,7 @@ public abstract class URLArray {
 
     /**
      * Convert an {@link Iterable} of {@link File}s.
-     * 
-     * @param files
+     * @param files to convert
      * @return URL[]
      */
     public static URL[] fromFiles(Iterable<File> files) {

Added: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/package-info.java
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/package-info.java?rev=1557247&view=auto
==============================================================================
--- commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/package-info.java (added)
+++ commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/package-info.java Fri Jan 10 20:14:41 2014
@@ -0,0 +1,4 @@
+/**
+ * Provides helpful utility classes.
+ */
+package org.apache.commons.weaver.utils;
\ No newline at end of file

Propchange: commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/utils/package-info.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: commons/proper/weaver/trunk/src/site/markdown/index.md
URL: http://svn.apache.org/viewvc/commons/proper/weaver/trunk/src/site/markdown/index.md?rev=1557247&r1=1557246&r2=1557247&view=diff
==============================================================================
--- commons/proper/weaver/trunk/src/site/markdown/index.md (original)
+++ commons/proper/weaver/trunk/src/site/markdown/index.md Fri Jan 10 20:14:41 2014
@@ -34,6 +34,9 @@ are provided by the Commons Weaver proje
 Typically a weaver module may respect a set of configuration
 properties which should be documented along with that module.
 
+### What can these do for me?
+The canonical example is the [privilizer module](commons-weaver-modules-parent/commons-weaver-privilizer-parent/index.html).
+
 ## Integration
 The weaver module(s) applicable to your codebase should be available
 on the classpath of whatever Java-based processing mechanism you select.