/** * Get the value of default "value" the given annotation. * * @param annotation The annotation class * @param requiredType The required type * @param <T> The value * @return An {@link Optional} of the value */ default @Nonnull <T> Optional<T> getValue(@Nonnull String annotation, @Nonnull Class<T> requiredType) { return getValue(annotation, VALUE_MEMBER, requiredType); }
private MutableHttpResponse<Object> forStatus(AnnotationMetadata annotationMetadata) { HttpStatus status = HttpStatus.OK; if (annotationMetadata.hasAnnotation(Status.class)) { status = annotationMetadata.getValue(Status.class, HttpStatus.class).orElse(status); } return HttpResponse.status(status); }
/** * Find the first annotation name for the given stereotype. * * @param stereotype The stereotype * @return The annotation name */ default @Nonnull Optional<Class<? extends Annotation>> getAnnotationTypeByStereotype(@Nonnull Class<? extends Annotation> stereotype) { ArgumentUtils.requireNonNull("stereotype", stereotype); return getAnnotationTypeByStereotype(stereotype.getName()); }
/** * Get all of the values for the given annotation. * * @param annotationClass The annotation name * @param <T> The annotation type * @return The {@link AnnotationValue} */ @Override default @Nonnull <T extends Annotation> Optional<AnnotationValue<T>> findAnnotation(@Nonnull Class<T> annotationClass) { ArgumentUtils.requireNonNull("annotationClass", annotationClass); Repeatable repeatable = annotationClass.getAnnotation(Repeatable.class); if (repeatable != null) { List<AnnotationValue<T>> values = getAnnotationValuesByType(annotationClass); if (!values.isEmpty()) { return Optional.of(values.iterator().next()); } else { return Optional.empty(); } } else { return this.findAnnotation(annotationClass.getName()); } }
/** * Get the value of the given annotation member. * * @param annotation The annotation class * @param member The annotation member * @param requiredType The required type * @param <T> The value * @return An {@link Optional} of the value */ default @Nonnull <T> Optional<T> getValue(@Nonnull String annotation, @Nonnull String member, @Nonnull Argument<T> requiredType) { ArgumentUtils.requireNonNull("annotation", annotation); ArgumentUtils.requireNonNull("member", member); ArgumentUtils.requireNonNull("requiredType", requiredType); Optional<T> value = findAnnotation(annotation).flatMap(av -> av.get(member, requiredType)); if (!value.isPresent()) { if (hasStereotype(annotation)) { return getDefaultValue(annotation, member, requiredType); } } return value; }
if (annotationMetadata.hasStereotype(Format.class)) { final Object v = paramMap.get(argumentName); if (v != null) { definedValue = argument.getAnnotationMetadata().getValue(Bindable.class, "defaultValue", String.class).orElse(null); } else if (annotationMetadata.isAnnotationPresent(Header.class)) { String headerName = annotationMetadata.getValue(Header.class, String.class).orElse(null); if (StringUtils.isEmpty(headerName)) { headerName = NameUtils.hyphenate(argumentName); conversionService.convert(definedValue, String.class) .ifPresent(o -> headers.put(finalHeaderName, o)); } else if (annotationMetadata.isAnnotationPresent(CookieValue.class)) { String cookieName = annotationMetadata.getValue(CookieValue.class, String.class).orElse(null); if (StringUtils.isEmpty(cookieName)) { cookieName = argumentName; } else if (annotationMetadata.isAnnotationPresent(QueryValue.class)) { String parameterName = annotationMetadata.getValue(QueryValue.class, String.class).orElse(null); conversionService.convert(definedValue, ConversionContext.of(String.class).with(annotationMetadata)).ifPresent(o -> { if (!StringUtils.isEmpty(parameterName)) { } else if (annotationMetadata.isAnnotationPresent(RequestAttribute.class)) { String attributeName = annotationMetadata.getValue(Annotation.class, String.class).orElse(null); if (StringUtils.isEmpty(attributeName)) { attributeName = NameUtils.hyphenate(argumentName);
private Qualifier resolveQualifier(BeanResolutionContext resolutionContext, Argument argument) { Qualifier qualifier = null; AnnotationMetadata annotationMetadata = argument.getAnnotationMetadata(); Optional<Class<? extends Annotation>> qualifierType = annotationMetadata.getAnnotationTypeByStereotype(javax.inject.Qualifier.class); if (qualifierType.isPresent()) { qualifier = Qualifiers.byAnnotation( annotationMetadata, qualifierType.get() ); } if (qualifier == null) { Class<?>[] byType = annotationMetadata.hasDeclaredAnnotation(Type.class) ? annotationMetadata.getValue(Type.class, Class[].class).orElse(null) : null; if (byType != null) { qualifier = Qualifiers.byType(byType); } else { Optional<Qualifier> optional = resolutionContext.get(javax.inject.Qualifier.class.getName(), Map.class) .map(map -> (Qualifier) map.get(argument)); qualifier = optional.orElse(null); if (qualifier == null && isIterable() && argument.isAnnotationPresent(Parameter.class)) { qualifier = optional.orElseGet(() -> { final Optional<String> n = resolutionContext.get(Named.class.getName(), String.class); return n.map(Qualifiers::byName).orElse(null); }); } } } return qualifier; }
@Override public boolean matches(ConditionContext context) { AnnotationMetadataProvider component = context.getComponent(); AnnotationMetadata annotationMetadata = component.getAnnotationMetadata(); if (annotationMetadata.hasDeclaredAnnotation(Endpoint.class)) { Boolean defaultEnabled = annotationMetadata.getValue(Endpoint.class, "defaultEnabled", Boolean.class).orElse(true); String prefix = annotationMetadata.getValue(Endpoint.class, "prefix", String.class).orElse(null); String id = annotationMetadata.getValue(Endpoint.class, "value", String.class).orElse(null); String defaultId = annotationMetadata.getValue(Endpoint.class, "defaultConfigurationId", String.class).orElse(null); BeanContext beanContext = context.getBeanContext(); if (beanContext instanceof PropertyResolver) { PropertyResolver propertyResolver = (PropertyResolver) beanContext; Optional<Boolean> enabled = propertyResolver.getProperty(String.format("%s.%s.enabled", prefix, id), Boolean.class); if (enabled.isPresent()) { return enabled.get(); } else { enabled = propertyResolver.getProperty(String.format("%s.%s.enabled", prefix, defaultId), Boolean.class); return enabled.orElse(defaultEnabled); } } } return true; } }
public static boolean isSingleton(AnnotationMetadata annotationMetadata) { if (annotationMetadata.isAnnotationPresent(EachProperty.class) || annotationMetadata.isAnnotationPresent(EachBean.class)) { return true; } final Optional<Class<? extends Annotation>> scope = annotationMetadata.getDeclaredAnnotationTypeByStereotype(Scope.class); // is singleton logic return (scope.isPresent() && scope.get() == Singleton.class) || annotationMetadata.getValue(DefaultScope.class, Singleton.class).isPresent(); }
@Override default boolean hasStereotype(@Nullable Class<? extends Annotation> annotation) { return getAnnotationMetadata().hasStereotype(annotation); }
/** * @see AnnotationSource#isAnnotationPresent(Class) */ @Override default boolean isAnnotationPresent(@Nonnull Class<? extends Annotation> annotationClass) { //noinspection ConstantConditions if (annotationClass == null) { return false; } return hasAnnotation(annotationClass); }
List<? extends AnnotationValue<? extends Annotation>> values = getAnnotationValuesByType(annotation); if (!values.isEmpty()) { return values.iterator().next().get(member, requiredType); Optional<? extends AnnotationValue<? extends Annotation>> values = findAnnotation(annotation); Optional<T> value = values.flatMap(av -> av.get(member, requiredType)); if (!value.isPresent()) { if (hasStereotype(annotation)) { return getDefaultValue(annotation, member, requiredType);
/** * @see AnnotationSource#isAnnotationPresent(Class) */ @Override default boolean isDeclaredAnnotationPresent(@Nonnull Class<? extends Annotation> annotationClass) { //noinspection ConstantConditions if (annotationClass == null) { return false; } return hasDeclaredAnnotation(annotationClass); }
@Override default @Nonnull <T extends Annotation> Optional<AnnotationValue<T>> findAnnotation(@Nonnull Class<T> annotationClass) { return getAnnotationMetadata().findAnnotation(annotationClass); }
if (candidate.getAnnotationMetadata().hasStereotype(Replaces.class)) { replacedTypes.add(candidate); if (annotationMetadata.hasDeclaredStereotype(Infrastructure.class)) { return false;
@Override default boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) { return getAnnotationMetadata().isAnnotationPresent(annotationClass); }
if (annotationMetadata.hasStereotype(Format.class)) { final Object v = paramMap.get(argumentName); if (v != null) { definedValue = argument.getAnnotationMetadata().getValue(Bindable.class, "defaultValue", String.class).orElse(null); } else if (annotationMetadata.isAnnotationPresent(Header.class)) { String headerName = annotationMetadata.getValue(Header.class, String.class).orElse(null); if (StringUtils.isEmpty(headerName)) { headerName = NameUtils.hyphenate(argumentName); conversionService.convert(definedValue, String.class) .ifPresent(o -> headers.put(finalHeaderName, o)); } else if (annotationMetadata.isAnnotationPresent(CookieValue.class)) { String cookieName = annotationMetadata.getValue(CookieValue.class, String.class).orElse(null); if (StringUtils.isEmpty(cookieName)) { cookieName = argumentName; } else if (annotationMetadata.isAnnotationPresent(QueryValue.class)) { String parameterName = annotationMetadata.getValue(QueryValue.class, String.class).orElse(null); conversionService.convert(definedValue, ConversionContext.of(String.class).with(annotationMetadata)).ifPresent(o -> { if (!StringUtils.isEmpty(parameterName)) { } else if (annotationMetadata.isAnnotationPresent(PathVariable.class)) { String parameterName = annotationMetadata.getValue(PathVariable.class, String.class).orElse(null); conversionService.convert(definedValue, ConversionContext.of(String.class).with(annotationMetadata)).ifPresent(o -> { if (!StringUtils.isEmpty(o)) {
private Qualifier resolveQualifier(BeanResolutionContext resolutionContext, Argument argument) { Qualifier qualifier = null; AnnotationMetadata annotationMetadata = argument.getAnnotationMetadata(); Optional<Class<? extends Annotation>> qualifierType = annotationMetadata.getAnnotationTypeByStereotype(javax.inject.Qualifier.class); if (qualifierType.isPresent()) { qualifier = Qualifiers.byAnnotation( annotationMetadata, qualifierType.get() ); } if (qualifier == null) { Class<?>[] byType = annotationMetadata.hasDeclaredAnnotation(Type.class) ? annotationMetadata.getValue(Type.class, Class[].class).orElse(null) : null; if (byType != null) { qualifier = Qualifiers.byType(byType); } else { Optional<Qualifier> optional = resolutionContext.get(javax.inject.Qualifier.class.getName(), Map.class) .map(map -> (Qualifier) map.get(argument)); qualifier = optional.orElse(null); if (qualifier == null && isIterable() && argument.isAnnotationPresent(Parameter.class)) { qualifier = optional.orElseGet(() -> { final Optional<String> n = resolutionContext.get(Named.class.getName(), String.class); return n.map(Qualifiers::byName).orElse(null); }); } } } return qualifier; }
@Override public boolean matches(ConditionContext context) { AnnotationMetadataProvider component = context.getComponent(); AnnotationMetadata annotationMetadata = component.getAnnotationMetadata(); if (annotationMetadata.hasDeclaredAnnotation(Endpoint.class)) { Boolean defaultEnabled = annotationMetadata.getValue(Endpoint.class, "defaultEnabled", Boolean.class).orElse(true); String prefix = annotationMetadata.getValue(Endpoint.class, "prefix", String.class).orElse(null); String id = annotationMetadata.getValue(Endpoint.class, "value", String.class).orElse(null); String defaultId = annotationMetadata.getValue(Endpoint.class, "defaultConfigurationId", String.class).orElse(null); BeanContext beanContext = context.getBeanContext(); if (beanContext instanceof PropertyResolver) { PropertyResolver propertyResolver = (PropertyResolver) beanContext; Optional<Boolean> enabled = propertyResolver.getProperty(String.format("%s.%s.enabled", prefix, id), Boolean.class); if (enabled.isPresent()) { return enabled.get(); } else { enabled = propertyResolver.getProperty(String.format("%s.%s.enabled", prefix, defaultId), Boolean.class); return enabled.orElse(defaultEnabled); } } } return true; } }
@Override default boolean hasStereotype(String annotation) { return getAnnotationMetadata().hasStereotype(annotation); }