diff options
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.java | 53 |
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) { |