From 73be54ca93f50ba2c0c142c347f76d04b0c8ce2a Mon Sep 17 00:00:00 2001 From: tison Date: Sat, 27 May 2023 22:33:15 +0800 Subject: [PATCH 1/6] docs: for BlockingOperator Signed-off-by: tison --- .../org/apache/opendal/BlockingOperator.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java b/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java index cb2df68976d0..911b482340fb 100644 --- a/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java +++ b/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java @@ -21,7 +21,21 @@ import java.util.Map; +/** + * A blocking operator represents an underneath OpenDAL operator that + * accesses data synchronously. + */ public class BlockingOperator extends NativeObject { + /** + * Construct a blocking operator: + * + *

+ * You can find all possible schemes here + * and see what config options each service supports. + * + * @param schema the name of the underneath service to access data from. + * @param map a map of properties to construct the underneath operator. + */ public BlockingOperator(String schema, Map map) { super(constructor(schema, map)); } @@ -30,12 +44,12 @@ public void write(String fileName, String content) { write(nativeHandle, fileName, content); } - public String read(String s) { - return read(nativeHandle, s); + public String read(String fileName) { + return read(nativeHandle, fileName); } - public void delete(String s) { - delete(nativeHandle, s); + public void delete(String fileName) { + delete(nativeHandle, fileName); } public Metadata stat(String fileName) { From 6e3897a267f7bcc9b61ff819242b66a89d22af27 Mon Sep 17 00:00:00 2001 From: tison Date: Sat, 27 May 2023 22:50:22 +0800 Subject: [PATCH 2/6] build: add spotless plugin to check code style Signed-off-by: tison --- bindings/java/pom.xml | 29 +++++++++++++++++++ .../org/apache/opendal/BlockingOperator.java | 4 +++ .../java/org/apache/opendal/Environment.java | 1 - .../java/org/apache/opendal/Metadata.java | 2 ++ .../java/org/apache/opendal/NativeObject.java | 9 ++---- .../java/org/apache/opendal/Operator.java | 5 +++- .../org/apache/opendal/AsyncStepsTest.java | 8 ++--- .../apache/opendal/BlockingOperatorTest.java | 12 ++++---- .../java/org/apache/opendal/CucumberTest.java | 7 ++--- .../java/org/apache/opendal/StepsTest.java | 8 ++--- 10 files changed, 55 insertions(+), 30 deletions(-) diff --git a/bindings/java/pom.xml b/bindings/java/pom.xml index 273a534a5b71..ac8389161faf 100644 --- a/bindings/java/pom.xml +++ b/bindings/java/pom.xml @@ -60,6 +60,7 @@ 3.0.0 3.1.0 + 2.37.0 @@ -196,6 +197,34 @@ + + + com.diffplug.spotless + spotless-maven-plugin + ${spotless.version} + + + + 2.30.0 + + + + \#| + + + + + + + + + codestyle + + check + + + + diff --git a/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java b/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java index 911b482340fb..b5d600a5c037 100644 --- a/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java +++ b/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java @@ -60,8 +60,12 @@ public Metadata stat(String fileName) { protected native void disposeInternal(long handle); private static native long constructor(String schema, Map map); + private static native void write(long nativeHandle, String fileName, String content); + private static native String read(long nativeHandle, String fileName); + private static native void delete(long nativeHandle, String fileName); + private static native long stat(long nativeHandle, String file); } diff --git a/bindings/java/src/main/java/org/apache/opendal/Environment.java b/bindings/java/src/main/java/org/apache/opendal/Environment.java index a2c2c0ca6215..719a64361210 100644 --- a/bindings/java/src/main/java/org/apache/opendal/Environment.java +++ b/bindings/java/src/main/java/org/apache/opendal/Environment.java @@ -60,5 +60,4 @@ public static String getClassifier() { public static String getVersion() { return INSTANCE.projectVersion; } - } diff --git a/bindings/java/src/main/java/org/apache/opendal/Metadata.java b/bindings/java/src/main/java/org/apache/opendal/Metadata.java index 0a815a290012..ff4985d7c3dc 100644 --- a/bindings/java/src/main/java/org/apache/opendal/Metadata.java +++ b/bindings/java/src/main/java/org/apache/opendal/Metadata.java @@ -34,6 +34,8 @@ public long getContentLength() { @Override protected native void disposeInternal(long handle); + private static native boolean isFile(long nativeHandle); + private static native long getContentLength(long nativeHandle); } diff --git a/bindings/java/src/main/java/org/apache/opendal/NativeObject.java b/bindings/java/src/main/java/org/apache/opendal/NativeObject.java index edd9da92e422..80c15a1f82bb 100644 --- a/bindings/java/src/main/java/org/apache/opendal/NativeObject.java +++ b/bindings/java/src/main/java/org/apache/opendal/NativeObject.java @@ -30,8 +30,7 @@ private enum LibraryState { LOADED } - private static final AtomicReference libraryLoaded = - new AtomicReference<>(LibraryState.NOT_LOADED); + private static final AtomicReference libraryLoaded = new AtomicReference<>(LibraryState.NOT_LOADED); static { NativeObject.loadLibrary(); @@ -43,11 +42,7 @@ public static void loadLibrary() { } if (libraryLoaded.compareAndSet(LibraryState.NOT_LOADED, LibraryState.LOADING)) { - JarJniLoader.loadLib( - NativeObject.class, - "/native", - "opendal_java", - Environment.getClassifier()); + JarJniLoader.loadLib(NativeObject.class, "/native", "opendal_java", Environment.getClassifier()); libraryLoaded.set(LibraryState.LOADED); return; } 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 1a615e5615a2..94f5c23b9d5a 100644 --- a/bindings/java/src/main/java/org/apache/opendal/Operator.java +++ b/bindings/java/src/main/java/org/apache/opendal/Operator.java @@ -25,7 +25,7 @@ import java.util.concurrent.ConcurrentHashMap; public class Operator extends NativeObject { - private static AsyncRegistry registry() { + private static AsyncRegistry registry() { return AsyncRegistry.INSTANCE; } @@ -84,7 +84,10 @@ public CompletableFuture read(String fileName) { protected native void disposeInternal(long handle); private static native long constructor(String schema, Map map); + private static native long read(long nativeHandle, String fileName); + private static native long write(long nativeHandle, String fileName, String content); + private static native long stat(long nativeHandle, String file); } diff --git a/bindings/java/src/test/java/org/apache/opendal/AsyncStepsTest.java b/bindings/java/src/test/java/org/apache/opendal/AsyncStepsTest.java index 4e5d0a132ae3..596351586daf 100644 --- a/bindings/java/src/test/java/org/apache/opendal/AsyncStepsTest.java +++ b/bindings/java/src/test/java/org/apache/opendal/AsyncStepsTest.java @@ -19,17 +19,15 @@ package org.apache.opendal; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import java.util.HashMap; import java.util.Map; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - public class AsyncStepsTest { Operator op; diff --git a/bindings/java/src/test/java/org/apache/opendal/BlockingOperatorTest.java b/bindings/java/src/test/java/org/apache/opendal/BlockingOperatorTest.java index 8964cd17bf04..6cb8e296001b 100644 --- a/bindings/java/src/test/java/org/apache/opendal/BlockingOperatorTest.java +++ b/bindings/java/src/test/java/org/apache/opendal/BlockingOperatorTest.java @@ -46,9 +46,9 @@ public void clean() { @Test public void testStatNotExistFile() { assertThatExceptionOfType(OpenDALException.class) - .isThrownBy(() -> op.stat("nonexistence")) - .extracting(OpenDALException::getCode) - .isEqualTo(OpenDALException.Code.NotFound); + .isThrownBy(() -> op.stat("nonexistence")) + .extracting(OpenDALException::getCode) + .isEqualTo(OpenDALException.Code.NotFound); } @Test @@ -57,8 +57,8 @@ public void testCreateAndDelete() { assertThat(op.read("testCreateAndDelete")).isEqualTo("Odin"); op.delete("testCreateAndDelete"); assertThatExceptionOfType(OpenDALException.class) - .isThrownBy(() -> op.stat("testCreateAndDelete")) - .extracting(OpenDALException::getCode) - .isEqualTo(OpenDALException.Code.NotFound); + .isThrownBy(() -> op.stat("testCreateAndDelete")) + .extracting(OpenDALException::getCode) + .isEqualTo(OpenDALException.Code.NotFound); } } diff --git a/bindings/java/src/test/java/org/apache/opendal/CucumberTest.java b/bindings/java/src/test/java/org/apache/opendal/CucumberTest.java index 785ac34cec4c..ab8ae9c31f69 100644 --- a/bindings/java/src/test/java/org/apache/opendal/CucumberTest.java +++ b/bindings/java/src/test/java/org/apache/opendal/CucumberTest.java @@ -19,17 +19,14 @@ package org.apache.opendal; +import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME; import org.junit.platform.suite.api.ConfigurationParameter; import org.junit.platform.suite.api.IncludeEngines; import org.junit.platform.suite.api.SelectClasspathResource; import org.junit.platform.suite.api.Suite; -import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME; - @Suite @IncludeEngines("cucumber") @SelectClasspathResource("features") @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "org.apache.opendal") -public class CucumberTest { - -} \ No newline at end of file +public class CucumberTest {} diff --git a/bindings/java/src/test/java/org/apache/opendal/StepsTest.java b/bindings/java/src/test/java/org/apache/opendal/StepsTest.java index d15f2dcc8652..b081990d35c5 100644 --- a/bindings/java/src/test/java/org/apache/opendal/StepsTest.java +++ b/bindings/java/src/test/java/org/apache/opendal/StepsTest.java @@ -19,16 +19,15 @@ package org.apache.opendal; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; import java.util.HashMap; import java.util.Map; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - public class StepsTest { BlockingOperator op; @@ -50,7 +49,6 @@ public void the_blocking_file_test_should_exist(String fileName) { assertNotNull(metadata); } - @Then("The blocking file {string} entry mode must be file") public void the_blocking_file_test_entry_mode_must_be_file(String fileName) { Metadata metadata = op.stat(fileName); From 5c157941d1c572480b692843986e50effc68bc2b Mon Sep 17 00:00:00 2001 From: tison Date: Sat, 27 May 2023 22:53:37 +0800 Subject: [PATCH 3/6] docs(bindings/java): how to format code Signed-off-by: tison --- bindings/java/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bindings/java/README.md b/bindings/java/README.md index 320b1994bbd1..204875350e2f 100644 --- a/bindings/java/README.md +++ b/bindings/java/README.md @@ -57,3 +57,11 @@ You can run tests with the following command: ```shell mvn clean verify ``` + +Additionally, this project uses [spotless](https://github.com/diffplug/spotless) for code formatting so that all developers share a consistent code style without bikeshedding on it. + +You can apply the code style with the following command:: + +```shell +mvn spotless:apply +``` From 9d3511408cffd5e4a35a40aee1b6e7e57ebbcb90 Mon Sep 17 00:00:00 2001 From: tison Date: Sat, 27 May 2023 23:17:29 +0800 Subject: [PATCH 4/6] apply suggestion Signed-off-by: tison --- bindings/java/pom.xml | 8 ---- bindings/java/src/blocking_operator.rs | 40 +++++++++--------- .../org/apache/opendal/BlockingOperator.java | 22 +++++----- .../java/org/apache/opendal/Operator.java | 16 +++---- bindings/java/src/operator.rs | 42 +++++++++---------- .../org/apache/opendal/AsyncStepsTest.java | 20 ++++----- .../java/org/apache/opendal/StepsTest.java | 20 ++++----- 7 files changed, 80 insertions(+), 88 deletions(-) diff --git a/bindings/java/pom.xml b/bindings/java/pom.xml index ac8389161faf..59934453f28f 100644 --- a/bindings/java/pom.xml +++ b/bindings/java/pom.xml @@ -216,14 +216,6 @@ - - - codestyle - - check - - - diff --git a/bindings/java/src/blocking_operator.rs b/bindings/java/src/blocking_operator.rs index 55d718581a0f..e8ca350489c3 100644 --- a/bindings/java/src/blocking_operator.rs +++ b/bindings/java/src/blocking_operator.rs @@ -70,17 +70,17 @@ pub unsafe extern "system" fn Java_org_apache_opendal_BlockingOperator_read( mut env: JNIEnv, _: JClass, op: *mut BlockingOperator, - file: JString, + path: JString, ) -> jstring { - intern_read(&mut env, &mut *op, file).unwrap_or_else(|e| { + intern_read(&mut env, &mut *op, path).unwrap_or_else(|e| { e.throw(&mut env); JObject::null().into_raw() }) } -fn intern_read(env: &mut JNIEnv, op: &mut BlockingOperator, file: JString) -> Result { - let file = env.get_string(&file)?; - let content = String::from_utf8(op.read(file.to_str()?)?)?; +fn intern_read(env: &mut JNIEnv, op: &mut BlockingOperator, path: JString) -> Result { + let path = env.get_string(&path)?; + let content = String::from_utf8(op.read(path.to_str()?)?)?; Ok(env.new_string(content)?.into_raw()) } @@ -92,10 +92,10 @@ pub unsafe extern "system" fn Java_org_apache_opendal_BlockingOperator_write( mut env: JNIEnv, _: JClass, op: *mut BlockingOperator, - file: JString, + path: JString, content: JString, ) { - intern_write(&mut env, &mut *op, file, content).unwrap_or_else(|e| { + intern_write(&mut env, &mut *op, path, content).unwrap_or_else(|e| { e.throw(&mut env); }) } @@ -103,12 +103,12 @@ pub unsafe extern "system" fn Java_org_apache_opendal_BlockingOperator_write( fn intern_write( env: &mut JNIEnv, op: &mut BlockingOperator, - file: JString, + path: JString, content: JString, ) -> Result<()> { - let file = env.get_string(&file)?; + let path = env.get_string(&path)?; let content = env.get_string(&content)?; - Ok(op.write(file.to_str()?, content.to_str()?.to_string())?) + Ok(op.write(path.to_str()?, content.to_str()?.to_string())?) } /// # Safety @@ -119,17 +119,17 @@ pub unsafe extern "system" fn Java_org_apache_opendal_BlockingOperator_stat( mut env: JNIEnv, _: JClass, op: *mut BlockingOperator, - file: JString, + path: JString, ) -> jlong { - intern_stat(&mut env, &mut *op, file).unwrap_or_else(|e| { + intern_stat(&mut env, &mut *op, path).unwrap_or_else(|e| { e.throw(&mut env); 0 }) } -fn intern_stat(env: &mut JNIEnv, op: &mut BlockingOperator, file: JString) -> Result { - let file = env.get_string(&file)?; - let metadata = op.stat(file.to_str()?)?; +fn intern_stat(env: &mut JNIEnv, op: &mut BlockingOperator, path: JString) -> Result { + let path = env.get_string(&path)?; + let metadata = op.stat(path.to_str()?)?; Ok(Box::into_raw(Box::new(metadata)) as jlong) } @@ -141,14 +141,14 @@ pub unsafe extern "system" fn Java_org_apache_opendal_BlockingOperator_delete( mut env: JNIEnv, _: JClass, op: *mut BlockingOperator, - file: JString, + path: JString, ) { - intern_delete(&mut env, &mut *op, file).unwrap_or_else(|e| { + intern_delete(&mut env, &mut *op, path).unwrap_or_else(|e| { e.throw(&mut env); }) } -fn intern_delete(env: &mut JNIEnv, op: &mut BlockingOperator, file: JString) -> Result<()> { - let file = env.get_string(&file)?; - Ok(op.delete(file.to_str()?)?) +fn intern_delete(env: &mut JNIEnv, op: &mut BlockingOperator, path: JString) -> Result<()> { + let path = env.get_string(&path)?; + Ok(op.delete(path.to_str()?)?) } diff --git a/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java b/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java index b5d600a5c037..59fcf62722bf 100644 --- a/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java +++ b/bindings/java/src/main/java/org/apache/opendal/BlockingOperator.java @@ -40,20 +40,20 @@ public BlockingOperator(String schema, Map map) { super(constructor(schema, map)); } - public void write(String fileName, String content) { - write(nativeHandle, fileName, content); + public void write(String path, String content) { + write(nativeHandle, path, content); } - public String read(String fileName) { - return read(nativeHandle, fileName); + public String read(String path) { + return read(nativeHandle, path); } - public void delete(String fileName) { - delete(nativeHandle, fileName); + public void delete(String path) { + delete(nativeHandle, path); } - public Metadata stat(String fileName) { - return new Metadata(stat(nativeHandle, fileName)); + public Metadata stat(String path) { + return new Metadata(stat(nativeHandle, path)); } @Override @@ -61,11 +61,11 @@ public Metadata stat(String fileName) { private static native long constructor(String schema, Map map); - private static native void write(long nativeHandle, String fileName, String content); + private static native void write(long nativeHandle, String path, String content); - private static native String read(long nativeHandle, String fileName); + private static native String read(long nativeHandle, String path); - private static native void delete(long nativeHandle, String fileName); + private static native void delete(long nativeHandle, String path); private static native long stat(long nativeHandle, String file); } 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 94f5c23b9d5a..f46feb337bfd 100644 --- a/bindings/java/src/main/java/org/apache/opendal/Operator.java +++ b/bindings/java/src/main/java/org/apache/opendal/Operator.java @@ -64,19 +64,19 @@ public Operator(String schema, Map map) { super(constructor(schema, map)); } - public CompletableFuture write(String fileName, String content) { - final long requestId = write(nativeHandle, fileName, content); + public CompletableFuture write(String path, String content) { + final long requestId = write(nativeHandle, path, content); return registry().take(requestId); } - public CompletableFuture stat(String fileName) { - final long requestId = stat(nativeHandle, fileName); + public CompletableFuture stat(String path) { + final long requestId = stat(nativeHandle, path); final CompletableFuture f = registry().take(requestId); return f.thenApply(Metadata::new); } - public CompletableFuture read(String fileName) { - final long requestId = read(nativeHandle, fileName); + public CompletableFuture read(String path) { + final long requestId = read(nativeHandle, path); return registry().take(requestId); } @@ -85,9 +85,9 @@ public CompletableFuture read(String fileName) { private static native long constructor(String schema, Map map); - private static native long read(long nativeHandle, String fileName); + private static native long read(long nativeHandle, String path); - private static native long write(long nativeHandle, String fileName, String content); + private static native long write(long nativeHandle, String path, String content); private static native long stat(long nativeHandle, String file); } diff --git a/bindings/java/src/operator.rs b/bindings/java/src/operator.rs index 7fd87b57ac0c..8a375e06844b 100644 --- a/bindings/java/src/operator.rs +++ b/bindings/java/src/operator.rs @@ -72,10 +72,10 @@ pub unsafe extern "system" fn Java_org_apache_opendal_Operator_write( mut env: JNIEnv, _: JClass, op: *mut Operator, - file: JString, + path: JString, content: JString, ) -> jlong { - intern_write(&mut env, op, file, content).unwrap_or_else(|e| { + intern_write(&mut env, op, path, content).unwrap_or_else(|e| { e.throw(&mut env); 0 }) @@ -84,26 +84,26 @@ pub unsafe extern "system" fn Java_org_apache_opendal_Operator_write( fn intern_write( env: &mut JNIEnv, op: *mut Operator, - file: JString, + path: JString, content: JString, ) -> Result { let op = unsafe { &mut *op }; let id = request_id(env)?; - let file = env.get_string(&file)?.to_str()?.to_string(); + let path = env.get_string(&path)?.to_str()?.to_string(); let content = env.get_string(&content)?.to_str()?.to_string(); let runtime = unsafe { RUNTIME.get_unchecked() }; runtime.spawn(async move { - let result = do_write(op, file, content).await; + let result = do_write(op, path, content).await; complete_future(id, result.map(|_| JValueOwned::Void)) }); Ok(id) } -async fn do_write(op: &mut Operator, file: String, content: String) -> Result<()> { - Ok(op.write(&file, content).await?) +async fn do_write(op: &mut Operator, path: String, content: String) -> Result<()> { + Ok(op.write(&path, content).await?) } /// # Safety @@ -114,31 +114,31 @@ pub unsafe extern "system" fn Java_org_apache_opendal_Operator_stat( mut env: JNIEnv, _: JClass, op: *mut Operator, - file: JString, + path: JString, ) -> jlong { - intern_stat(&mut env, op, file).unwrap_or_else(|e| { + intern_stat(&mut env, op, path).unwrap_or_else(|e| { e.throw(&mut env); 0 }) } -fn intern_stat(env: &mut JNIEnv, op: *mut Operator, file: JString) -> Result { +fn intern_stat(env: &mut JNIEnv, op: *mut Operator, path: JString) -> Result { let op = unsafe { &mut *op }; let id = request_id(env)?; - let file = env.get_string(&file)?.to_str()?.to_string(); + let path = env.get_string(&path)?.to_str()?.to_string(); let runtime = unsafe { RUNTIME.get_unchecked() }; runtime.spawn(async move { - let result = do_stat(op, file).await; + let result = do_stat(op, path).await; complete_future(id, result.map(JValueOwned::Long)) }); Ok(id) } -async fn do_stat(op: &mut Operator, file: String) -> Result { - let metadata = op.stat(&file).await?; +async fn do_stat(op: &mut Operator, path: String) -> Result { + let metadata = op.stat(&path).await?; Ok(Box::into_raw(Box::new(metadata)) as jlong) } @@ -150,31 +150,31 @@ pub unsafe extern "system" fn Java_org_apache_opendal_Operator_read( mut env: JNIEnv, _: JClass, op: *mut Operator, - file: JString, + path: JString, ) -> jlong { - intern_read(&mut env, op, file).unwrap_or_else(|e| { + intern_read(&mut env, op, path).unwrap_or_else(|e| { e.throw(&mut env); 0 }) } -fn intern_read(env: &mut JNIEnv, op: *mut Operator, file: JString) -> Result { +fn intern_read(env: &mut JNIEnv, op: *mut Operator, path: JString) -> Result { let op = unsafe { &mut *op }; let id = request_id(env)?; - let file = env.get_string(&file)?.to_str()?.to_string(); + let path = env.get_string(&path)?.to_str()?.to_string(); let runtime = unsafe { RUNTIME.get_unchecked() }; runtime.spawn(async move { - let result = do_read(op, file).await; + let result = do_read(op, path).await; complete_future(id, result.map(JValueOwned::Object)) }); Ok(id) } -async fn do_read<'local>(op: &mut Operator, file: String) -> Result> { - let content = op.read(&file).await?; +async fn do_read<'local>(op: &mut Operator, path: String) -> Result> { + let content = op.read(&path).await?; let content = String::from_utf8(content)?; let env = unsafe { get_current_env() }; diff --git a/bindings/java/src/test/java/org/apache/opendal/AsyncStepsTest.java b/bindings/java/src/test/java/org/apache/opendal/AsyncStepsTest.java index 596351586daf..179d47b7b446 100644 --- a/bindings/java/src/test/java/org/apache/opendal/AsyncStepsTest.java +++ b/bindings/java/src/test/java/org/apache/opendal/AsyncStepsTest.java @@ -39,31 +39,31 @@ public void a_new_open_dal_async_operator() { } @When("Async write path {string} with content {string}") - public void async_write_path_test_with_content_hello_world(String fileName, String content) { - op.write(fileName, content).join(); + public void async_write_path_test_with_content_hello_world(String path, String content) { + op.write(path, content).join(); } @Then("The async file {string} should exist") - public void the_async_file_test_should_exist(String fileName) { - Metadata metadata = op.stat(fileName).join(); + public void the_async_file_test_should_exist(String path) { + Metadata metadata = op.stat(path).join(); assertNotNull(metadata); } @Then("The async file {string} entry mode must be file") - public void the_async_file_test_entry_mode_must_be_file(String fileName) { - Metadata metadata = op.stat(fileName).join(); + public void the_async_file_test_entry_mode_must_be_file(String path) { + Metadata metadata = op.stat(path).join(); assertTrue(metadata.isFile()); } @Then("The async file {string} content length must be {int}") - public void the_async_file_test_content_length_must_be_13(String fileName, int length) { - Metadata metadata = op.stat(fileName).join(); + public void the_async_file_test_content_length_must_be_13(String path, int length) { + Metadata metadata = op.stat(path).join(); assertEquals(metadata.getContentLength(), length); } @Then("The async file {string} must have content {string}") - public void the_async_file_test_must_have_content_hello_world(String fileName, String content) { - String readContent = op.read(fileName).join(); + public void the_async_file_test_must_have_content_hello_world(String path, String content) { + String readContent = op.read(path).join(); assertEquals(content, readContent); } } diff --git a/bindings/java/src/test/java/org/apache/opendal/StepsTest.java b/bindings/java/src/test/java/org/apache/opendal/StepsTest.java index b081990d35c5..428388ee9381 100644 --- a/bindings/java/src/test/java/org/apache/opendal/StepsTest.java +++ b/bindings/java/src/test/java/org/apache/opendal/StepsTest.java @@ -39,31 +39,31 @@ public void a_new_open_dal_blocking_operator() { } @When("Blocking write path {string} with content {string}") - public void blocking_write_path_test_with_content_hello_world(String fileName, String content) { - op.write(fileName, content); + public void blocking_write_path_test_with_content_hello_world(String path, String content) { + op.write(path, content); } @Then("The blocking file {string} should exist") - public void the_blocking_file_test_should_exist(String fileName) { - Metadata metadata = op.stat(fileName); + public void the_blocking_file_test_should_exist(String path) { + Metadata metadata = op.stat(path); assertNotNull(metadata); } @Then("The blocking file {string} entry mode must be file") - public void the_blocking_file_test_entry_mode_must_be_file(String fileName) { - Metadata metadata = op.stat(fileName); + public void the_blocking_file_test_entry_mode_must_be_file(String path) { + Metadata metadata = op.stat(path); assertTrue(metadata.isFile()); } @Then("The blocking file {string} content length must be {int}") - public void the_blocking_file_test_content_length_must_be_13(String fileName, int length) { - Metadata metadata = op.stat(fileName); + public void the_blocking_file_test_content_length_must_be_13(String path, int length) { + Metadata metadata = op.stat(path); assertEquals(metadata.getContentLength(), length); } @Then("The blocking file {string} must have content {string}") - public void the_blocking_file_test_must_have_content_hello_world(String fileName, String content) { - String readContent = op.read(fileName); + public void the_blocking_file_test_must_have_content_hello_world(String path, String content) { + String readContent = op.read(path); assertEquals(content, readContent); } } From 7e1d96389f6c6770c1bb645201a21a9ae22a9d49 Mon Sep 17 00:00:00 2001 From: tison Date: Sat, 27 May 2023 23:17:37 +0800 Subject: [PATCH 5/6] apply suggestion Signed-off-by: tison --- .github/workflows/bindings_java.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/bindings_java.yml b/.github/workflows/bindings_java.yml index 5033a28c8c49..a6575d98ecfb 100644 --- a/.github/workflows/bindings_java.yml +++ b/.github/workflows/bindings_java.yml @@ -44,6 +44,19 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + + # spotless requires JDK 11 or later + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + cache: 'maven' + - name: Build and test + working-directory: bindings/java + run: mvn spotless:check + + # ensure being compatible with JDK 8 - name: Set up JDK 8 uses: actions/setup-java@v3 with: From 9b75fad9f043e2c2e8055d59f703ac879195749d Mon Sep 17 00:00:00 2001 From: tison Date: Sat, 27 May 2023 23:23:44 +0800 Subject: [PATCH 6/6] separate workflow step Signed-off-by: tison --- .github/workflows/bindings_java.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/bindings_java.yml b/.github/workflows/bindings_java.yml index a6575d98ecfb..07bc9271ed91 100644 --- a/.github/workflows/bindings_java.yml +++ b/.github/workflows/bindings_java.yml @@ -40,12 +40,10 @@ permissions: contents: read jobs: - test: + check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - # spotless requires JDK 11 or later - name: Set up JDK 17 uses: actions/setup-java@v3 with: @@ -56,7 +54,10 @@ jobs: working-directory: bindings/java run: mvn spotless:check - # ensure being compatible with JDK 8 + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 - name: Set up JDK 8 uses: actions/setup-java@v3 with: