Author: simonetripodi Date: Tue Jan 26 10:29:31 2010 New Revision: 903157 URL: http://svn.apache.org/viewvc?rev=903157&view=rev Log: the AnnotationRuleProvider is now an abstract class which fields are final refactored all the already implemented providers changed handlers implementations removed @SuppressWarnings("unchecked") thanks to a better generic implementation
Removed: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/AbstractMethodProvider.java Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/AnnotationRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/DefaultLoaderHandler.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/MethodHandler.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/SetPropertiesLoaderHandler.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/AttributeCallParamRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/BeanPropertySetterRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallMethodRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallParamRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/FactoryCreateRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/ObjectCreateRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/PathCallParamRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetNextRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetPropertiesRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetRootRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetTopRuleProvider.java commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/StackCallParamRuleProvider.java Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/AnnotationRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/AnnotationRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/AnnotationRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/AnnotationRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -27,7 +27,17 @@ * @version $Id$ * @since 2.1 */ -public interface AnnotationRuleProvider<A extends Annotation, E extends AnnotatedElement, R extends Rule> { +public abstract class AnnotationRuleProvider<A extends Annotation, E extends AnnotatedElement, R extends Rule> { + + /** + * The annotation instance reference. + */ + private final A annotation; + + /** + * The annotated element reference. + */ + private final E element; /** * Initializes the provider. @@ -35,7 +45,28 @@ * @param annotation the annotation instance. * @param element the annotated element reference. */ - void init(A annotation, E element); + public AnnotationRuleProvider(A annotation, E element) { + this.annotation = annotation; + this.element = element; + } + + /** + * Returns the annotation instance. + * + * @return the annotation instance. + */ + public A getAnnotation() { + return this.annotation; + } + + /** + * Returns the annotation instance. + * + * @return the annotation instance. + */ + public E getElement() { + return this.element; + } /** * Provides an instance of {...@link Rule}. @@ -44,6 +75,6 @@ * * @return an instance of {...@link Rule}. */ - R get(); + public abstract R get(); } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/DefaultLoaderHandler.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/DefaultLoaderHandler.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/DefaultLoaderHandler.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/DefaultLoaderHandler.java Tue Jan 26 10:29:31 2010 @@ -19,11 +19,11 @@ import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; -import org.apache.commons.digester.Rule; import org.apache.commons.digester.annotations.AnnotationRuleProvider; import org.apache.commons.digester.annotations.DigesterLoaderHandler; import org.apache.commons.digester.annotations.DigesterRule; import org.apache.commons.digester.annotations.FromAnnotationsRuleSet; +import org.apache.commons.digester.annotations.utils.AnnotationRuleProviderUtils; import org.apache.commons.digester.annotations.utils.AnnotationUtils; /** @@ -38,19 +38,10 @@ /** * {...@inheritdoc} */ - @SuppressWarnings("unchecked") public void handle(Annotation annotation, AnnotatedElement element, FromAnnotationsRuleSet ruleSet) { DigesterRule digesterRule = annotation.annotationType().getAnnotation(DigesterRule.class); - try { - AnnotationRuleProvider<Annotation, AnnotatedElement, Rule> ruleProvider = - (AnnotationRuleProvider<Annotation, AnnotatedElement, Rule>) digesterRule.providedBy().newInstance(); - ruleProvider.init(annotation, element); - ruleSet.addRuleProvider(AnnotationUtils.getAnnotationPattern(annotation), ruleProvider); - } catch (Throwable t) { - throw new RuntimeException("Impossible to instantiate provider of type '" - + digesterRule.providedBy().getName() - + "', see nested exceptions", t); - } + ruleSet.addRuleProvider(AnnotationUtils.getAnnotationPattern(annotation), + AnnotationRuleProviderUtils.newProvider(digesterRule.providedBy(), annotation, element)); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/MethodHandler.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/MethodHandler.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/MethodHandler.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/MethodHandler.java Tue Jan 26 10:29:31 2010 @@ -17,18 +17,16 @@ package org.apache.commons.digester.annotations.handlers; import java.lang.annotation.Annotation; -import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import org.apache.commons.digester.Rule; -import org.apache.commons.digester.annotations.AnnotationRuleProvider; import org.apache.commons.digester.annotations.CreationRule; import org.apache.commons.digester.annotations.DigesterLoader; import org.apache.commons.digester.annotations.DigesterLoaderHandler; import org.apache.commons.digester.annotations.DigesterRule; import org.apache.commons.digester.annotations.DigesterRuleList; import org.apache.commons.digester.annotations.FromAnnotationsRuleSet; +import org.apache.commons.digester.annotations.utils.AnnotationRuleProviderUtils; import org.apache.commons.digester.annotations.utils.AnnotationUtils; /** @@ -91,17 +89,14 @@ } } - /** - * - * - * @param method - * @param type - * @param ruleSet - */ private void doHandle(Annotation methodAnnotation, Method method, Class<?> type, FromAnnotationsRuleSet ruleSet) { if (type.isInterface() && Modifier.isAbstract(type.getModifiers())) { - throw new IllegalArgumentException(""); + throw new IllegalArgumentException("Impossible to proceed analyzing " + + methodAnnotation + + ", specified type '" + + type.getName() + + "' is an interface/abstract"); } for (Annotation annotation : type.getAnnotations()) { @@ -109,31 +104,15 @@ } } - /** - * - * - * @param annotation - * @param method - * @param type - * @param ruleSet - */ - @SuppressWarnings("unchecked") private void doHandle(Annotation methodAnnotation, Annotation annotation, Method method, Class<?> type, FromAnnotationsRuleSet ruleSet) { if (annotation.annotationType().isAnnotationPresent(DigesterRule.class) && annotation.annotationType().isAnnotationPresent(CreationRule.class)) { DigesterLoader.addRules(type, ruleSet); DigesterRule digesterRule = methodAnnotation.annotationType().getAnnotation(DigesterRule.class); - try { - AnnotationRuleProvider<Annotation, AnnotatedElement, Rule> ruleProvider = - (AnnotationRuleProvider<Annotation, AnnotatedElement, Rule>) digesterRule.providedBy().newInstance(); - ruleProvider.init(annotation, method); - ruleSet.addRuleProvider(AnnotationUtils.getAnnotationPattern(annotation), ruleProvider); - } catch (Throwable t) { - throw new RuntimeException("Impossible to instantiate provider of type '" - + digesterRule.providedBy().getName() - + "', see nested exceptions", t); - } + + ruleSet.addRuleProvider(AnnotationUtils.getAnnotationPattern(annotation), + AnnotationRuleProviderUtils.newProvider(digesterRule.providedBy(), methodAnnotation, method)); } else if (annotation.annotationType().isAnnotationPresent(DigesterRuleList.class)) { // check if it is one of the *.List annotation Annotation[] annotations = AnnotationUtils.getAnnotationsArrayValue(annotation); Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/SetPropertiesLoaderHandler.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/SetPropertiesLoaderHandler.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/SetPropertiesLoaderHandler.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/handlers/SetPropertiesLoaderHandler.java Tue Jan 26 10:29:31 2010 @@ -38,7 +38,7 @@ SetPropertiesRuleProvider ruleProvider = ruleSet.getProvider(annotation.pattern(), SetPropertiesRuleProvider.class); if (ruleProvider == null) { - ruleProvider = new SetPropertiesRuleProvider(); + ruleProvider = new SetPropertiesRuleProvider(annotation, element); ruleSet.addRuleProvider(annotation.pattern(), ruleProvider); } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/AttributeCallParamRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/AttributeCallParamRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/AttributeCallParamRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/AttributeCallParamRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -28,31 +28,25 @@ * @version $Id$ * @since 2.1 */ -public final class AttributeCallParamRuleProvider implements AnnotationRuleProvider<AttributeCallParam, MethodArgument, CallParamRule> { +public final class AttributeCallParamRuleProvider extends AnnotationRuleProvider<AttributeCallParam, MethodArgument, CallParamRule> { /** - * The parameter index. + * Creates a new provider of {...@link CallParamRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. */ - private int paramIndex; - - /** - * The attribute name. - */ - private String attributeName; - - /** - * {...@inheritdoc} - */ - public void init(AttributeCallParam annotation, MethodArgument element) { - this.paramIndex = element.getIndex(); - this.attributeName = annotation.attribute(); + public AttributeCallParamRuleProvider(AttributeCallParam annotation, + MethodArgument element) { + super(annotation, element); } /** * {...@inheritdoc} */ public CallParamRule get() { - return new CallParamRule(this.paramIndex, this.attributeName); + return new CallParamRule(this.getElement().getIndex(), + this.getAnnotation().attribute()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/BeanPropertySetterRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/BeanPropertySetterRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/BeanPropertySetterRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/BeanPropertySetterRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -28,25 +28,24 @@ * @version $Id$ * @since 2.1 */ -public final class BeanPropertySetterRuleProvider implements AnnotationRuleProvider<BeanPropertySetter, Field, BeanPropertySetterRule> { +public final class BeanPropertySetterRuleProvider extends AnnotationRuleProvider<BeanPropertySetter, Field, BeanPropertySetterRule> { /** - * The property name reference. + * Creates a new provider of {...@link BeanPropertySetterRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. */ - private String propertyName; - - /** - * {...@inheritdoc} - */ - public void init(BeanPropertySetter annotation, Field element) { - this.propertyName = element.getName(); + public BeanPropertySetterRuleProvider(BeanPropertySetter annotation, + Field element) { + super(annotation, element); } /** * {...@inheritdoc} */ public BeanPropertySetterRule get() { - return new BeanPropertySetterRule(this.propertyName); + return new BeanPropertySetterRule(this.getElement().getName()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallMethodRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallMethodRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallMethodRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallMethodRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -28,31 +28,25 @@ * @version $Id$ * @since 2.1 */ -public final class CallMethodRuleProvider implements AnnotationRuleProvider<CallMethod, Method, CallMethodRule> { +public final class CallMethodRuleProvider extends AnnotationRuleProvider<CallMethod, Method, CallMethodRule> { /** - * The method name. + * Creates a new provider of {...@link CallMethodRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. */ - private String methodName; - - /** - * The parameters types. - */ - private Class<?>[] paramTypes; - - /** - * {...@inheritdoc} - */ - public void init(CallMethod annotation, Method element) { - this.methodName = element.getName(); - this.paramTypes = element.getParameterTypes(); + public CallMethodRuleProvider(CallMethod annotation, Method element) { + super(annotation, element); } /** * {...@inheritdoc} */ public CallMethodRule get() { - return new CallMethodRule(this.methodName, this.paramTypes.length, this.paramTypes); + return new CallMethodRule(this.getElement().getName(), + this.getElement().getParameterTypes().length, + this.getElement().getParameterTypes()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallParamRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallParamRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallParamRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/CallParamRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -28,25 +28,23 @@ * @version $Id$ * @since 2.1 */ -public final class CallParamRuleProvider implements AnnotationRuleProvider<CallParam, MethodArgument, CallParamRule> { +public final class CallParamRuleProvider extends AnnotationRuleProvider<CallParam, MethodArgument, CallParamRule> { /** - * The parameter index. + * Creates a new provider of {...@link CallParamRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. */ - private int paramIndex; - - /** - * {...@inheritdoc} - */ - public void init(CallParam annotation, MethodArgument element) { - this.paramIndex = element.getIndex(); + public CallParamRuleProvider(CallParam annotation, MethodArgument element) { + super(annotation, element); } /** * {...@inheritdoc} */ public CallParamRule get() { - return new CallParamRule(this.paramIndex); + return new CallParamRule(this.getElement().getIndex()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/FactoryCreateRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/FactoryCreateRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/FactoryCreateRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/FactoryCreateRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -26,31 +26,24 @@ * @version $Id$ * @since 2.1 */ -public final class FactoryCreateRuleProvider implements AnnotationRuleProvider<FactoryCreate, Class<?>, FactoryCreateRule> { +public final class FactoryCreateRuleProvider extends AnnotationRuleProvider<FactoryCreate, Class<?>, FactoryCreateRule> { /** - * The factory class reference. + * Creates a new provider of {...@link FactoryCreateRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. */ - private Class<?> factoryClass; - - /** - * if true, exceptions thrown by the object creation factory will be ignored - */ - private boolean ignoreCreateExceptions; - - /** - * {...@inheritdoc} - */ - public void init(FactoryCreate annotation, Class<?> element) { - this.factoryClass = annotation.factoryClass(); - this.ignoreCreateExceptions = annotation.ignoreCreateExceptions(); + public FactoryCreateRuleProvider(FactoryCreate annotation, Class<?> element) { + super(annotation, element); } /** * {...@inheritdoc} */ public FactoryCreateRule get() { - return new FactoryCreateRule(this.factoryClass, this.ignoreCreateExceptions); + return new FactoryCreateRule(this.getAnnotation().factoryClass(), + this.getAnnotation().ignoreCreateExceptions()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/ObjectCreateRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/ObjectCreateRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/ObjectCreateRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/ObjectCreateRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -26,25 +26,23 @@ * @version $Id$ * @since 2.1 */ -public final class ObjectCreateRuleProvider implements AnnotationRuleProvider<ObjectCreate, Class<?>, ObjectCreateRule> { +public final class ObjectCreateRuleProvider extends AnnotationRuleProvider<ObjectCreate, Class<?>, ObjectCreateRule> { /** - * Java class of the object to be created. + * Creates a new provider of {...@link ObjectCreateRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. */ - private Class<?> type; - - /** - * {...@inheritdoc} - */ - public void init(ObjectCreate annotation, Class<?> element) { - this.type = element; + public ObjectCreateRuleProvider(ObjectCreate annotation, Class<?> element) { + super(annotation, element); } /** * {...@inheritdoc} */ public ObjectCreateRule get() { - return new ObjectCreateRule(this.type); + return new ObjectCreateRule(this.getElement()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/PathCallParamRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/PathCallParamRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/PathCallParamRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/PathCallParamRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -27,25 +27,24 @@ * @version $Id$ * @since 2.1 */ -public final class PathCallParamRuleProvider implements AnnotationRuleProvider<PathCallParam, MethodArgument, PathCallParamRule> { +public final class PathCallParamRuleProvider extends AnnotationRuleProvider<PathCallParam, MethodArgument, PathCallParamRule> { /** - * The parameter index. + * Creates a new provider of {...@link PathCallParamRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. */ - private int paramIndex; - - /** - * {...@inheritdoc} - */ - public void init(PathCallParam annotation, MethodArgument element) { - this.paramIndex = element.getIndex(); + public PathCallParamRuleProvider(PathCallParam annotation, + MethodArgument element) { + super(annotation, element); } /** * {...@inheritdoc} */ public PathCallParamRule get() { - return new PathCallParamRule(this.paramIndex); + return new PathCallParamRule(this.getElement().getIndex()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetNextRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetNextRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetNextRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetNextRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -16,7 +16,10 @@ */ package org.apache.commons.digester.annotations.providers; +import java.lang.reflect.Method; + import org.apache.commons.digester.SetNextRule; +import org.apache.commons.digester.annotations.AnnotationRuleProvider; import org.apache.commons.digester.annotations.SetNext; /** @@ -25,13 +28,24 @@ * @version $Id$ * @since 2.1 */ -public final class SetNextRuleProvider extends AbstractMethodProvider<SetNext, SetNextRule>{ +public final class SetNextRuleProvider extends AnnotationRuleProvider<SetNext, Method, SetNextRule> { + + /** + * Creates a new provider of {...@link SetNextRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. + */ + public SetNextRuleProvider(SetNext annotation, Method element) { + super(annotation, element); + } /** * {...@inheritdoc} */ public SetNextRule get() { - return new SetNextRule(this.getMethodName(), this.getParamType()); + return new SetNextRule(this.getElement().getName(), + this.getElement().getParameterTypes()[0].getName()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetPropertiesRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetPropertiesRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetPropertiesRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetPropertiesRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -31,7 +31,7 @@ * @version $Id$ * @since 2.1 */ -public final class SetPropertiesRuleProvider implements AnnotationRuleProvider<SetProperty, Field, SetPropertiesRule> { +public final class SetPropertiesRuleProvider extends AnnotationRuleProvider<SetProperty, Field, SetPropertiesRule> { /** * The data structure that stores the aliases. @@ -39,9 +39,13 @@ private final Map<String, String> aliases = new HashMap<String, String>(); /** - * {...@inheritdoc} + * Creates a new provider of {...@link SetPropertiesRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. */ - public void init(SetProperty annotation, Field element) { + public SetPropertiesRuleProvider(SetProperty annotation, Field element) { + super(annotation, element); this.addAlias(annotation, element); } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetRootRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetRootRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetRootRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetRootRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -16,7 +16,10 @@ */ package org.apache.commons.digester.annotations.providers; +import java.lang.reflect.Method; + import org.apache.commons.digester.SetRootRule; +import org.apache.commons.digester.annotations.AnnotationRuleProvider; import org.apache.commons.digester.annotations.SetRoot; /** @@ -25,13 +28,24 @@ * @version $Id$ * @since 2.1 */ -public final class SetRootRuleProvider extends AbstractMethodProvider<SetRoot, SetRootRule>{ +public final class SetRootRuleProvider extends AnnotationRuleProvider<SetRoot, Method, SetRootRule>{ + + /** + * Creates a new provider of {...@link SetRootRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. + */ + public SetRootRuleProvider(SetRoot annotation, Method element) { + super(annotation, element); + } /** * {...@inheritdoc} */ public SetRootRule get() { - return new SetRootRule(this.getMethodName(), this.getParamType()); + return new SetRootRule(this.getElement().getName(), + this.getElement().getParameterTypes()[0].getName()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetTopRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetTopRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetTopRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/SetTopRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -16,7 +16,10 @@ */ package org.apache.commons.digester.annotations.providers; +import java.lang.reflect.Method; + import org.apache.commons.digester.SetTopRule; +import org.apache.commons.digester.annotations.AnnotationRuleProvider; import org.apache.commons.digester.annotations.SetTop; /** @@ -25,13 +28,24 @@ * @version $Id$ * @since 2.1 */ -public final class SetTopRuleProvider extends AbstractMethodProvider<SetTop, SetTopRule>{ +public final class SetTopRuleProvider extends AnnotationRuleProvider<SetTop, Method, SetTopRule>{ + + /** + * Creates a new provider of {...@link SetTopRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. + */ + public SetTopRuleProvider(SetTop annotation, Method element) { + super(annotation, element); + } /** * {...@inheritdoc} */ public SetTopRule get() { - return new SetTopRule(this.getMethodName(), this.getParamType()); + return new SetTopRule(this.getElement().getName(), + this.getElement().getParameterTypes()[0].getName()); } } Modified: commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/StackCallParamRuleProvider.java URL: http://svn.apache.org/viewvc/commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/StackCallParamRuleProvider.java?rev=903157&r1=903156&r2=903157&view=diff ============================================================================== --- commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/StackCallParamRuleProvider.java (original) +++ commons/sandbox/at-digester/trunk/src/java/org/apache/commons/digester/annotations/providers/StackCallParamRuleProvider.java Tue Jan 26 10:29:31 2010 @@ -28,31 +28,24 @@ * @version $Id$ * @since 2.1 */ -public final class StackCallParamRuleProvider implements AnnotationRuleProvider<StackCallParam, MethodArgument, CallParamRule> { +public final class StackCallParamRuleProvider extends AnnotationRuleProvider<StackCallParam, MethodArgument, CallParamRule> { /** - * The parameter index. + * Creates a new provider of {...@link CallParamRule} rule. + * + * @param annotation the annotation instance. + * @param element the annotated element reference. */ - private int paramIndex; - - /** - * The stack index. - */ - private int stackIndex; - - /** - * {...@inheritdoc} - */ - public void init(StackCallParam annotation, MethodArgument element) { - this.paramIndex = element.getIndex(); - this.stackIndex = annotation.stackIndex(); + public StackCallParamRuleProvider(StackCallParam annotation, + MethodArgument element) { + super(annotation, element); } /** * {...@inheritdoc} */ public CallParamRule get() { - return new CallParamRule(this.paramIndex, this.stackIndex); + return new CallParamRule(this.getElement().getIndex(), this.getAnnotation().stackIndex()); } }