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 5403ea2e3393bd79f60219d3bc875f432b8f40ac Author: tison <[email protected]> AuthorDate: Fri Jan 3 17:37:12 2025 +0800 fixup name Signed-off-by: tison <[email protected]> --- bindings/java/pom.xml | 13 +++++++++++++ bindings/java/src/lib.rs | 4 ++-- .../src/main/java/org/apache/opendal/AsyncOperator.java | 14 +++++++------- .../java/src/main/java/org/apache/opendal/Operator.java | 6 +++--- dev/src/generate/java.j2 | 12 ++++++++++++ 5 files changed, 37 insertions(+), 12 deletions(-) diff --git a/bindings/java/pom.xml b/bindings/java/pom.xml index a9e719a36..70de49085 100644 --- a/bindings/java/pom.xml +++ b/bindings/java/pom.xml @@ -70,6 +70,7 @@ <commons-io.version>2.16.1</commons-io.version> <dotenv.version>2.3.2</dotenv.version> <lombok.version>1.18.34</lombok.version> + <jackson.version>2.18.2</jackson.version> <slf4j.version>2.0.7</slf4j.version> <httpclient.version>5.2</httpclient.version> @@ -92,6 +93,13 @@ <type>pom</type> <scope>import</scope> </dependency> + <dependency> + <groupId>com.fasterxml.jackson</groupId> + <artifactId>jackson-bom</artifactId> + <version>${jackson.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> <dependency> <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> @@ -134,6 +142,11 @@ <scope>provided</scope> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + </dependency> + <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-suite</artifactId> diff --git a/bindings/java/src/lib.rs b/bindings/java/src/lib.rs index eb317f264..45a0554ed 100644 --- a/bindings/java/src/lib.rs +++ b/bindings/java/src/lib.rs @@ -70,7 +70,7 @@ fn make_presigned_request<'a>(env: &mut JNIEnv<'a>, req: PresignedRequest) -> Re } fn make_operator_info<'a>(env: &mut JNIEnv<'a>, info: OperatorInfo) -> Result<JObject<'a>> { - let schema = env.new_string(info.scheme().to_string())?; + let scheme = env.new_string(info.scheme().to_string())?; let root = env.new_string(info.root().to_string())?; let name = env.new_string(info.name().to_string())?; let full_capability_obj = make_capability(env, info.full_capability())?; @@ -81,7 +81,7 @@ fn make_operator_info<'a>(env: &mut JNIEnv<'a>, info: OperatorInfo) -> Result<JO "org/apache/opendal/OperatorInfo", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/apache/opendal/Capability;Lorg/apache/opendal/Capability;)V", &[ - JValue::Object(&schema), + JValue::Object(&scheme), JValue::Object(&root), JValue::Object(&name), JValue::Object(&full_capability_obj), 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 06d3fa72a..3041bac3c 100644 --- a/bindings/java/src/main/java/org/apache/opendal/AsyncOperator.java +++ b/bindings/java/src/main/java/org/apache/opendal/AsyncOperator.java @@ -113,11 +113,11 @@ public class AsyncOperator extends NativeObject { * You can find all possible schemes <a href="https://docs.rs/opendal/latest/opendal/enum.Scheme.html">here</a> * and see what config options each service supports. * - * @param schema the name of the underneath service to access data from. + * @param scheme the name of the underneath service to access data from. * @param map a map of properties to construct the underneath operator. */ - public static AsyncOperator of(String schema, Map<String, String> map) { - return of(schema, map, null); + public static AsyncOperator of(String scheme, Map<String, String> map) { + return of(scheme, map, null); } /** @@ -127,13 +127,13 @@ public class AsyncOperator extends NativeObject { * You can find all possible schemes <a href="https://docs.rs/opendal/latest/opendal/enum.Scheme.html">here</a> * and see what config options each service supports. * - * @param schema the name of the underneath service to access data from. + * @param scheme the name of the underneath service to access data from. * @param map a map of properties to construct the underneath operator. * @param executor the underneath executor to run async operations; {@code null} to use a default global executor. */ - public static AsyncOperator of(String schema, Map<String, String> map, AsyncExecutor executor) { + public static AsyncOperator of(String scheme, Map<String, String> map, AsyncExecutor executor) { final long executorHandle = executor != null ? executor.nativeHandle : 0; - final long nativeHandle = constructor(executorHandle, schema, map); + final long nativeHandle = constructor(executorHandle, scheme, map); final OperatorInfo info = makeOperatorInfo(nativeHandle); return new AsyncOperator(nativeHandle, executorHandle, info); } @@ -248,7 +248,7 @@ public class AsyncOperator extends NativeObject { private static native long duplicate(long nativeHandle); - private static native long constructor(long executorHandle, String schema, Map<String, String> map); + private static native long constructor(long executorHandle, String scheme, Map<String, String> map); private static native long read(long nativeHandle, long executorHandle, String path); 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 bb08c87a9..f01793994 100644 --- a/bindings/java/src/main/java/org/apache/opendal/Operator.java +++ b/bindings/java/src/main/java/org/apache/opendal/Operator.java @@ -37,11 +37,11 @@ public class Operator extends NativeObject { * You can find all possible schemes <a href="https://docs.rs/opendal/latest/opendal/enum.Scheme.html">here</a> * and see what config options each service supports. * - * @param schema the name of the underneath service to access data from. + * @param scheme the name of the underneath service to access data from. * @param map a map of properties to construct the underneath operator. */ - public static Operator of(String schema, Map<String, String> map) { - try (final AsyncOperator operator = AsyncOperator.of(schema, map)) { + public static Operator of(String scheme, Map<String, String> map) { + try (final AsyncOperator operator = AsyncOperator.of(scheme, map)) { return operator.blocking(); } } diff --git a/dev/src/generate/java.j2 b/dev/src/generate/java.j2 index 4eda6c496..57c4fef15 100644 --- a/dev/src/generate/java.j2 +++ b/dev/src/generate/java.j2 @@ -21,23 +21,35 @@ package org.apache.opendal; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; import java.time.Duration; +import lombok.AccessLevel; +import lombok.Builder; import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.jackson.Jacksonized; /** * Service configurations that are mapped from * <a href="https://docs.rs/opendal/*/opendal/services/index.html>OpenDAL's services</a>. */ @SuppressWarnings("unused") // intended to be used by users +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "schema") public interface ServiceConfig { {% for srv in srvs %} + @Builder @Data + @RequiredArgsConstructor(access = AccessLevel.PRIVATE) + @Jacksonized class {{srv}} { {%- for field in srvs[srv].config %} {%- if field.deprecated %} /** * @deprecated {{field.deprecated["note"]}} */ + @JsonProperty("{{field.name}}") {%- endif %} public final {{make_java_type(field.value)}} {{field.name}}; {%- endfor %}
