Author: scolebourne
Date: Fri Mar  4 12:03:22 2011
New Revision: 1077892

URL: http://svn.apache.org/viewvc?rev=1077892&view=rev
Log:
Additional Javadoc; Remove IllegalArgumentException from throws clause

Modified:
    
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/AnnotationUtils.java

Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/AnnotationUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/AnnotationUtils.java?rev=1077892&r1=1077891&r2=1077892&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/AnnotationUtils.java
 (original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/AnnotationUtils.java
 Fri Mar  4 12:03:22 2011
@@ -25,11 +25,20 @@ import org.apache.commons.lang3.builder.
 import org.apache.commons.lang3.builder.ToStringStyle;
 
 /**
- * Helper methods for working with {@link Annotation}s.
+ * <p>Helper methods for working with {@link Annotation} instances.</p>
+ * 
+ * <p>This contains various utility methods that make working with annotations 
simpler.</p>
+ * 
+ * <p>#ThreadSafe#</p>
+ * 
  * @since 3.0
  * @version $Id$
  */
 public class AnnotationUtils {
+
+    /**
+     * A style that prints annotations as recommended.
+     */
     private static final ToStringStyle TO_STRING_STYLE = new ToStringStyle() {
         /** Serialization version */
         private static final long serialVersionUID = 1L;
@@ -89,14 +98,17 @@ public class AnnotationUtils {
     public AnnotationUtils() {
     }
 
+    //-----------------------------------------------------------------------
     /**
-     * Learn whether two annotations are equivalent; dynamically created
-     * {@link Annotation} instances are always proxy objects which cannot be
-     * depended upon to know how to implement {@link Annotation#equals(Object)}
-     * per spec.
-     * @param a1 the first Annotation to compare
-     * @param a2 the second Annotation to compare
-     * @return Whether the two annotations are equal
+     * <p>Checks if two annotations are equal.</p>
+     * 
+     * <p>Dynamically created {@link Annotation} instances are always proxy
+     * objects which cannot be depended upon to know how to implement
+     * {@link Annotation#equals(Object)} correctly.</p>
+     * 
+     * @param a1 the first Annotation to compare, null returns false unless 
both are null
+     * @param a2 the second Annotation to compare, null returns false unless 
both are null
+     * @return true if the two annotations are equal or both null
      */
     public static boolean equals(Annotation a1, Annotation a2) {
         if (a1 == a2) {
@@ -132,26 +144,26 @@ public class AnnotationUtils {
     }
 
     /**
-     * Generate a hashcode for the given annotation; dynamically created
-     * {@link Annotation} instances are always proxy objects which cannot be
-     * depended upon to know how to implement {@link Annotation#hashCode()} per
-     * spec.
+     * <p>Generate a hash code for the given annotation.</p>
      * 
-     * @param a the Annotation for a hashcode calculation is desired
-     * @return the calculated hashcode
-     * @throws IllegalArgumentException
-     * @throws IllegalAccessException
-     * @throws InvocationTargetException
+     * <p>Dynamically created {@link Annotation} instances are always proxy
+     * objects which cannot be depended upon to know how to implement
+     * {@link Annotation#hashCode()} correctly.</p>
+     * 
+     * @param a the Annotation for a hash code calculation is desired, not null
+     * @return the calculated hash code
+     * @throws IllegalAccessException if thrown during annotation access
+     * @throws InvocationTargetException if thrown during annotation access
      */
-    public static int hashCode(Annotation a) throws IllegalArgumentException,
-            IllegalAccessException, InvocationTargetException {
+    public static int hashCode(Annotation a)
+            throws IllegalAccessException, InvocationTargetException {
         int result = 0;
         Class<? extends Annotation> type = a.annotationType();
         for (Method m : type.getDeclaredMethods()) {
             Object value = m.invoke(a);
             if (value == null) {
-                throw new IllegalStateException(String.format("Annotation 
method %s returned null",
-                        m));
+                throw new IllegalStateException(
+                        String.format("Annotation method %s returned null", 
m));
             }
             result += hashMember(m.getName(), value);
         }
@@ -159,10 +171,11 @@ public class AnnotationUtils {
     }
 
     /**
-     * Generate a string representation of an Annotation, as suggested by
-     * {@link Annotation#toString()}.
+     * <p>Generate a string representation of an Annotation, as suggested by
+     * {@link Annotation#toString()}.</p>
+     * 
      * @param a the annotation of which a string representation is desired
-     * @return String
+     * @return the standard string representation of an annotation, not null
      */
     public static String toString(final Annotation a) {
         ToStringBuilder builder = new ToStringBuilder(a, TO_STRING_STYLE);
@@ -182,11 +195,14 @@ public class AnnotationUtils {
     }
 
     /**
-     * Learn whether the specified type is permitted as an annotation member.
-     * These include {@link String}, {@link Class}, primitive types,
-     * {@link Annotation}s, {@link Enum}s, and arrays of same.
-     * @param type to check
-     * @return boolean
+     * <p>Checks if the specified type is permitted as an annotation 
member.</p>
+     * 
+     * <p>The Java language specification only permits certain types to be used
+     * in annotations. These include {@link String}, {@link Class}, primitive 
types,
+     * {@link Annotation}, {@link Enum}, and arrays of these types.</p>
+     * 
+     * @param type the type to check, null returns false
+     * @return true if the type is a valid type to use in an annotation
      */
     public static boolean isValidAnnotationMemberType(Class<?> type) {
         if (type == null) {
@@ -200,8 +216,8 @@ public class AnnotationUtils {
     }
 
     //besides modularity, this has the advantage of autoboxing primitives:
-    private static int hashMember(String name, Object value) throws 
IllegalArgumentException,
-            IllegalAccessException, InvocationTargetException {
+    private static int hashMember(String name, Object value)
+            throws IllegalAccessException, InvocationTargetException {
         int part1 = name.hashCode() * 127;
         if (value.getClass().isArray()) {
             return part1 ^ 
arrayMemberHash(value.getClass().getComponentType(), value);


Reply via email to