package org.springframework.roo.classpath.customdata.tagkeys; import java.util.List; import org.springframework.roo.classpath.details.InvocableMemberMetadata; import org.springframework.roo.classpath.details.annotations.AnnotatedJavaType; import org.springframework.roo.classpath.details.annotations.AnnotationMetadata; import org.springframework.roo.model.JavaSymbolName; import org.springframework.roo.model.JavaType; /** * {@link InvocableMemberMetadata}-specific implementation of * {@link IdentifiableAnnotatedJavaStructureCustomDataKey}. * * @author James Tyrrell * @since 1.1.3 */ public abstract class InvocableMemberMetadataCustomDataKey<T extends InvocableMemberMetadata> extends IdentifiableAnnotatedJavaStructureCustomDataKey<T> { private List<JavaSymbolName> parameterNames; private List<AnnotatedJavaType> parameterTypes; private List<JavaType> throwsTypes; protected InvocableMemberMetadataCustomDataKey() { super(); } protected InvocableMemberMetadataCustomDataKey(final Integer modifier, final List<AnnotationMetadata> annotations, final List<AnnotatedJavaType> parameterTypes, final List<JavaSymbolName> parameterNames, final List<JavaType> throwsTypes) { super(modifier, annotations); this.parameterTypes = parameterTypes; this.parameterNames = parameterNames; this.throwsTypes = throwsTypes; } public List<JavaSymbolName> getParameterNames() { return parameterNames; } public List<AnnotatedJavaType> getParameterTypes() { return parameterTypes; } public List<JavaType> getThrowsTypes() { return throwsTypes; } @Override public boolean meets(final T invocableMemberMetadata) throws IllegalStateException { // TODO: Add in validation logic for parameterTypes, parameterNames, // throwsTypes return super.meets(invocableMemberMetadata); } }