diff options
author | Éamonn McManus <emcmanus@google.com> | 2020-10-26 14:55:37 -0700 |
---|---|---|
committer | Google Java Core Libraries <java-core-libraries-team+copybara@google.com> | 2020-10-26 14:56:07 -0700 |
commit | 4c79e5ca534b8dbb0b72ded92764f66d7edd64f2 (patch) | |
tree | c7b19a6748a688c7054c4f7be174f892203fe926 /factory | |
parent | aa478015bcb8b26b0ae69601822989a3f1cd09b4 (diff) | |
download | auto-4c79e5ca534b8dbb0b72ded92764f66d7edd64f2.tar.gz |
Modernize AutoFactory source.
* Replace `com.google.common.base.Optional` by `java.util.Optional`.
* Use streams and lambdas where appropriate.
* Use diamond operator where appropriate.
* Remove type arguments made unnecessary by Java 8's improved type inference.
* Apply some automated fixes.
RELNOTES=n/a
PiperOrigin-RevId: 339124210
Diffstat (limited to 'factory')
11 files changed, 98 insertions, 125 deletions
diff --git a/factory/src/main/java/com/google/auto/factory/processor/AutoFactoryDeclaration.java b/factory/src/main/java/com/google/auto/factory/processor/AutoFactoryDeclaration.java index e2da6eae..ec3642a9 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/AutoFactoryDeclaration.java +++ b/factory/src/main/java/com/google/auto/factory/processor/AutoFactoryDeclaration.java @@ -27,7 +27,6 @@ import static javax.tools.Diagnostic.Kind.ERROR; import com.google.auto.factory.AutoFactory; import com.google.auto.value.AutoValue; -import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; @@ -36,6 +35,7 @@ import com.google.common.collect.ImmutableSet; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Optional; import javax.annotation.processing.Messager; import javax.lang.model.SourceVersion; import javax.lang.model.element.AnnotationMirror; @@ -110,23 +110,22 @@ abstract class AutoFactoryDeclaration { messager.printMessage(ERROR, String.format("\"%s\" is not a valid Java identifier", className), element, mirror, classNameValue); - return Optional.absent(); + return Optional.empty(); } AnnotationValue extendingValue = checkNotNull(values.get("extending")); TypeElement extendingType = AnnotationValues.asType(extendingValue); if (extendingType == null) { - messager.printMessage(ERROR, "Unable to find the type: " - + extendingValue.getValue().toString(), + messager.printMessage(ERROR, "Unable to find the type: " + extendingValue.getValue(), element, mirror, extendingValue); - return Optional.absent(); + return Optional.empty(); } else if (!isValidSupertypeForClass(extendingType)) { messager.printMessage(ERROR, String.format("%s is not a valid supertype for a factory. " + "Supertypes must be non-final classes.", extendingType.getQualifiedName()), element, mirror, extendingValue); - return Optional.absent(); + return Optional.empty(); } ImmutableList<ExecutableElement> noParameterConstructors = FluentIterable.from(ElementFilter.constructorsIn(extendingType.getEnclosedElements())) @@ -136,13 +135,13 @@ abstract class AutoFactoryDeclaration { } }) .toList(); - if (noParameterConstructors.size() == 0) { + if (noParameterConstructors.isEmpty()) { messager.printMessage(ERROR, String.format("%s is not a valid supertype for a factory. " + "Factory supertypes must have a no-arg constructor.", extendingType.getQualifiedName()), element, mirror, extendingValue); - return Optional.absent(); + return Optional.empty(); } else if (noParameterConstructors.size() > 1) { throw new IllegalStateException("Multiple constructors with no parameters??"); } @@ -161,7 +160,7 @@ abstract class AutoFactoryDeclaration { new AutoValue_AutoFactoryDeclaration( getAnnotatedType(element), element, - className.isEmpty() ? Optional.<String>absent() : Optional.of(className), + className.isEmpty() ? Optional.empty() : Optional.of(className), extendingType, implementingTypes, allowSubclasses, diff --git a/factory/src/main/java/com/google/auto/factory/processor/AutoFactoryProcessor.java b/factory/src/main/java/com/google/auto/factory/processor/AutoFactoryProcessor.java index 5cc1d94d..b07786a5 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/AutoFactoryProcessor.java +++ b/factory/src/main/java/com/google/auto/factory/processor/AutoFactoryProcessor.java @@ -19,7 +19,6 @@ import com.google.auto.common.MoreTypes; import com.google.auto.factory.AutoFactory; import com.google.auto.factory.Provided; import com.google.auto.service.AutoService; -import com.google.common.base.Optional; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableListMultimap; @@ -31,6 +30,7 @@ import java.io.IOException; import java.util.Arrays; import java.util.Comparator; import java.util.List; +import java.util.Optional; import java.util.Set; import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.Messager; diff --git a/factory/src/main/java/com/google/auto/factory/processor/Elements2.java b/factory/src/main/java/com/google/auto/factory/processor/Elements2.java index 30230f7f..fa00454e 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/Elements2.java +++ b/factory/src/main/java/com/google/auto/factory/processor/Elements2.java @@ -22,10 +22,10 @@ import static javax.lang.model.element.ElementKind.PACKAGE; import static javax.lang.model.element.Modifier.FINAL; import static javax.lang.model.element.Modifier.STATIC; +import com.google.auto.common.MoreTypes; import com.google.common.collect.ImmutableSet; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.TypeElement; -import javax.lang.model.type.DeclaredType; import javax.lang.model.type.ExecutableType; import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeMirror; @@ -72,11 +72,11 @@ final class Elements2 { throw new IllegalStateException( "Expected subTypeElement.asType() to return a class/interface type."); } - TypeMirror subExecutableTypeMirror = types.asMemberOf( - (DeclaredType) subTypeMirror, executableElement); + TypeMirror subExecutableTypeMirror = + types.asMemberOf(MoreTypes.asDeclared(subTypeMirror), executableElement); if (!subExecutableTypeMirror.getKind().equals(TypeKind.EXECUTABLE)) { throw new IllegalStateException("Expected subExecutableTypeMirror to be an executable type."); } - return (ExecutableType) subExecutableTypeMirror; + return MoreTypes.asExecutable(subExecutableTypeMirror); } } diff --git a/factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptor.java b/factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptor.java index 5ed2307a..090ac27a 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptor.java +++ b/factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptor.java @@ -17,16 +17,15 @@ package com.google.auto.factory.processor; import com.google.auto.value.AutoValue; import com.google.common.base.CharMatcher; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; -import java.util.Collection; +import com.google.common.collect.Streams; import java.util.HashSet; -import java.util.Map.Entry; +import java.util.Optional; import java.util.Set; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.type.TypeMirror; @@ -60,7 +59,7 @@ abstract class FactoryDescriptor { } private static class UniqueNameSet { - private final Set<String> uniqueNames = new HashSet<String>(); + private final Set<String> uniqueNames = new HashSet<>(); /** * Generates a unique name using {@code base}. If {@code base} has not yet been added, it will @@ -92,33 +91,37 @@ abstract class FactoryDescriptor { } ImmutableMap.Builder<Key, ProviderField> providersBuilder = ImmutableMap.builder(); UniqueNameSet uniqueNames = new UniqueNameSet(); - for (Entry<Key, Collection<Parameter>> entry : - parametersForProviders.build().asMap().entrySet()) { - Key key = entry.getKey(); - switch (entry.getValue().size()) { - case 0: - throw new AssertionError(); - case 1: - Parameter parameter = Iterables.getOnlyElement(entry.getValue()); - providersBuilder.put( - key, - ProviderField.create( - uniqueNames.getUniqueName(parameter.name() + "Provider"), - key, - parameter.nullable())); - break; - default: - String providerName = - uniqueNames.getUniqueName( - invalidIdentifierCharacters.replaceFrom(key.toString(), '_') + "Provider"); - Optional<AnnotationMirror> nullable = Optional.absent(); - for (Parameter param : entry.getValue()) { - nullable = nullable.or(param.nullable()); - } - providersBuilder.put(key, ProviderField.create(providerName, key, nullable)); - break; - } - } + parametersForProviders + .build() + .asMap() + .forEach( + (key, parameters) -> { + switch (parameters.size()) { + case 0: + throw new AssertionError(); + case 1: + Parameter parameter = Iterables.getOnlyElement(parameters); + providersBuilder.put( + key, + ProviderField.create( + uniqueNames.getUniqueName(parameter.name() + "Provider"), + key, + parameter.nullable())); + break; + default: + String providerName = + uniqueNames.getUniqueName( + invalidIdentifierCharacters.replaceFrom(key.toString(), '_') + + "Provider"); + Optional<AnnotationMirror> nullable = + parameters.stream() + .map(Parameter::nullable) + .flatMap(Streams::stream) + .findFirst(); + providersBuilder.put(key, ProviderField.create(providerName, key, nullable)); + break; + } + }); ImmutableBiMap<FactoryMethodDescriptor, ImplementationMethodDescriptor> duplicateMethodDescriptors = @@ -129,8 +132,8 @@ abstract class FactoryDescriptor { getDeduplicatedMethodDescriptors(methodDescriptors, duplicateMethodDescriptors); ImmutableSet<ImplementationMethodDescriptor> deduplicatedImplementationMethodDescriptors = - ImmutableSet.copyOf( - Sets.difference(implementationMethodDescriptors, duplicateMethodDescriptors.values())); + Sets.difference(implementationMethodDescriptors, duplicateMethodDescriptors.values()) + .immutableCopy(); return new AutoValue_FactoryDescriptor( name, diff --git a/factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptorGenerator.java b/factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptorGenerator.java index d2331f42..4faa6e7a 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptorGenerator.java +++ b/factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptorGenerator.java @@ -18,6 +18,7 @@ package com.google.auto.factory.processor; import static com.google.auto.common.MoreElements.isAnnotationPresent; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; +import static java.util.stream.Collectors.partitioningBy; import static javax.lang.model.element.Modifier.ABSTRACT; import static javax.lang.model.element.Modifier.PUBLIC; import static javax.tools.Diagnostic.Kind.ERROR; @@ -26,13 +27,11 @@ import com.google.auto.common.MoreElements; import com.google.auto.factory.AutoFactory; import com.google.auto.factory.Provided; import com.google.common.base.Function; -import com.google.common.base.Functions; -import com.google.common.base.Optional; -import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; -import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Multimaps; +import java.util.List; +import java.util.Map; +import java.util.Optional; import javax.annotation.processing.Messager; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.Element; @@ -107,8 +106,8 @@ final class FactoryDescriptorGenerator { } @Override - public ImmutableSet<FactoryMethodDescriptor> visitExecutableAsConstructor(ExecutableElement e, - Void p) { + public ImmutableSet<FactoryMethodDescriptor> visitExecutableAsConstructor( + ExecutableElement e, Void p) { // applied to a constructor of a type to be created return ImmutableSet.of(generateDescriptorForConstructor(declaration.get(), e)); } @@ -120,14 +119,9 @@ final class FactoryDescriptorGenerator { checkNotNull(constructor); checkArgument(constructor.getKind() == ElementKind.CONSTRUCTOR); TypeElement classElement = MoreElements.asType(constructor.getEnclosingElement()); - ImmutableListMultimap<Boolean, ? extends VariableElement> parameterMap = - Multimaps.index(constructor.getParameters(), Functions.forPredicate( - new Predicate<VariableElement>() { - @Override - public boolean apply(VariableElement parameter) { - return isAnnotationPresent(parameter, Provided.class); - } - })); + Map<Boolean, List<VariableElement>> parameterMap = + constructor.getParameters().stream() + .collect(partitioningBy(parameter -> isAnnotationPresent(parameter, Provided.class))); ImmutableSet<Parameter> providedParameters = Parameter.forParameterList(parameterMap.get(true), types); ImmutableSet<Parameter> passedParameters = @@ -150,9 +144,9 @@ final class FactoryDescriptorGenerator { .name("create") .returnType(type.asType()) .publicMethod(type.getModifiers().contains(PUBLIC)) - .passedParameters(ImmutableSet.<Parameter>of()) - .creationParameters(ImmutableSet.<Parameter>of()) - .providedParameters(ImmutableSet.<Parameter>of()) + .passedParameters(ImmutableSet.of()) + .creationParameters(ImmutableSet.of()) + .providedParameters(ImmutableSet.of()) .build()); } } diff --git a/factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java b/factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java index 53b99cb5..b1ba2f18 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java +++ b/factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java @@ -19,19 +19,18 @@ import static com.google.auto.common.GeneratedAnnotationSpecs.generatedAnnotatio import static com.squareup.javapoet.MethodSpec.constructorBuilder; import static com.squareup.javapoet.MethodSpec.methodBuilder; import static com.squareup.javapoet.TypeSpec.classBuilder; +import static java.util.stream.Collectors.joining; import static javax.lang.model.element.Modifier.FINAL; import static javax.lang.model.element.Modifier.PRIVATE; import static javax.lang.model.element.Modifier.PUBLIC; import static javax.lang.model.element.Modifier.STATIC; -import com.google.common.base.Function; -import com.google.common.base.Joiner; -import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; +import com.google.common.collect.Streams; import com.squareup.javapoet.AnnotationSpec; import com.squareup.javapoet.ClassName; import com.squareup.javapoet.CodeBlock; @@ -44,12 +43,12 @@ import com.squareup.javapoet.TypeSpec; import com.squareup.javapoet.TypeVariableName; import java.io.IOException; import java.util.Iterator; +import java.util.stream.Stream; import javax.annotation.processing.Filer; import javax.annotation.processing.ProcessingEnvironment; import javax.inject.Inject; import javax.inject.Provider; import javax.lang.model.SourceVersion; -import javax.lang.model.element.AnnotationMirror; import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeMirror; import javax.lang.model.type.TypeVariable; @@ -71,8 +70,6 @@ final class FactoryWriter { this.factoriesBeingCreated = factoriesBeingCreated; } - private static final Joiner ARGUMENT_JOINER = Joiner.on(", "); - void writeFactory(FactoryDescriptor descriptor) throws IOException { String factoryName = descriptor.name().className(); @@ -205,15 +202,7 @@ final class FactoryWriter { implementationMethod.addParameters(parameters(methodDescriptor.passedParameters())); implementationMethod.addStatement( "return create($L)", - FluentIterable.from(methodDescriptor.passedParameters()) - .transform( - new Function<Parameter, String>() { - @Override - public String apply(Parameter parameter) { - return parameter.name(); - } - }) - .join(ARGUMENT_JOINER)); + methodDescriptor.passedParameters().stream().map(Parameter::name).collect(joining(", "))); factory.addMethod(implementationMethod.build()); } } @@ -227,10 +216,10 @@ final class FactoryWriter { for (Parameter parameter : parameters) { ParameterSpec.Builder parameterBuilder = ParameterSpec.builder(resolveTypeName(parameter.type().get()), parameter.name()); - for (AnnotationMirror annotation : - Iterables.concat(parameter.nullable().asSet(), parameter.key().qualifier().asSet())) { - parameterBuilder.addAnnotation(AnnotationSpec.get(annotation)); - } + Stream.of(parameter.nullable(), parameter.key().qualifier()) + .flatMap(Streams::stream) + .map(AnnotationSpec::get) + .forEach(parameterBuilder::addAnnotation); builder.add(parameterBuilder.build()); } return builder.build(); diff --git a/factory/src/main/java/com/google/auto/factory/processor/ImplementationMethodDescriptor.java b/factory/src/main/java/com/google/auto/factory/processor/ImplementationMethodDescriptor.java index 9ddc249f..b7367a6c 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/ImplementationMethodDescriptor.java +++ b/factory/src/main/java/com/google/auto/factory/processor/ImplementationMethodDescriptor.java @@ -34,9 +34,9 @@ abstract class ImplementationMethodDescriptor { } @AutoValue.Builder - static abstract class Builder { + abstract static class Builder { abstract Builder name(String name); - + abstract Builder returnType(TypeMirror returnTypeElement); abstract Builder publicMethod(boolean publicMethod); diff --git a/factory/src/main/java/com/google/auto/factory/processor/Key.java b/factory/src/main/java/com/google/auto/factory/processor/Key.java index 04bd4f37..12cfd927 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/Key.java +++ b/factory/src/main/java/com/google/auto/factory/processor/Key.java @@ -24,9 +24,8 @@ import com.google.auto.common.AnnotationMirrors; import com.google.auto.common.MoreTypes; import com.google.auto.value.AutoValue; import com.google.common.base.Equivalence; -import com.google.common.base.Optional; -import com.google.common.collect.FluentIterable; -import com.google.common.collect.ImmutableSet; +import java.util.Collection; +import java.util.Optional; import javax.inject.Qualifier; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.type.TypeMirror; @@ -65,17 +64,13 @@ abstract class Key { * <tr><td>{@code int} <td>{@code Integer} * </table> */ - static Key create( - TypeMirror type, Iterable<? extends AnnotationMirror> annotations, Types types) { - ImmutableSet.Builder<AnnotationMirror> qualifiers = ImmutableSet.builder(); - for (AnnotationMirror annotation : annotations) { - if (isAnnotationPresent(annotation.getAnnotationType().asElement(), Qualifier.class)) { - qualifiers.add(annotation); - } - } - + static Key create(TypeMirror type, Collection<AnnotationMirror> annotations, Types types) { // TODO(gak): check for only one qualifier rather than using the first - Optional<AnnotationMirror> qualifier = FluentIterable.from(qualifiers.build()).first(); + Optional<AnnotationMirror> qualifier = + annotations.stream() + .filter(annotation -> + isAnnotationPresent(annotation.getAnnotationType().asElement(), Qualifier.class)) + .findFirst(); TypeMirror keyType = isProvider(type) @@ -97,7 +92,7 @@ abstract class Key { } @Override - public String toString() { + public final String toString() { String typeQualifiedName = MoreTypes.asTypeElement(type().get()).toString(); return qualifier().isPresent() ? qualifier().get() + "/" + typeQualifiedName diff --git a/factory/src/main/java/com/google/auto/factory/processor/Mirrors.java b/factory/src/main/java/com/google/auto/factory/processor/Mirrors.java index c5b7d8bf..9e111875 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/Mirrors.java +++ b/factory/src/main/java/com/google/auto/factory/processor/Mirrors.java @@ -17,11 +17,11 @@ package com.google.auto.factory.processor; import com.google.auto.common.MoreTypes; import com.google.common.base.Equivalence; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import java.lang.annotation.Annotation; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import javax.inject.Provider; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationValue; @@ -76,12 +76,11 @@ final class Mirrors { static Optional<AnnotationMirror> getAnnotationMirror(Element element, Class<? extends Annotation> annotationType) { String annotationName = annotationType.getName(); - for (AnnotationMirror annotationMirror : element.getAnnotationMirrors()) { - if (getQualifiedName(annotationMirror.getAnnotationType()).contentEquals(annotationName)) { - return Optional.of(annotationMirror); - } - } - return Optional.absent(); + return element.getAnnotationMirrors().stream() + .filter( + a -> getQualifiedName(a.getAnnotationType()).contentEquals(annotationName)) + .<AnnotationMirror>map(x -> x) // get rid of wildcard <? extends AnnotationMirror> + .findFirst(); } /** @@ -91,9 +90,7 @@ final class Mirrors { // TODO(ronshapiro): this is used in AutoFactory and Dagger, consider moving it into auto-common. static <T> Optional<Equivalence.Wrapper<T>> wrapOptionalInEquivalence( Equivalence<T> equivalence, Optional<T> optional) { - return optional.isPresent() - ? Optional.of(equivalence.wrap(optional.get())) - : Optional.<Equivalence.Wrapper<T>>absent(); + return optional.map(equivalence::wrap); } /** @@ -102,8 +99,6 @@ final class Mirrors { */ static <T> Optional<T> unwrapOptionalEquivalence( Optional<Equivalence.Wrapper<T>> wrappedOptional) { - return wrappedOptional.isPresent() - ? Optional.of(wrappedOptional.get().get()) - : Optional.<T>absent(); + return wrappedOptional.map(Equivalence.Wrapper::get); } } diff --git a/factory/src/main/java/com/google/auto/factory/processor/Parameter.java b/factory/src/main/java/com/google/auto/factory/processor/Parameter.java index 781225a2..57660e0d 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/Parameter.java +++ b/factory/src/main/java/com/google/auto/factory/processor/Parameter.java @@ -18,19 +18,20 @@ package com.google.auto.factory.processor; import static com.google.auto.factory.processor.Mirrors.unwrapOptionalEquivalence; import static com.google.auto.factory.processor.Mirrors.wrapOptionalInEquivalence; import static com.google.common.base.Preconditions.checkArgument; +import static java.util.stream.Collectors.toList; import com.google.auto.common.AnnotationMirrors; import com.google.auto.common.MoreElements; import com.google.auto.common.MoreTypes; import com.google.auto.value.AutoValue; import com.google.common.base.Equivalence; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import java.util.List; +import java.util.Optional; import java.util.Set; +import java.util.stream.Stream; import javax.inject.Provider; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.TypeElement; @@ -71,15 +72,12 @@ abstract class Parameter { private static Parameter forVariableElement( VariableElement variable, TypeMirror type, Types types) { - Optional<AnnotationMirror> nullable = Optional.absent(); - Iterable<? extends AnnotationMirror> annotations = - Iterables.concat(variable.getAnnotationMirrors(), type.getAnnotationMirrors()); - for (AnnotationMirror annotation : annotations) { - if (isNullable(annotation)) { - nullable = Optional.of(annotation); - break; - } - } + List<AnnotationMirror> annotations = + Stream.of(variable.getAnnotationMirrors(), type.getAnnotationMirrors()) + .flatMap(List::stream) + .collect(toList()); + Optional<AnnotationMirror> nullable = + annotations.stream().filter(Parameter::isNullable).findFirst(); Key key = Key.create(type, annotations, types); return new AutoValue_Parameter( diff --git a/factory/src/main/java/com/google/auto/factory/processor/ProviderField.java b/factory/src/main/java/com/google/auto/factory/processor/ProviderField.java index 855c1feb..f18def32 100644 --- a/factory/src/main/java/com/google/auto/factory/processor/ProviderField.java +++ b/factory/src/main/java/com/google/auto/factory/processor/ProviderField.java @@ -21,7 +21,7 @@ import static com.google.auto.factory.processor.Mirrors.wrapOptionalInEquivalenc import com.google.auto.common.AnnotationMirrors; import com.google.auto.value.AutoValue; import com.google.common.base.Equivalence; -import com.google.common.base.Optional; +import java.util.Optional; import javax.lang.model.element.AnnotationMirror; @AutoValue |