[BEAM-59] Beam FileSystem.setDefaultConfig: remove scheme from the signature.


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/4cdd8771
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/4cdd8771
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/4cdd8771

Branch: refs/heads/python-sdk
Commit: 4cdd87718c3d0719b7c0e421b9cbaf4eb902672e
Parents: 1148be6
Author: Pei He <pe...@google.com>
Authored: Mon Jan 23 18:08:44 2017 -0800
Committer: Dan Halperin <dhalp...@google.com>
Committed: Tue Jan 24 15:54:53 2017 -0800

----------------------------------------------------------------------
 .../org/apache/beam/sdk/io/FileSystems.java     | 32 +++++++------------
 .../org/apache/beam/sdk/io/FileSystemsTest.java | 33 +++-----------------
 2 files changed, 15 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/4cdd8771/sdks/java/core/src/main/java/org/apache/beam/sdk/io/FileSystems.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/FileSystems.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/FileSystems.java
index d086ec6..e19c1e4 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/FileSystems.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/FileSystems.java
@@ -17,8 +17,8 @@
  */
 package org.apache.beam.sdk.io;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
@@ -53,6 +53,8 @@ public class FileSystems {
   private static final Map<String, FileSystemRegistrar> SCHEME_TO_REGISTRAR =
       new ConcurrentHashMap<>();
 
+  private static PipelineOptions defaultConfig;
+
   private static final Map<String, PipelineOptions> SCHEME_TO_DEFAULT_CONFIG =
       new ConcurrentHashMap<>();
 
@@ -78,27 +80,12 @@ public class FileSystems {
   }
 
   /**
-   * Sets the default configuration to be used with a {@link 
FileSystemRegistrar} for the provided
-   * {@code scheme}.
+   * Sets the default configuration in workers.
    *
-   * <p>Syntax: <pre>scheme = alpha *( alpha | digit | "+" | "-" | "." )</pre>
-   * Upper case letters are treated as the same as lower case letters.
+   * <p>It will be used in {@link FileSystemRegistrar FileSystemRegistrars} 
for all schemes.
    */
-  public static void setDefaultConfig(String scheme, PipelineOptions options) {
-    String lowerCaseScheme = checkNotNull(scheme, "scheme").toLowerCase();
-    checkArgument(
-        URI_SCHEME_PATTERN.matcher(lowerCaseScheme).matches(),
-        String.format("Scheme: [%s] doesn't match URI syntax: %s",
-            lowerCaseScheme, URI_SCHEME_PATTERN.pattern()));
-    checkArgument(
-        SCHEME_TO_REGISTRAR.containsKey(lowerCaseScheme),
-        String.format("No FileSystemRegistrar found for scheme: [%s].", 
lowerCaseScheme));
-    SCHEME_TO_DEFAULT_CONFIG.put(lowerCaseScheme, checkNotNull(options, 
"options"));
-  }
-
-  @VisibleForTesting
-  static PipelineOptions getDefaultConfig(String scheme) {
-    return SCHEME_TO_DEFAULT_CONFIG.get(scheme.toLowerCase());
+  public static void setDefaultConfigInWorkers(PipelineOptions options) {
+    defaultConfig = checkNotNull(options, "options");
   }
 
   /**
@@ -106,9 +93,12 @@ public class FileSystems {
    */
   @VisibleForTesting
   static FileSystem getFileSystemInternal(URI uri) {
+    checkState(
+        defaultConfig != null,
+        "Expect the runner have called setDefaultConfigInWorkers().");
     String lowerCaseScheme = (uri.getScheme() != null
         ? uri.getScheme().toLowerCase() : 
LocalFileSystemRegistrar.LOCAL_FILE_SCHEME);
-    return 
getRegistrarInternal(lowerCaseScheme).fromOptions(getDefaultConfig(lowerCaseScheme));
+    return getRegistrarInternal(lowerCaseScheme).fromOptions(defaultConfig);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/beam/blob/4cdd8771/sdks/java/core/src/test/java/org/apache/beam/sdk/io/FileSystemsTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/FileSystemsTest.java 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/FileSystemsTest.java
index 9b41b98..113a562 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/io/FileSystemsTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/io/FileSystemsTest.java
@@ -17,8 +17,6 @@
  */
 package org.apache.beam.sdk.io;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertTrue;
 
 import com.google.common.collect.Sets;
@@ -26,6 +24,7 @@ import java.net.URI;
 import javax.annotation.Nullable;
 import org.apache.beam.sdk.options.PipelineOptions;
 import org.apache.beam.sdk.options.PipelineOptionsFactory;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -41,33 +40,9 @@ public class FileSystemsTest {
   @Rule
   public ExpectedException thrown = ExpectedException.none();
 
-  @Test
-  public void testSetDefaultConfig() throws Exception {
-    PipelineOptions first = PipelineOptionsFactory.create();
-    PipelineOptions second = PipelineOptionsFactory.create();
-    FileSystems.setDefaultConfig("file", first);
-    assertEquals(first, FileSystems.getDefaultConfig("file"));
-    assertEquals(first, FileSystems.getDefaultConfig("FILE"));
-
-    FileSystems.setDefaultConfig("FILE", second);
-    assertNotEquals(first, FileSystems.getDefaultConfig("file"));
-    assertNotEquals(first, FileSystems.getDefaultConfig("FILE"));
-    assertEquals(second, FileSystems.getDefaultConfig("file"));
-    assertEquals(second, FileSystems.getDefaultConfig("FILE"));
-  }
-
-  @Test
-  public void testSetDefaultConfigNotFound() throws Exception {
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage("No FileSystemRegistrar found for scheme: [gs-s3].");
-    FileSystems.setDefaultConfig("gs-s3", PipelineOptionsFactory.create());
-  }
-
-  @Test
-  public void testSetDefaultConfigInvalidScheme() throws Exception {
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage("Scheme: [gs:] doesn't match URI syntax");
-    FileSystems.setDefaultConfig("gs:", PipelineOptionsFactory.create());
+  @Before
+  public void setup() {
+    FileSystems.setDefaultConfigInWorkers(PipelineOptionsFactory.create());
   }
 
   @Test

Reply via email to