/** * Creates a new argument for the given type and name. * * @param type The type * @param name The name * @param <T> The generic type * @return The argument instance */ @UsedByGeneratedCode static <T> Argument<T> of( Class<T> type, String name) { return new DefaultArgument<>(type, name, AnnotationMetadata.EMPTY_METADATA, Argument.ZERO_ARGUMENTS); }
/** * @param type The type * @param name The name * @param annotationMetadata The annotation metadata * @param genericTypes The generic types */ public DefaultArgument(Class<T> type, String name, AnnotationMetadata annotationMetadata, Argument... genericTypes) { this.type = type; this.name = name; this.annotationMetadata = annotationMetadata != null ? annotationMetadata : AnnotationMetadata.EMPTY_METADATA; this.typeParameters = initializeTypeParameters(genericTypes); this.typeParameterArray = genericTypes; }
/** * Default constructor. * @param argument The wrapped argument */ EnvironmentAwareArgument(DefaultArgument<T> argument) { super(argument.getType(), argument.getName(), argument.getAnnotationMetadata(), argument.getTypeVariables(), argument.getTypeParameters()); this.annotationMetadata = initAnnotationMetadata(argument.getAnnotationMetadata()); }
TypeVariable param = params[i]; Type value = paramValues[i]; typeParameterArray[i] = new DefaultArgument(value, param.getName(), AnnotationMetadata.EMPTY_METADATA); this.typeParameters = initializeTypeParameters(this.typeParameterArray);
/** * Creates a new argument for the given type and name. * * @param type The type * @param name The name * @param typeParameters the type parameters * @param <T> The generic type * @return The argument instance */ @UsedByGeneratedCode static <T> Argument<T> of( Class<T> type, String name, @Nullable Argument... typeParameters) { return new DefaultArgument<>(type, name, AnnotationMetadata.EMPTY_METADATA, typeParameters); }
/** * Creates a new argument for the given type and name. * * @param type The type * @param name The name * @param annotationMetadata the annotation metadata * @param typeParameters the type parameters * @param <T> The generic type * @return The argument instance */ @UsedByGeneratedCode static <T> Argument<T> of( Class<T> type, String name, AnnotationMetadata annotationMetadata, @Nullable Argument... typeParameters) { return new DefaultArgument<>(type, name, annotationMetadata, typeParameters); }
/** * Creates a new argument for the given type and name. * * @param type The type * @param typeParameters The parameters type * @param <T> The generic type * @return The argument instance */ @UsedByGeneratedCode static <T> Argument<T> of( Class<T> type, @Nullable Argument... typeParameters) { return new DefaultArgument<>(type, NameUtils.decapitalize(type.getSimpleName()), AnnotationMetadata.EMPTY_METADATA, typeParameters); }
/** * Creates a new argument for the given type and name. * * @param type The type * @param <T> The generic type * @return The argument instance */ @UsedByGeneratedCode static <T> Argument<T> of( Class<T> type) { return new DefaultArgument<>(type, NameUtils.decapitalize(type.getSimpleName()), AnnotationMetadata.EMPTY_METADATA, Argument.ZERO_ARGUMENTS); }
/** * Creates a new argument for the given type and name. * * @param type The type * @param typeParameters the parameters type * @param <T> The generic type * @return The argument instance */ @UsedByGeneratedCode static <T> Argument<T> of(Class<T> type, @Nullable Class<?>... typeParameters) { if (typeParameters == null) { return of(type); } TypeVariable<Class<T>>[] parameters = type.getTypeParameters(); int len = typeParameters.length; if (parameters.length != len) { throw new IllegalArgumentException("Type parameter length does not match. Required: " + parameters.length + ", Specified: " + len); } Argument[] typeArguments = new Argument[len]; for (int i = 0; i < parameters.length; i++) { TypeVariable<Class<T>> parameter = parameters[i]; typeArguments[i] = Argument.of(typeParameters[i], parameter.getName()); } return new DefaultArgument<>(type, NameUtils.decapitalize(type.getSimpleName()), AnnotationMetadata.EMPTY_METADATA, typeArguments); }