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);
