aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉamonn McManus <emcmanus@google.com>2021-06-28 10:43:49 -0700
committerGoogle Java Core Libraries <java-libraries-firehose+copybara@google.com>2021-06-28 10:44:31 -0700
commitc68b2ff843a8206c1c189c4b46f3675d02757597 (patch)
tree5ec5a659ade70c0f96bc7964b37780486fbd060d
parentba9f11078a51b80f971e0335aa44c713e9979133 (diff)
downloadauto-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
-rw-r--r--common/src/main/java/com/google/auto/common/BasicAnnotationProcessor.java17
-rw-r--r--common/src/main/java/com/google/auto/common/MoreElements.java7
-rw-r--r--value/src/it/functional/src/test/java/com/google/auto/value/AutoAnnotationTest.java2
-rw-r--r--value/src/main/java/com/google/auto/value/processor/AutoValueProcessor.java13
-rw-r--r--value/src/main/java/com/google/auto/value/processor/AutoValueishProcessor.java6
-rw-r--r--value/src/main/java/com/google/auto/value/processor/BuilderSpec.java17
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());
}
}