[BEAM-59] Drops public constructors and uses Factory methods in Gcs/File/IOChannelFactory.
Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/e6fa2ff2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/e6fa2ff2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/e6fa2ff2 Branch: refs/heads/master Commit: e6fa2ff26e836848fa549c290ed098dd019cc4e1 Parents: 249dbc0 Author: Pei He <pe...@google.com> Authored: Mon Oct 31 17:58:31 2016 -0700 Committer: Luke Cwik <lc...@google.com> Committed: Tue Nov 22 06:18:54 2016 -0800 ---------------------------------------------------------------------- .../apache/beam/sdk/util/FileIOChannelFactory.java | 17 +++++++++++++++++ .../apache/beam/sdk/util/GcsIOChannelFactory.java | 10 +++++++++- .../org/apache/beam/sdk/util/IOChannelUtils.java | 7 +++---- .../beam/sdk/util/FileIOChannelFactoryTest.java | 2 +- .../beam/sdk/util/GcsIOChannelFactoryTest.java | 2 +- 5 files changed, 31 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/e6fa2ff2/sdks/java/core/src/main/java/org/apache/beam/sdk/util/FileIOChannelFactory.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/FileIOChannelFactory.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/FileIOChannelFactory.java index 0eefb77..13591a3 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/FileIOChannelFactory.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/FileIOChannelFactory.java @@ -44,6 +44,7 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; +import org.apache.beam.sdk.options.PipelineOptions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,6 +54,22 @@ import org.slf4j.LoggerFactory; public class FileIOChannelFactory implements IOChannelFactory { private static final Logger LOG = LoggerFactory.getLogger(FileIOChannelFactory.class); + /** + * Create a {@link FileIOChannelFactory} with the given {@link PipelineOptions}. + */ + public static FileIOChannelFactory fromOptions(PipelineOptions options) { + return create(); + } + + /** + * Create a {@link FileIOChannelFactory}. + */ + public static FileIOChannelFactory create() { + return new FileIOChannelFactory(); + } + + private FileIOChannelFactory() {} + /** * Converts the given file spec to a java {@link File}. If {@code spec} is actually a URI with * the {@code file} scheme, then this function will ensure that the returned {@link File} http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/e6fa2ff2/sdks/java/core/src/main/java/org/apache/beam/sdk/util/GcsIOChannelFactory.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/GcsIOChannelFactory.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/GcsIOChannelFactory.java index bd2ec4e..9f99cd6 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/GcsIOChannelFactory.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/GcsIOChannelFactory.java @@ -25,6 +25,7 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.beam.sdk.options.GcsOptions; +import org.apache.beam.sdk.options.PipelineOptions; import org.apache.beam.sdk.util.gcsfs.GcsPath; /** @@ -32,9 +33,16 @@ import org.apache.beam.sdk.util.gcsfs.GcsPath; */ public class GcsIOChannelFactory implements IOChannelFactory { + /** + * Create a {@link GcsIOChannelFactory} with the given {@link PipelineOptions}. + */ + public static GcsIOChannelFactory fromOptions(PipelineOptions options) { + return new GcsIOChannelFactory(options.as(GcsOptions.class)); + } + private final GcsOptions options; - public GcsIOChannelFactory(GcsOptions options) { + private GcsIOChannelFactory(GcsOptions options) { this.options = options; } http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/e6fa2ff2/sdks/java/core/src/main/java/org/apache/beam/sdk/util/IOChannelUtils.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/IOChannelUtils.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/IOChannelUtils.java index 16a6e95..d221fa9 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/IOChannelUtils.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/IOChannelUtils.java @@ -29,7 +29,6 @@ import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.beam.sdk.options.GcsOptions; import org.apache.beam.sdk.options.PipelineOptions; /** @@ -61,8 +60,8 @@ public class IOChannelUtils { * to provide, e.g., credentials for GCS. */ public static void registerStandardIOFactories(PipelineOptions options) { - setIOFactory("gs", new GcsIOChannelFactory(options.as(GcsOptions.class))); - setIOFactory("file", new FileIOChannelFactory()); + setIOFactory("gs", GcsIOChannelFactory.fromOptions(options)); + setIOFactory("file", FileIOChannelFactory.fromOptions(options)); } /** @@ -175,7 +174,7 @@ public class IOChannelUtils { Matcher matcher = URI_SCHEME_PATTERN.matcher(spec); if (!matcher.matches()) { - return new FileIOChannelFactory(); + return FileIOChannelFactory.create(); } String scheme = matcher.group("scheme"); http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/e6fa2ff2/sdks/java/core/src/test/java/org/apache/beam/sdk/util/FileIOChannelFactoryTest.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/FileIOChannelFactoryTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/FileIOChannelFactoryTest.java index 4d4f93b..e27a043 100644 --- a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/FileIOChannelFactoryTest.java +++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/FileIOChannelFactoryTest.java @@ -46,7 +46,7 @@ import org.junit.runners.JUnit4; public class FileIOChannelFactoryTest { @Rule public ExpectedException thrown = ExpectedException.none(); @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); - private FileIOChannelFactory factory = new FileIOChannelFactory(); + private FileIOChannelFactory factory = FileIOChannelFactory.create(); private void testCreate(Path path) throws Exception { String expected = "my test string"; http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/e6fa2ff2/sdks/java/core/src/test/java/org/apache/beam/sdk/util/GcsIOChannelFactoryTest.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/GcsIOChannelFactoryTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/GcsIOChannelFactoryTest.java index 6bdb782..7248b38 100644 --- a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/GcsIOChannelFactoryTest.java +++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/GcsIOChannelFactoryTest.java @@ -33,7 +33,7 @@ public class GcsIOChannelFactoryTest { @Before public void setUp() { - factory = new GcsIOChannelFactory(PipelineOptionsFactory.as(GcsOptions.class)); + factory = GcsIOChannelFactory.fromOptions(PipelineOptionsFactory.as(GcsOptions.class)); } @Test