aboutsummaryrefslogtreecommitdiff
path: root/factory
diff options
context:
space:
mode:
authorÉamonn McManus <emcmanus@google.com>2020-10-26 14:55:37 -0700
committerGoogle Java Core Libraries <java-core-libraries-team+copybara@google.com>2020-10-26 14:56:07 -0700
commit4c79e5ca534b8dbb0b72ded92764f66d7edd64f2 (patch)
treec7b19a6748a688c7054c4f7be174f892203fe926 /factory
parentaa478015bcb8b26b0ae69601822989a3f1cd09b4 (diff)
downloadauto-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')
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/AutoFactoryDeclaration.java17
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/AutoFactoryProcessor.java2
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/Elements2.java8
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptor.java69
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/FactoryDescriptorGenerator.java30
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java27
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/ImplementationMethodDescriptor.java4
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/Key.java23
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/Mirrors.java21
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/Parameter.java20
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/ProviderField.java2
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