You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by li...@apache.org on 2012/01/18 00:19:58 UTC
[4/14] git commit: [DELTASPIKE-45] Adding JavaDoc
[DELTASPIKE-45] Adding JavaDoc
Fixing IP issues
Submitted on behalf of a third-part: Red Hat, Inc. under the terms of
the ALv2
Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/21249467
Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/21249467
Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/21249467
Branch: refs/heads/master
Commit: 212494671f36ecf262f430dd0e9ab4ef6558671a
Parents: 952aa26
Author: Jason Porter <li...@apache.org>
Authored: Mon Jan 9 18:11:54 2012 -0700
Committer: Jason Porter <li...@apache.org>
Committed: Tue Jan 17 16:14:18 2012 -0700
----------------------------------------------------------------------
.../api/metadata/AnnotatedConstructorImpl.java | 13 +++-
.../core/api/metadata/AnnotatedFieldImpl.java | 11 +++-
.../core/api/metadata/AnnotatedImpl.java | 5 ++
.../core/api/metadata/AnnotatedMemberImpl.java | 8 ++-
.../core/api/metadata/AnnotatedMethodImpl.java | 12 +++-
.../core/api/metadata/AnnotatedParameterImpl.java | 10 +++-
.../core/api/metadata/AnnotatedTypeImpl.java | 6 ++-
.../core/api/metadata/AnnotationRedefiner.java | 2 +-
.../deltaspike/core/api/metadata/Parameter.java | 32 +++++++++-
.../core/api/metadata/RedefinitionContext.java | 2 +-
.../api/metadata/builder/AnnotatedTypeBuilder.java | 26 +++++++-
.../api/metadata/builder/AnnotationBuilder.java | 50 ++++++++++++++-
12 files changed, 154 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedConstructorImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedConstructorImpl.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedConstructorImpl.java
index aeae547..8833baa 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedConstructorImpl.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedConstructorImpl.java
@@ -16,21 +16,28 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.deltaspike.core.api.metadata;
+import org.apache.deltaspike.core.api.metadata.builder.AnnotatedTypeBuilder;
+
import javax.enterprise.inject.spi.AnnotatedConstructor;
import java.lang.reflect.Constructor;
import java.lang.reflect.Type;
import java.util.Map;
/**
- *
+ * Implementation of {@link AnnotatedConstructor} to be used in {@link AnnotatedTypeBuilder}
+ * and other CDI life cycle events.
*/
class AnnotatedConstructorImpl<X> extends AnnotatedCallableImpl<X, Constructor<X>> implements AnnotatedConstructor<X>
{
- AnnotatedConstructorImpl(AnnotatedTypeImpl<X> type, Constructor<?> constructor, AnnotationStore annotations,
- Map<Integer, AnnotationStore> parameterAnnotations, Map<Integer, Type> typeOverrides)
+ /**
+ * Constructor
+ */
+ public AnnotatedConstructorImpl(AnnotatedTypeImpl<X> type, Constructor<?> constructor, AnnotationStore annotations,
+ Map<Integer, AnnotationStore> parameterAnnotations, Map<Integer, Type> typeOverrides)
{
super(type, (Constructor<X>) constructor, constructor.getDeclaringClass(), constructor.getParameterTypes(),
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedFieldImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedFieldImpl.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedFieldImpl.java
index 1723d21..46190a5 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedFieldImpl.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedFieldImpl.java
@@ -16,20 +16,27 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.deltaspike.core.api.metadata;
+import org.apache.deltaspike.core.api.metadata.builder.AnnotatedTypeBuilder;
+
import javax.enterprise.inject.spi.AnnotatedField;
import javax.enterprise.inject.spi.AnnotatedType;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
/**
- *
+ * Implementation of {@link AnnotatedField} to be used in CDI life cycle events and {@link AnnotatedTypeBuilder}.
*/
class AnnotatedFieldImpl<X> extends AnnotatedMemberImpl<X, Field> implements AnnotatedField<X>
{
- AnnotatedFieldImpl(AnnotatedType<X> declaringType, Field field, AnnotationStore annotations, Type overridenType)
+ /**
+ * Constructor.
+ */
+ public AnnotatedFieldImpl(AnnotatedType<X> declaringType, Field field, AnnotationStore annotations,
+ Type overridenType)
{
super(declaringType, field, field.getType(), annotations, field.getGenericType(), overridenType);
}
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedImpl.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedImpl.java
index 06851c2..ce9cf9c 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedImpl.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedImpl.java
@@ -70,26 +70,31 @@ abstract class AnnotatedImpl implements Annotated
}
}
+ @Override
public <T extends Annotation> T getAnnotation(Class<T> annotationType)
{
return annotations.getAnnotation(annotationType);
}
+ @Override
public Set<Annotation> getAnnotations()
{
return annotations.getAnnotations();
}
+ @Override
public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
{
return annotations.isAnnotationPresent(annotationType);
}
+ @Override
public Set<Type> getTypeClosure()
{
return new HashSet<Type>(typeClosure);
}
+ @Override
public Type getBaseType()
{
return type;
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMemberImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMemberImpl.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMemberImpl.java
index 990b313..576610a 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMemberImpl.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMemberImpl.java
@@ -16,8 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.deltaspike.core.api.metadata;
+import org.apache.deltaspike.core.api.metadata.builder.AnnotatedTypeBuilder;
+
import javax.enterprise.inject.spi.AnnotatedMember;
import javax.enterprise.inject.spi.AnnotatedType;
import java.lang.reflect.Member;
@@ -25,7 +28,7 @@ import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
/**
- *
+ * An implementation of {@link AnnotatedMember} to be used in CDI life cycle events and {@link AnnotatedTypeBuilder}.
*/
abstract class AnnotatedMemberImpl<X, M extends Member> extends AnnotatedImpl implements AnnotatedMember<X>
{
@@ -40,16 +43,19 @@ abstract class AnnotatedMemberImpl<X, M extends Member> extends AnnotatedImpl im
this.javaMember = member;
}
+ @Override
public AnnotatedType<X> getDeclaringType()
{
return declaringType;
}
+ @Override
public M getJavaMember()
{
return javaMember;
}
+ @Override
public boolean isStatic()
{
return Modifier.isStatic(javaMember.getModifiers());
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMethodImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMethodImpl.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMethodImpl.java
index 7f38b7e..67da218 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMethodImpl.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedMethodImpl.java
@@ -16,8 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.deltaspike.core.api.metadata;
+import org.apache.deltaspike.core.api.metadata.builder.AnnotatedTypeBuilder;
+
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
import java.lang.reflect.Method;
@@ -25,12 +28,15 @@ import java.lang.reflect.Type;
import java.util.Map;
/**
- * @author Stuart Douglas
+ * Implementation of {@link AnnotatedMethod} to be used in CDI life cycle events and {@link AnnotatedTypeBuilder}.
*/
class AnnotatedMethodImpl<X> extends AnnotatedCallableImpl<X, Method> implements AnnotatedMethod<X>
{
- AnnotatedMethodImpl(AnnotatedType<X> type, Method method, AnnotationStore annotations,
- Map<Integer, AnnotationStore> parameterAnnotations, Map<Integer, Type> parameterTypeOverrides)
+ /**
+ * Constructor.
+ */
+ public AnnotatedMethodImpl(AnnotatedType<X> type, Method method, AnnotationStore annotations,
+ Map<Integer, AnnotationStore> parameterAnnotations, Map<Integer, Type> parameterTypeOverrides)
{
super(type, method, method.getReturnType(), method.getParameterTypes(), method.getGenericParameterTypes(),
annotations, parameterAnnotations, method.getGenericReturnType(), parameterTypeOverrides);
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedParameterImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedParameterImpl.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedParameterImpl.java
index 8b7feb5..6f09d32 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedParameterImpl.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedParameterImpl.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.deltaspike.core.api.metadata;
import javax.enterprise.inject.spi.AnnotatedCallable;
@@ -31,19 +32,24 @@ class AnnotatedParameterImpl<X> extends AnnotatedImpl implements AnnotatedParame
private final int position;
private final AnnotatedCallable<X> declaringCallable;
- AnnotatedParameterImpl(AnnotatedCallable<X> declaringCallable, Class<?> type, int position,
- AnnotationStore annotations, Type genericType, Type typeOverride)
+ /**
+ * Constructor
+ */
+ public AnnotatedParameterImpl(AnnotatedCallable<X> declaringCallable, Class<?> type, int position,
+ AnnotationStore annotations, Type genericType, Type typeOverride)
{
super(type, annotations, genericType, typeOverride);
this.declaringCallable = declaringCallable;
this.position = position;
}
+ @Override
public AnnotatedCallable<X> getDeclaringCallable()
{
return declaringCallable;
}
+ @Override
public int getPosition()
{
return position;
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedTypeImpl.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedTypeImpl.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedTypeImpl.java
index a500f76..b5fb935 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedTypeImpl.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotatedTypeImpl.java
@@ -33,7 +33,7 @@ import java.util.Map;
import java.util.Set;
/**
- *
+ * An implementation of {@link AnnotatedType} to be used in CDI life cycle events and {@link AnnotatedTypeBuilder}.
*/
public class AnnotatedTypeImpl<X> extends AnnotatedImpl implements AnnotatedType<X>
{
@@ -106,21 +106,25 @@ public class AnnotatedTypeImpl<X> extends AnnotatedImpl implements AnnotatedType
}
}
+ @Override
public Set<AnnotatedConstructor<X>> getConstructors()
{
return Collections.unmodifiableSet(constructors);
}
+ @Override
public Set<AnnotatedField<? super X>> getFields()
{
return Collections.unmodifiableSet(fields);
}
+ @Override
public Class<X> getJavaClass()
{
return javaClass;
}
+ @Override
public Set<AnnotatedMethod<? super X>> getMethods()
{
return Collections.unmodifiableSet(methods);
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotationRedefiner.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotationRedefiner.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotationRedefiner.java
index 6774867..862f965 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotationRedefiner.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/AnnotationRedefiner.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.deltaspike.core.api.metadata;
import org.apache.deltaspike.core.api.metadata.builder.AnnotatedTypeBuilder;
@@ -27,7 +28,6 @@ import java.lang.annotation.Annotation;
* {@link AnnotatedTypeBuilder}, and receives callbacks for each annotation of
* the type is it applied for.
*
- * @author Pete Muir
* @see AnnotatedTypeBuilder
*/
public interface AnnotationRedefiner<A extends Annotation>
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/Parameter.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/Parameter.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/Parameter.java
index 3dd8016..661e151 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/Parameter.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/Parameter.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.deltaspike.core.api.metadata;
import org.apache.deltaspike.core.api.util.Reflections;
@@ -30,12 +31,18 @@ import java.lang.reflect.Type;
/**
* An implementation of Member for parameters
- *
- * @author pmuir
*/
abstract public class Parameter<X> implements AnnotatedElement
{
+ /**
+ * Creates a new {@link Parameter} using the member and position passed in.
+ *
+ * @param declaringMember {@link Method} or {@link Constructor}.
+ * @param position position of the parameter
+ * @param <X> Type of the parameter
+ * @return a new instance of Parameter
+ */
public static <X> Parameter<X> create(Member declaringMember, int position)
{
if (declaringMember instanceof Method)
@@ -147,8 +154,16 @@ abstract public class Parameter<X> implements AnnotatedElement
this.position = position;
}
+ /**
+ * Returns the actual {@link Member} declaring the parameter.
+ *
+ * @return Instance of the declaring java member.
+ */
public abstract Member getDeclaringMember();
+ /**
+ * Getter
+ */
public int getPosition()
{
return position;
@@ -178,7 +193,9 @@ abstract public class Parameter<X> implements AnnotatedElement
}
-
+ /**
+ * Returns the instance of the annotation on the member, or null if not found
+ */
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
{
for (Annotation annotation : getAnnotations())
@@ -191,16 +208,25 @@ abstract public class Parameter<X> implements AnnotatedElement
return null;
}
+ /**
+ * Getter
+ */
public Annotation[] getDeclaredAnnotations()
{
return getAnnotations();
}
+ /**
+ * Simple test if an annotation is present.
+ */
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
{
return getAnnotation(annotationClass) != null;
}
+ /**
+ * Getter
+ */
public abstract Type getBaseType();
}
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/RedefinitionContext.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/RedefinitionContext.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/RedefinitionContext.java
index 8e51683..a3aeefd 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/RedefinitionContext.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/RedefinitionContext.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.deltaspike.core.api.metadata;
import org.apache.deltaspike.core.api.metadata.builder.AnnotatedTypeBuilder;
@@ -32,7 +33,6 @@ import java.lang.reflect.Type;
/**
* Provides access to the context of an annotation redefinition.
*
- * @author Pete Muir
* @see AnnotatedTypeBuilder
* @see AnnotationRedefiner
*/
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotatedTypeBuilder.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotatedTypeBuilder.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotatedTypeBuilder.java
index 5b70ae2..c6b25ff 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotatedTypeBuilder.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotatedTypeBuilder.java
@@ -42,9 +42,11 @@ import java.util.HashMap;
import java.util.Map;
/**
- *
+ * Builder to aid in creation of a new {@link AnnotatedType} for use in CDI life cycle events.
+ * Using the builder is typically done by reading the annotations from a {@link Class} or an
+ * {@link AnnotatedType}. Once the starting class or type has been added all of annotations
+ * can be modified: constructor, parameter, class, method and fields.
*/
-//X TODO: Javadoc
public class AnnotatedTypeBuilder<X>
{
private Class<X> javaClass;
@@ -516,7 +518,7 @@ public class AnnotatedTypeBuilder<X>
*
* @param annotationType the type of the annotation for which to call the
* redefinition
- * @param redefinition the redefiniton callback
+ * @param redefinition the redefinition callback
* @throws IllegalArgumentException if the annotationType or redefinition is
* null
*/
@@ -568,7 +570,10 @@ public class AnnotatedTypeBuilder<X>
return this;
}
- protected <A extends Annotation> void redefineAnnotationBuilder(Class<A> annotationType, AnnotationRedefiner<A> redefinition, AnnotatedElement annotated, Type baseType, AnnotationBuilder builder, String elementName)
+ protected <A extends Annotation> void redefineAnnotationBuilder(Class<A> annotationType,
+ AnnotationRedefiner<A> redefinition,
+ AnnotatedElement annotated, Type baseType,
+ AnnotationBuilder builder, String elementName)
{
if (builder.isAnnotationPresent(annotationType))
{
@@ -955,6 +960,13 @@ public class AnnotatedTypeBuilder<X>
return this;
}
+ /**
+ * Override the declared type of a parameter.
+ *
+ * @param parameter the parameter to override the type on
+ * @param type the new type of the parameter
+ * @throws IllegalArgumentException if parameter or type is null
+ */
public AnnotatedTypeBuilder<X> overrideParameterType(AnnotatedParameter<? super X> parameter, Type type)
{
if (parameter.getDeclaringCallable().getJavaMember() instanceof Method)
@@ -974,11 +986,17 @@ public class AnnotatedTypeBuilder<X>
}
}
+ /**
+ * getter for the class
+ */
public Class<X> getJavaClass()
{
return javaClass;
}
+ /**
+ * setter for the class
+ */
public AnnotatedTypeBuilder<X> setJavaClass(Class<X> javaClass)
{
this.javaClass = javaClass;
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/21249467/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotationBuilder.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotationBuilder.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotationBuilder.java
index 427cf6a..e708618 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotationBuilder.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/metadata/builder/AnnotationBuilder.java
@@ -24,6 +24,7 @@ import org.apache.deltaspike.core.api.util.Reflections;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -31,7 +32,8 @@ import java.util.Map;
import java.util.Set;
/**
- *
+ * A store of annotations to be used {@link AnnotatedTypeBuilder} and other places
+ * where a collection of annotations needs manipulation.
*/
//X TODO: JavaDoc the methods
public class AnnotationBuilder
@@ -39,12 +41,21 @@ public class AnnotationBuilder
private final Map<Class<? extends Annotation>, Annotation> annotationMap;
private final Set<Annotation> annotationSet;
+ /**
+ * Default constructor.
+ */
public AnnotationBuilder()
{
this.annotationMap = new HashMap<Class<? extends Annotation>, Annotation>();
this.annotationSet = new HashSet<Annotation>();
}
+ /**
+ * Adds the annotation to the collections.
+ *
+ * @param annotation annotation to be added
+ * @return this
+ */
public AnnotationBuilder add(Annotation annotation)
{
if (annotation == null)
@@ -56,6 +67,12 @@ public class AnnotationBuilder
return this;
}
+ /**
+ * Removes the given annotation from the collections.
+ *
+ * @param annotationType to be removed
+ * @return this
+ */
public AnnotationBuilder remove(Class<? extends Annotation> annotationType)
{
if (annotationType == null)
@@ -76,12 +93,23 @@ public class AnnotationBuilder
return this;
}
+ /**
+ * Creates an {@link AnnotationStore} using the annotations from this instance.
+ *
+ * @return new AnnotationStore
+ */
public AnnotationStore create()
{
return new AnnotationStore(annotationMap, annotationSet);
}
- public AnnotationBuilder addAll(Set<Annotation> annotations)
+ /**
+ * Adds all annotations from the given collection
+ *
+ * @param annotations collection of annotations to be added
+ * @return this
+ */
+ public AnnotationBuilder addAll(Collection<Annotation> annotations)
{
for (Annotation annotation : annotations)
{
@@ -90,6 +118,12 @@ public class AnnotationBuilder
return this;
}
+ /**
+ * Adds all annotations from an {@link AnnotationStore}.
+ *
+ * @param annotations annotations to be added
+ * @return this
+ */
public AnnotationBuilder addAll(AnnotationStore annotations)
{
for (Annotation annotation : annotations.getAnnotations())
@@ -99,6 +133,12 @@ public class AnnotationBuilder
return this;
}
+ /**
+ * Adds all annotations from the given {@link AnnotatedElement}.
+ *
+ * @param element element containing annotations to be added
+ * @return this
+ */
public AnnotationBuilder addAll(AnnotatedElement element)
{
for (Annotation a : element.getAnnotations())
@@ -108,11 +148,17 @@ public class AnnotationBuilder
return this;
}
+ /**
+ * Getter.
+ */
public <T extends Annotation> T getAnnotation(Class<T> anType)
{
return Reflections.<T>cast(annotationMap.get(anType));
}
+ /**
+ * Simple check for an annotation.
+ */
public boolean isAnnotationPresent(Class<?> annotationType)
{
return annotationMap.containsKey(annotationType);