diff options
author | 2015-09-22 16:18:36 +0000 | |
---|---|---|
committer | 2015-09-22 17:19:50 +0000 | |
commit | 4671896be8bf0e37c85c3b740bb3621d2a9e1cc8 (patch) | |
tree | a8a3182e7e8b8503be572e70fcf3b58f4fa9cb79 /src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoFilesProvider.java | |
parent | 36c0fb7f48bd1548419a5f84897aadcfb79d46ee (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.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) { |