aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2015-09-22 16:18:36 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-09-22 17:19:50 +0000
commit4671896be8bf0e37c85c3b740bb3621d2a9e1cc8 (patch)
treea8a3182e7e8b8503be572e70fcf3b58f4fa9cb79 /src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java
parent36c0fb7f48bd1548419a5f84897aadcfb79d46ee (diff)
Refactor AndroidStudioInfoAspect.
-- MOS_MIGRATED_REVID=103652138
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) {