diff options
author | Éamonn McManus <emcmanus@google.com> | 2021-06-28 10:43:49 -0700 |
---|---|---|
committer | Google Java Core Libraries <java-libraries-firehose+copybara@google.com> | 2021-06-28 10:44:31 -0700 |
commit | c68b2ff843a8206c1c189c4b46f3675d02757597 (patch) | |
tree | 5ec5a659ade70c0f96bc7964b37780486fbd060d | |
parent | ba9f11078a51b80f971e0335aa44c713e9979133 (diff) | |
download | auto-c68b2ff843a8206c1c189c4b46f3675d02757597.tar.gz |
Use more fluent streams constructs.
Previously we avoided collectors like `toImmutableList()` because of Google-internal problems where sometimes we would end up with a version of Guava that didn't include those methods. Now we have copies of the methods in `MoreStreams` so we can use those.
RELNOTES=n/a
PiperOrigin-RevId: 381898090
6 files changed, 28 insertions, 34 deletions
diff --git a/common/src/main/java/com/google/auto/common/BasicAnnotationProcessor.java b/common/src/main/java/com/google/auto/common/BasicAnnotationProcessor.java index 31336cc3..92a72c49 100644 --- a/common/src/main/java/com/google/auto/common/BasicAnnotationProcessor.java +++ b/common/src/main/java/com/google/auto/common/BasicAnnotationProcessor.java @@ -17,14 +17,13 @@ package com.google.auto.common; import static com.google.auto.common.MoreElements.asExecutable; import static com.google.auto.common.MoreElements.asPackage; +import static com.google.auto.common.MoreStreams.toImmutableMap; +import static com.google.auto.common.MoreStreams.toImmutableSet; import static com.google.auto.common.SuperficialValidation.validateElement; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.Iterables.transform; import static com.google.common.collect.Multimaps.filterKeys; -import static java.util.stream.Collectors.collectingAndThen; -import static java.util.stream.Collectors.toList; -import static java.util.stream.Collectors.toMap; import static javax.lang.model.element.ElementKind.PACKAGE; import static javax.tools.Diagnostic.Kind.ERROR; @@ -162,14 +161,14 @@ public abstract class BasicAnnotationProcessor extends AbstractProcessor { checkState(steps != null); return steps.stream() .flatMap(step -> getSupportedAnnotationTypeElements(step).stream()) - .collect(collectingAndThen(toList(), ImmutableSet::copyOf)); + .collect(toImmutableSet()); } private ImmutableSet<TypeElement> getSupportedAnnotationTypeElements(Step step) { return step.annotations().stream() .map(elements::getTypeElement) .filter(Objects::nonNull) - .collect(collectingAndThen(toList(), ImmutableSet::copyOf)); + .collect(toImmutableSet()); } /** @@ -181,7 +180,7 @@ public abstract class BasicAnnotationProcessor extends AbstractProcessor { checkState(steps != null); return steps.stream() .flatMap(step -> step.annotations().stream()) - .collect(collectingAndThen(toList(), ImmutableSet::copyOf)); + .collect(toImmutableSet()); } @Override @@ -478,10 +477,8 @@ public abstract class BasicAnnotationProcessor extends AbstractProcessor { this.annotationsByName = processingStep.annotations().stream() .collect( - collectingAndThen( - toMap( - Class::getCanonicalName, (Class<? extends Annotation> aClass) -> aClass), - ImmutableMap::copyOf)); + toImmutableMap( + Class::getCanonicalName, (Class<? extends Annotation> aClass) -> aClass)); } @Override diff --git a/common/src/main/java/com/google/auto/common/MoreElements.java b/common/src/main/java/com/google/auto/common/MoreElements.java index 8061cd57..c8a478a4 100644 --- a/common/src/main/java/com/google/auto/common/MoreElements.java +++ b/common/src/main/java/com/google/auto/common/MoreElements.java @@ -16,6 +16,7 @@ */ package com.google.auto.common; +import static com.google.auto.common.MoreStreams.toImmutableSet; import static javax.lang.model.element.ElementKind.PACKAGE; import static javax.lang.model.element.Modifier.STATIC; @@ -482,9 +483,9 @@ public final class MoreElements { } } } - Set<ExecutableElement> methods = new LinkedHashSet<ExecutableElement>(methodMap.values()); - methods.removeAll(overridden); - return ImmutableSet.copyOf(methods); + return methodMap.values().stream() + .filter(m -> !overridden.contains(m)) + .collect(toImmutableSet()); } // Add to `methods` the static and instance methods from `type`. This means all methods from diff --git a/value/src/it/functional/src/test/java/com/google/auto/value/AutoAnnotationTest.java b/value/src/it/functional/src/test/java/com/google/auto/value/AutoAnnotationTest.java index f894d6b9..aec89287 100644 --- a/value/src/it/functional/src/test/java/com/google/auto/value/AutoAnnotationTest.java +++ b/value/src/it/functional/src/test/java/com/google/auto/value/AutoAnnotationTest.java @@ -116,7 +116,7 @@ public class AutoAnnotationTest { assertThat(arrays.ints()).asList().containsExactly(2, 3, 5).inOrder(); strings[0] = "Hyde"; ints[0] = -1; - assertThat(ImmutableList.copyOf(arrays.strings())).containsExactly("Jekyll"); + assertThat(arrays.strings()).asList().containsExactly("Jekyll"); assertThat(arrays.ints()).asList().containsExactly(2, 3, 5).inOrder(); } diff --git a/value/src/main/java/com/google/auto/value/processor/AutoValueProcessor.java b/value/src/main/java/com/google/auto/value/processor/AutoValueProcessor.java index 837fc573..ab7da924 100644 --- a/value/src/main/java/com/google/auto/value/processor/AutoValueProcessor.java +++ b/value/src/main/java/com/google/auto/value/processor/AutoValueProcessor.java @@ -16,12 +16,12 @@ package com.google.auto.value.processor; import static com.google.auto.common.MoreElements.getLocalAndInheritedMethods; +import static com.google.auto.common.MoreStreams.toImmutableList; import static com.google.auto.value.processor.ClassNames.AUTO_VALUE_NAME; import static com.google.common.collect.Sets.difference; import static com.google.common.collect.Sets.intersection; import static java.util.Comparator.naturalOrder; import static java.util.stream.Collectors.joining; -import static java.util.stream.Collectors.toList; import com.google.auto.service.AutoService; import com.google.auto.value.extension.AutoValueExtension; @@ -33,7 +33,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Collections; @@ -100,10 +99,9 @@ public class AutoValueProcessor extends AutoValueishProcessor { @VisibleForTesting static ImmutableList<AutoValueExtension> extensionsFromLoader(ClassLoader loader) { - return ImmutableList.copyOf( - Iterables.filter( - SimpleServiceLoader.load(AutoValueExtension.class, loader), - ext -> !ext.getClass().getName().equals(OLD_MEMOIZE_EXTENSION))); + return SimpleServiceLoader.load(AutoValueExtension.class, loader).stream() + .filter(ext -> !ext.getClass().getName().equals(OLD_MEMOIZE_EXTENSION)) + .collect(toImmutableList()); } @Override @@ -428,9 +426,8 @@ public class AutoValueProcessor extends AutoValueishProcessor { ImmutableMap<ExecutableElement, TypeMirror> propertyMethodsAndTypes, Optional<BuilderSpec.Builder> maybeBuilder) { ImmutableSet<ExecutableElement> propertyMethods = propertyMethodsAndTypes.keySet(); - // We can't use ImmutableList.toImmutableList() for obscure Google-internal reasons. vars.toBuilderMethods = - ImmutableList.copyOf(toBuilderMethods.stream().map(SimpleMethod::new).collect(toList())); + toBuilderMethods.stream().map(SimpleMethod::new).collect(toImmutableList()); vars.toBuilderConstructor = !vars.toBuilderMethods.isEmpty(); ImmutableListMultimap<ExecutableElement, AnnotationMirror> annotatedPropertyFields = propertyFieldAnnotationMap(type, propertyMethods); diff --git a/value/src/main/java/com/google/auto/value/processor/AutoValueishProcessor.java b/value/src/main/java/com/google/auto/value/processor/AutoValueishProcessor.java index 3f949f5b..93f2f79e 100644 --- a/value/src/main/java/com/google/auto/value/processor/AutoValueishProcessor.java +++ b/value/src/main/java/com/google/auto/value/processor/AutoValueishProcessor.java @@ -19,6 +19,7 @@ import static com.google.auto.common.AnnotationMirrors.getAnnotationValue; import static com.google.auto.common.GeneratedAnnotations.generatedAnnotation; import static com.google.auto.common.MoreElements.getPackage; import static com.google.auto.common.MoreElements.isAnnotationPresent; +import static com.google.auto.common.MoreStreams.toImmutableList; import static com.google.auto.common.MoreStreams.toImmutableSet; import static com.google.auto.value.processor.ClassNames.AUTO_VALUE_PACKAGE_NAME; import static com.google.auto.value.processor.ClassNames.COPY_ANNOTATIONS_NAME; @@ -467,8 +468,9 @@ abstract class AutoValueishProcessor extends AbstractProcessor { /** Returns the spelling to be used in the generated code for the given list of annotations. */ static ImmutableList<String> annotationStrings(List<? extends AnnotationMirror> annotations) { // TODO(b/68008628): use ImmutableList.toImmutableList() when that works. - return ImmutableList.copyOf( - annotations.stream().map(AnnotationOutput::sourceFormForAnnotation).collect(toList())); + return annotations.stream() + .map(AnnotationOutput::sourceFormForAnnotation) + .collect(toImmutableList()); } /** diff --git a/value/src/main/java/com/google/auto/value/processor/BuilderSpec.java b/value/src/main/java/com/google/auto/value/processor/BuilderSpec.java index 017a5ff5..9f45d172 100644 --- a/value/src/main/java/com/google/auto/value/processor/BuilderSpec.java +++ b/value/src/main/java/com/google/auto/value/processor/BuilderSpec.java @@ -16,6 +16,7 @@ package com.google.auto.value.processor; import static com.google.auto.common.MoreElements.getLocalAndInheritedMethods; +import static com.google.auto.common.MoreStreams.toImmutableSet; import static com.google.auto.value.processor.AutoValueishProcessor.hasAnnotationMirror; import static com.google.auto.value.processor.AutoValueishProcessor.nullableAnnotationFor; import static com.google.auto.value.processor.ClassNames.AUTO_VALUE_BUILDER_NAME; @@ -35,7 +36,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Optional; @@ -330,15 +330,12 @@ class BuilderSpec { vars.builderPropertyBuilders = ImmutableMap.copyOf(classifier.propertyNameToPropertyBuilder()); - Set<Property> required = new LinkedHashSet<>(vars.props); - for (Property property : vars.props) { - if (property.isNullable() - || property.getOptional() != null - || vars.builderPropertyBuilders.containsKey(property.getName())) { - required.remove(property); - } - } - vars.builderRequiredProperties = ImmutableSet.copyOf(required); + vars.builderRequiredProperties = + vars.props.stream() + .filter(p -> !p.isNullable()) + .filter(p -> p.getOptional() == null) + .filter(p -> !vars.builderPropertyBuilders.containsKey(p.getName())) + .collect(toImmutableSet()); } } |