/** * {@code true} if {@code type} is a {@link Set} type. */ static boolean isSet(TypeMirror type) { return MoreTypes.isType(type) && MoreTypes.isTypeOf(Set.class, type); }
/** Returns true if the type represents a producer-related framework type. */ static boolean isProducerType(TypeMirror type) { return isType(type) && typeIsOneOf(PRODUCTION_TYPES, type); }
/** * {@code true} if {@code type} is a {@link Map} type. */ static boolean isMap(TypeMirror type) { return MoreTypes.isType(type) && MoreTypes.isTypeOf(Map.class, type); }
/** Returns true if the type represents a framework type. */ static boolean isFrameworkType(TypeMirror type) { return isType(type) && (typeIsOneOf(PROVISION_TYPES, type) || typeIsOneOf(PRODUCTION_TYPES, type)); }
/** * {@code true} if {@link #valueType()} is a {@code clazz}. * * @throws IllegalStateException if {@link #isRawType()} is true. */ boolean valuesAreTypeOf(Class<?> clazz) { return MoreTypes.isType(valueType()) && MoreTypes.isTypeOf(clazz, valueType()); }
private boolean isPlainSet(TypeMirror returnType) { if (!SetType.isSet(returnType)) { return false; } SetType setType = SetType.from(returnType); return !setType.isRawType() && MoreTypes.isType(setType.elementType()) // No wildcards. && !isFrameworkType(setType.elementType()); } }
/** * Returns {@code true} if {@code type} is a parameterized type of {@code kind}'s {@link * #frameworkClass(RequestKind) framework class}. */ private static boolean matchesKind(RequestKind kind, TypeMirror type) { return isType(type) && isTypeOf(frameworkClass(kind), type) && !asDeclared(type).getTypeArguments().isEmpty(); }
private boolean isPlainMap(TypeMirror returnType) { if (!MapType.isMap(returnType)) { return false; } MapType mapType = MapType.from(returnType); return !mapType.isRawType() && MoreTypes.isType(mapType.valueType()) // No wildcards. && !isFrameworkType(mapType.valueType()); }
/** * {@code true} if {@link #elementType()} is a {@code clazz}. */ boolean elementsAreTypeOf(Class<?> clazz) { return MoreTypes.isType(elementType()) && MoreTypes.isTypeOf(clazz, elementType()); }
if (frameworkType.isPresent() && frameworkType.get().equals(elements.getTypeElement(Producer.class)) && isType(returnType)) { if (isFutureType(methodType.getReturnType())) { returnType = getOnlyElement(MoreTypes.asDeclared(returnType).getTypeArguments());
private static Optional<TypeMirror> unwrapListenableFuture( ValidationReport.Builder<ExecutableElement> reportBuilder, TypeMirror type) { if (MoreTypes.isType(type) && MoreTypes.isTypeOf(ListenableFuture.class, type)) { DeclaredType declaredType = MoreTypes.asDeclared(type); if (declaredType.getTypeArguments().isEmpty()) { reportBuilder.addError("@Produces methods cannot return a raw ListenableFuture"); return Optional.empty(); } else { return Optional.of((TypeMirror) getOnlyElement(declaredType.getTypeArguments())); } } return Optional.of(type); } }
/** * Unwraps the framework class(es) of {@code requestKind} from {@code type}. If {@code * requestKind} is {@link RequestKind#INSTANCE}, this acts as an identity function. * * @throws TypeNotPresentException if {@code type} is an {@link javax.lang.model.type.ErrorType}, * which may mean that the type will be generated in a later round of processing * @throws IllegalArgumentException if {@code type} is not wrapped with {@code requestKind}'s * framework class(es). */ static TypeMirror extractKeyType(RequestKind requestKind, TypeMirror type) { checkTypePresent(type); switch (requestKind) { case INSTANCE: return type; case PROVIDER_OF_LAZY: return extractKeyType(LAZY, extractKeyType(PROVIDER, type)); default: checkArgument(isType(type) && isTypeOf(frameworkClass(requestKind), type)); return getOnlyElement(MoreTypes.asDeclared(type).getTypeArguments()); } }
requestElement); if (MoreTypes.isType(keyType) && MoreTypes.isTypeOf(MembersInjector.class, keyType)) { DeclaredType membersInjectorType = MoreTypes.asDeclared(keyType); if (membersInjectorType.getTypeArguments().isEmpty()) {
}); if (isType(requestKey.type()) && isTypeOf(MembersInjector.class, requestKey.type())) { injectBindingRegistry .getOrFindMembersInjectorProvisionBinding(requestKey)