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 %}

Reply via email to