diff options
author | 2018-07-11 10:55:10 -0700 | |
---|---|---|
committer | 2018-07-11 10:57:11 -0700 | |
commit | e0a68ab35294b0acff1226d74744957780967ae4 (patch) | |
tree | 75ace4ba8b4a03db2d0a216b2dd4898f1a099a83 /src/main/java/com/google/devtools/build/lib/buildeventstream | |
parent | f4a3dd9b8124dc7b2795f89e6700881b66371e4f (diff) |
Pass options to BuildEventArtifactUploaderFactory.
The artifact uploaders may need command-level options.
RELNOTES: None
PiperOrigin-RevId: 204151808
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildeventstream')
2 files changed, 22 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java index bee7c40433..d2cc64e6b1 100644 --- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java +++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java @@ -15,14 +15,17 @@ package com.google.devtools.build.lib.buildeventstream; import static com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader.LOCAL_FILES_UPLOADER; +import com.google.devtools.common.options.OptionsProvider; + /** A factory for {@link BuildEventArtifactUploader}. */ public interface BuildEventArtifactUploaderFactory { - BuildEventArtifactUploaderFactory LOCAL_FILES_UPLOADER_FACTORY = () -> LOCAL_FILES_UPLOADER; + BuildEventArtifactUploaderFactory LOCAL_FILES_UPLOADER_FACTORY = + (OptionsProvider options) -> LOCAL_FILES_UPLOADER; /** * Returns a new instance of a {@link BuildEventArtifactUploader}. The call is responsible for * calling {@link BuildEventArtifactUploader#shutdown()} on the returned instance. */ - BuildEventArtifactUploader create(); + BuildEventArtifactUploader create(OptionsProvider options); } diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java index 6cc539418d..cafc20ac29 100644 --- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java +++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.buildeventstream.transports; +import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Strings.isNullOrEmpty; import com.google.common.collect.ImmutableSet; @@ -22,6 +23,7 @@ import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader import com.google.devtools.build.lib.buildeventstream.BuildEventProtocolOptions; import com.google.devtools.build.lib.buildeventstream.BuildEventTransport; import com.google.devtools.build.lib.util.AbruptExitException; +import com.google.devtools.common.options.OptionsProvider; import java.io.IOException; import java.util.function.Consumer; @@ -105,19 +107,27 @@ public enum BuildEventTransportFactory { * @throws IOException Exception propagated from a {@link BuildEventTransport} creation failure. */ public static ImmutableSet<BuildEventTransport> createFromOptions( - BuildEventStreamOptions options, - BuildEventProtocolOptions protocolOptions, + OptionsProvider options, BuildEventArtifactUploaderFactoryMap artifactUploaders, Consumer<AbruptExitException> exitFunc) throws IOException { + BuildEventStreamOptions bepOptions = + checkNotNull( + options.getOptions(BuildEventStreamOptions.class), + "Could not get BuildEventStreamOptions."); + BuildEventProtocolOptions protocolOptions = + checkNotNull( + options.getOptions(BuildEventProtocolOptions.class), + "Could not get BuildEventProtocolOptions."); ImmutableSet.Builder<BuildEventTransport> buildEventTransportsBuilder = ImmutableSet.builder(); for (BuildEventTransportFactory transportFactory : BuildEventTransportFactory.values()) { - if (transportFactory.enabled(options)) { - BuildEventArtifactUploader uploader = transportFactory.usePathConverter(options) - ? artifactUploaders.select(protocolOptions.buildEventUploadStrategy).create() - : BuildEventArtifactUploader.LOCAL_FILES_UPLOADER; + if (transportFactory.enabled(bepOptions)) { + BuildEventArtifactUploader uploader = + transportFactory.usePathConverter(bepOptions) + ? artifactUploaders.select(protocolOptions.buildEventUploadStrategy).create(options) + : BuildEventArtifactUploader.LOCAL_FILES_UPLOADER; buildEventTransportsBuilder.add( - transportFactory.create(options, protocolOptions, uploader, exitFunc)); + transportFactory.create(bepOptions, protocolOptions, uploader, exitFunc)); } } return buildEventTransportsBuilder.build(); |