This is an automated email from the ASF dual-hosted git repository.

tison pushed a commit to branch generate-java-configs
in repository https://gitbox.apache.org/repos/asf/opendal.git

commit 48e2dd42abadd6941aa85efb8767883cbe0804f8
Author: tison <[email protected]>
AuthorDate: Fri Jan 3 18:35:15 2025 +0800

    bridge and test
    
    Signed-off-by: tison <[email protected]>
---
 .../main/java/org/apache/opendal/AsyncOperator.java  | 20 ++++++++++++++++++++
 .../src/main/java/org/apache/opendal/Operator.java   | 11 +++++++++++
 .../org/apache/opendal/test/AsyncExecutorTest.java   |  9 ++++-----
 .../test/java/org/apache/opendal/test/LayerTest.java | 15 +++++++--------
 .../java/org/apache/opendal/test/MetadataTest.java   | 15 +++++++--------
 .../org/apache/opendal/test/OperatorInfoTest.java    | 15 +++++++--------
 .../opendal/test/OperatorInputOutputStreamTest.java  |  9 ++++-----
 .../apache/opendal/test/OperatorUtf8DecodeTest.java  |  9 ++++-----
 8 files changed, 64 insertions(+), 39 deletions(-)

diff --git a/bindings/java/src/main/java/org/apache/opendal/AsyncOperator.java 
b/bindings/java/src/main/java/org/apache/opendal/AsyncOperator.java
index 3041bac3c..cd6b67236 100644
--- a/bindings/java/src/main/java/org/apache/opendal/AsyncOperator.java
+++ b/bindings/java/src/main/java/org/apache/opendal/AsyncOperator.java
@@ -106,6 +106,26 @@ public class AsyncOperator extends NativeObject {
 
     private final long executorHandle;
 
+    /**
+     * Construct an OpenDAL operator.
+     *
+     * @param config the config of the underneath service to access data from.
+     */
+    public static AsyncOperator of(ServiceConfig config) {
+        return of(config, null);
+    }
+
+    /**
+     * Construct an OpenDAL operator.
+     *
+     * @param executor the underneath executor to run async operations; {@code 
null} to use a default global executor.
+     */
+    public static AsyncOperator of(ServiceConfig config, AsyncExecutor 
executor) {
+        final String scheme = config.scheme();
+        final Map<String, String> map = config.configMap();
+        return of(scheme, map, executor);
+    }
+
     /**
      * Construct an OpenDAL operator:
      *
diff --git a/bindings/java/src/main/java/org/apache/opendal/Operator.java 
b/bindings/java/src/main/java/org/apache/opendal/Operator.java
index f01793994..be496d2cb 100644
--- a/bindings/java/src/main/java/org/apache/opendal/Operator.java
+++ b/bindings/java/src/main/java/org/apache/opendal/Operator.java
@@ -30,6 +30,17 @@ import java.util.Map;
 public class Operator extends NativeObject {
     public final OperatorInfo info;
 
+    /**
+     * Construct an OpenDAL blocking operator.
+     *
+     * @param config the config of the underneath service to access data from.
+     */
+    public static Operator of(ServiceConfig config) {
+        try (final AsyncOperator operator = AsyncOperator.of(config)) {
+            return operator.blocking();
+        }
+    }
+
     /**
      * Construct an OpenDAL blocking operator:
      *
diff --git 
a/bindings/java/src/test/java/org/apache/opendal/test/AsyncExecutorTest.java 
b/bindings/java/src/test/java/org/apache/opendal/test/AsyncExecutorTest.java
index c776e8b75..23241c868 100644
--- a/bindings/java/src/test/java/org/apache/opendal/test/AsyncExecutorTest.java
+++ b/bindings/java/src/test/java/org/apache/opendal/test/AsyncExecutorTest.java
@@ -21,21 +21,20 @@ package org.apache.opendal.test;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.Map;
 import lombok.Cleanup;
 import org.apache.opendal.AsyncExecutor;
 import org.apache.opendal.AsyncOperator;
+import org.apache.opendal.ServiceConfig;
 import org.junit.jupiter.api.Test;
 
 public class AsyncExecutorTest {
     @Test
     void testDedicatedTokioExecutor() {
-        final Map<String, String> conf = new HashMap<>();
-        conf.put("root", "/opendal/");
+        final ServiceConfig.Memory memory =
+                ServiceConfig.Memory.builder().root("/opendal/").build();
         final int cores = Runtime.getRuntime().availableProcessors();
         @Cleanup final AsyncExecutor executor = 
AsyncExecutor.createTokioExecutor(cores);
-        @Cleanup final AsyncOperator op = AsyncOperator.of("memory", conf, 
executor);
+        @Cleanup final AsyncOperator op = AsyncOperator.of(memory, executor);
         assertThat(op.info).isNotNull();
 
         final String key = "key";
diff --git a/bindings/java/src/test/java/org/apache/opendal/test/LayerTest.java 
b/bindings/java/src/test/java/org/apache/opendal/test/LayerTest.java
index ed2ab4a1d..98b7ff1a9 100644
--- a/bindings/java/src/test/java/org/apache/opendal/test/LayerTest.java
+++ b/bindings/java/src/test/java/org/apache/opendal/test/LayerTest.java
@@ -20,11 +20,10 @@
 package org.apache.opendal.test;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import java.util.HashMap;
-import java.util.Map;
 import lombok.Cleanup;
 import org.apache.opendal.AsyncOperator;
 import org.apache.opendal.Layer;
+import org.apache.opendal.ServiceConfig;
 import org.apache.opendal.layer.ConcurrentLimitLayer;
 import org.apache.opendal.layer.RetryLayer;
 import org.junit.jupiter.api.Test;
@@ -32,20 +31,20 @@ import org.junit.jupiter.api.Test;
 public class LayerTest {
     @Test
     void testOperatorWithRetryLayer() {
-        final Map<String, String> conf = new HashMap<>();
-        conf.put("root", "/opendal/");
+        final ServiceConfig.Memory memory =
+                ServiceConfig.Memory.builder().root("/opendal/").build();
         final Layer retryLayer = RetryLayer.builder().build();
-        @Cleanup final AsyncOperator op = AsyncOperator.of("memory", conf);
+        @Cleanup final AsyncOperator op = AsyncOperator.of(memory);
         @Cleanup final AsyncOperator layeredOp = op.layer(retryLayer);
         assertThat(layeredOp.info).isNotNull();
     }
 
     @Test
     void testOperatorWithConcurrentLimitLayer() {
-        final Map<String, String> conf = new HashMap<>();
-        conf.put("root", "/opendal/");
+        final ServiceConfig.Memory memory =
+                ServiceConfig.Memory.builder().root("/opendal/").build();
         final Layer concurrentLimitLayer = new ConcurrentLimitLayer(1024);
-        @Cleanup final AsyncOperator op = AsyncOperator.of("memory", conf);
+        @Cleanup final AsyncOperator op = AsyncOperator.of(memory);
         @Cleanup final AsyncOperator layeredOp = 
op.layer(concurrentLimitLayer);
         assertThat(layeredOp.info).isNotNull();
     }
diff --git 
a/bindings/java/src/test/java/org/apache/opendal/test/MetadataTest.java 
b/bindings/java/src/test/java/org/apache/opendal/test/MetadataTest.java
index 821390a12..06c0009cd 100644
--- a/bindings/java/src/test/java/org/apache/opendal/test/MetadataTest.java
+++ b/bindings/java/src/test/java/org/apache/opendal/test/MetadataTest.java
@@ -23,12 +23,11 @@ import static 
org.apache.opendal.test.behavior.BehaviorTestBase.generateBytes;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.UUID;
 import org.apache.opendal.AsyncOperator;
 import org.apache.opendal.Metadata;
 import org.apache.opendal.Operator;
+import org.apache.opendal.ServiceConfig;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
@@ -38,10 +37,10 @@ public class MetadataTest {
 
     @Test
     public void testAsyncMetadata() {
-        final Map<String, String> conf = new HashMap<>();
-        conf.put("root", tempDir.toString());
+        final ServiceConfig.Fs fs =
+                ServiceConfig.Fs.builder().root(tempDir.toString()).build();
 
-        try (final AsyncOperator op = AsyncOperator.of("fs", conf)) {
+        try (final AsyncOperator op = AsyncOperator.of(fs)) {
             final String dir = UUID.randomUUID() + "/";
             op.createDir(dir).join();
             final Metadata dirMetadata = op.stat(dir).join();
@@ -69,10 +68,10 @@ public class MetadataTest {
 
     @Test
     public void testBlockingMetadata() {
-        final Map<String, String> conf = new HashMap<>();
-        conf.put("root", tempDir.toString());
+        final ServiceConfig.Fs fs =
+                ServiceConfig.Fs.builder().root(tempDir.toString()).build();
 
-        try (final Operator op = Operator.of("fs", conf)) {
+        try (final Operator op = Operator.of(fs)) {
             final String dir = UUID.randomUUID() + "/";
             op.createDir(dir);
             final Metadata dirMetadata = op.stat(dir);
diff --git 
a/bindings/java/src/test/java/org/apache/opendal/test/OperatorInfoTest.java 
b/bindings/java/src/test/java/org/apache/opendal/test/OperatorInfoTest.java
index db48d22da..511c998b4 100644
--- a/bindings/java/src/test/java/org/apache/opendal/test/OperatorInfoTest.java
+++ b/bindings/java/src/test/java/org/apache/opendal/test/OperatorInfoTest.java
@@ -21,11 +21,10 @@ package org.apache.opendal.test;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.opendal.AsyncOperator;
 import org.apache.opendal.Operator;
 import org.apache.opendal.OperatorInfo;
+import org.apache.opendal.ServiceConfig;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
@@ -35,10 +34,10 @@ public class OperatorInfoTest {
 
     @Test
     public void testBlockingOperatorInfo() {
-        final Map<String, String> conf = new HashMap<>();
-        conf.put("root", tempDir.toString());
+        final ServiceConfig.Fs fs =
+                ServiceConfig.Fs.builder().root(tempDir.toString()).build();
 
-        try (final Operator op = Operator.of("fs", conf)) {
+        try (final Operator op = Operator.of(fs)) {
             final OperatorInfo info = op.info;
             assertThat(info).isNotNull();
             assertThat(info.scheme).isEqualTo("fs");
@@ -57,9 +56,9 @@ public class OperatorInfoTest {
 
     @Test
     public void testOperatorInfo() {
-        final Map<String, String> conf = new HashMap<>();
-        conf.put("root", "/opendal/");
-        try (final AsyncOperator op = AsyncOperator.of("memory", conf)) {
+        final ServiceConfig.Memory memory =
+                ServiceConfig.Memory.builder().root("/opendal/").build();
+        try (final AsyncOperator op = AsyncOperator.of(memory)) {
             final OperatorInfo info = op.info;
             assertThat(info).isNotNull();
             assertThat(info.scheme).isEqualTo("memory");
diff --git 
a/bindings/java/src/test/java/org/apache/opendal/test/OperatorInputOutputStreamTest.java
 
b/bindings/java/src/test/java/org/apache/opendal/test/OperatorInputOutputStreamTest.java
index 13de860ca..bfbbd2244 100644
--- 
a/bindings/java/src/test/java/org/apache/opendal/test/OperatorInputOutputStreamTest.java
+++ 
b/bindings/java/src/test/java/org/apache/opendal/test/OperatorInputOutputStreamTest.java
@@ -23,13 +23,12 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.stream.Stream;
 import org.apache.opendal.Operator;
 import org.apache.opendal.OperatorInputStream;
 import org.apache.opendal.OperatorOutputStream;
+import org.apache.opendal.ServiceConfig;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
@@ -39,10 +38,10 @@ public class OperatorInputOutputStreamTest {
 
     @Test
     void testReadWriteWithStream() throws Exception {
-        final Map<String, String> conf = new HashMap<>();
-        conf.put("root", tempDir.toString());
+        final ServiceConfig.Fs fs =
+                ServiceConfig.Fs.builder().root(tempDir.toString()).build();
 
-        try (final Operator op = Operator.of("fs", conf)) {
+        try (final Operator op = Operator.of(fs)) {
             final String path = "OperatorInputOutputStreamTest.txt";
             final long multi = 1024 * 1024;
 
diff --git 
a/bindings/java/src/test/java/org/apache/opendal/test/OperatorUtf8DecodeTest.java
 
b/bindings/java/src/test/java/org/apache/opendal/test/OperatorUtf8DecodeTest.java
index 3c7d6fbbf..031b411a7 100644
--- 
a/bindings/java/src/test/java/org/apache/opendal/test/OperatorUtf8DecodeTest.java
+++ 
b/bindings/java/src/test/java/org/apache/opendal/test/OperatorUtf8DecodeTest.java
@@ -21,10 +21,9 @@ package org.apache.opendal.test;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.opendal.Metadata;
 import org.apache.opendal.Operator;
+import org.apache.opendal.ServiceConfig;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
@@ -39,10 +38,10 @@ public class OperatorUtf8DecodeTest {
      */
     @Test
     public void testWriteFileWithNonAsciiName() {
-        final Map<String, String> conf = new HashMap<>();
-        conf.put("root", tempDir.toString());
+        final ServiceConfig.Fs fs =
+                ServiceConfig.Fs.builder().root(tempDir.toString()).build();
 
-        try (final Operator op = Operator.of("fs", conf)) {
+        try (final Operator op = Operator.of(fs)) {
             final String path = "βŒπŸ˜±δΈ­ζ–‡.test";
             final byte[] content = "βŒπŸ˜±δΈ­ζ–‡".getBytes();
             op.write(path, content);

Reply via email to