aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java53
1 files changed, 52 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java
index 5d935310d1..6c833d1762 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java
@@ -18,6 +18,7 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider;
import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider.SourceDirectory;
@@ -31,7 +32,57 @@ public final class AndroidStudioInfoFilesProvider implements TransitiveInfoProvi
private final NestedSet<Label> transitiveDependencies;
private final NestedSet<AndroidIdeInfoProvider.SourceDirectory> transitiveResources;
- public AndroidStudioInfoFilesProvider(
+ /**
+ * Builder class for {@link AndroidStudioInfoFilesProvider}
+ */
+ public static class Builder {
+ private final NestedSetBuilder<Artifact> ideBuildFilesBuilder;
+ private final NestedSetBuilder<Label> transitiveDependenciesBuilder;
+ private NestedSetBuilder<AndroidIdeInfoProvider.SourceDirectory> transitiveResourcesBuilder;
+ private NestedSet<AndroidIdeInfoProvider.SourceDirectory> transitiveResources;
+
+ public Builder() {
+ ideBuildFilesBuilder = NestedSetBuilder.stableOrder();
+ transitiveDependenciesBuilder = NestedSetBuilder.stableOrder();
+ transitiveResourcesBuilder = NestedSetBuilder.stableOrder();
+ transitiveResources = null;
+ }
+
+ public NestedSetBuilder<Artifact> ideBuildFilesBuilder() {
+ return ideBuildFilesBuilder;
+ }
+
+ public NestedSetBuilder<Label> transitiveDependenciesBuilder() {
+ return transitiveDependenciesBuilder;
+ }
+
+ public NestedSetBuilder<SourceDirectory> transitiveResourcesBuilder() {
+ return transitiveResourcesBuilder;
+ }
+
+ /**
+ * Returns a set of transitive resources. {@link Builder#transitiveResourcesBuilder}
+ * is unusable after this operation.
+ */
+ public NestedSet<AndroidIdeInfoProvider.SourceDirectory> getTransitiveResources() {
+ if (transitiveResources != null) {
+ return transitiveResources;
+ }
+ transitiveResources = transitiveResourcesBuilder.build();
+ transitiveResourcesBuilder = null;
+ return transitiveResources;
+ }
+
+ public AndroidStudioInfoFilesProvider build() {
+ return new AndroidStudioInfoFilesProvider(
+ ideBuildFilesBuilder.build(),
+ transitiveDependenciesBuilder.build(),
+ getTransitiveResources()
+ );
+ }
+ }
+
+ private AndroidStudioInfoFilesProvider(
NestedSet<Artifact> ideBuildFiles,
NestedSet<Label> transitiveDependencies,
NestedSet<SourceDirectory> transitiveResources) {