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

gaojun2048 pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new cab4d7530b [Fix][API] Fix `Object.class` option value can not return 
normal value (#6247)
cab4d7530b is described below

commit cab4d7530b7e3171605219b404cdad26176509dd
Author: Jia Fan <[email protected]>
AuthorDate: Fri Jan 19 10:10:09 2024 +0800

    [Fix][API] Fix `Object.class` option value can not return normal value 
(#6247)
---
 .../api/configuration/util/ConfigUtil.java         |  2 ++
 .../api/configuration/ReadableConfigTest.java      | 16 ++++++++++++++++
 .../catalog/schema/ReadonlyConfigParserTest.java   | 22 +++++++++++++++-------
 .../test/resources/conf/catalog/schema_column.conf |  4 ++++
 4 files changed, 37 insertions(+), 7 deletions(-)

diff --git 
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/ConfigUtil.java
 
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/ConfigUtil.java
index c35736d3f9..8c2064ec48 100644
--- 
a/seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/ConfigUtil.java
+++ 
b/seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/ConfigUtil.java
@@ -111,6 +111,8 @@ public class ConfigUtil {
             return (T) convertToFloat(rawValue);
         } else if (Double.class.equals(clazz)) {
             return (T) convertToDouble(rawValue);
+        } else if (Object.class.equals(clazz)) {
+            return (T) rawValue;
         }
         throw new IllegalArgumentException("Unsupported type: " + clazz);
     }
diff --git 
a/seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/ReadableConfigTest.java
 
b/seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/ReadableConfigTest.java
index 56272de408..af2fe5effb 100644
--- 
a/seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/ReadableConfigTest.java
+++ 
b/seatunnel-api/src/test/java/org/apache/seatunnel/api/configuration/ReadableConfigTest.java
@@ -226,6 +226,22 @@ public class ReadableConfigTest {
                 list, 
config.get(Options.key("option.list-str").listType().noDefaultValue()));
     }
 
+    @Test
+    public void testObjectType() {
+        Assertions.assertEquals(
+                "Hello, Apache SeaTunnel",
+                
config.get(Options.key("option.string").objectType(Object.class).noDefaultValue()));
+        Assertions.assertEquals(
+                true,
+                
config.get(Options.key("option.bool").objectType(Object.class).noDefaultValue()));
+        Assertions.assertEquals(
+                3.3333,
+                
config.get(Options.key("option.float").objectType(Object.class).noDefaultValue()));
+        Assertions.assertEquals(
+                21474836470L,
+                
config.get(Options.key("option.long").objectType(Object.class).noDefaultValue()));
+    }
+
     @Test
     public void testComplexTypeOption() {
         List<Map<String, Map<String, List<Map<String, Object>>>>> complexType =
diff --git 
a/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParserTest.java
 
b/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParserTest.java
index f2454b5e79..bc10be1b9f 100644
--- 
a/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParserTest.java
+++ 
b/seatunnel-api/src/test/java/org/apache/seatunnel/api/table/catalog/schema/ReadonlyConfigParserTest.java
@@ -34,29 +34,29 @@ import java.util.List;
 
 class ReadonlyConfigParserTest extends BaseConfigParserTest {
 
-    private final String columnConfig = "/conf/catalog/schema_column.conf";
-    private final String fieldConfig = "/conf/catalog/schema_field.conf";
+    private static final String COLUMN_CONFIG = 
"/conf/catalog/schema_column.conf";
+    private static final String FIELD_CONFIG = 
"/conf/catalog/schema_field.conf";
 
     @Test
     void parseColumn() throws FileNotFoundException, URISyntaxException {
-        ReadonlyConfig config = getReadonlyConfig(columnConfig);
+        ReadonlyConfig config = getReadonlyConfig(COLUMN_CONFIG);
 
         ReadonlyConfigParser readonlyConfigParser = new ReadonlyConfigParser();
         TableSchema tableSchema = readonlyConfigParser.parse(config);
         assertPrimaryKey(tableSchema);
         assertConstraintKey(tableSchema);
-        assertColumn(tableSchema);
+        assertColumn(tableSchema, true);
     }
 
     @Test
     void parseField() throws FileNotFoundException, URISyntaxException {
-        ReadonlyConfig config = getReadonlyConfig(fieldConfig);
+        ReadonlyConfig config = getReadonlyConfig(FIELD_CONFIG);
 
         ReadonlyConfigParser readonlyConfigParser = new ReadonlyConfigParser();
         TableSchema tableSchema = readonlyConfigParser.parse(config);
         assertPrimaryKey(tableSchema);
         assertConstraintKey(tableSchema);
-        assertColumn(tableSchema);
+        assertColumn(tableSchema, false);
     }
 
     private void assertPrimaryKey(TableSchema tableSchema) {
@@ -77,7 +77,7 @@ class ReadonlyConfigParserTest extends BaseConfigParserTest {
                 constraintKey.getColumnNames().get(0).getSortType());
     }
 
-    private void assertColumn(TableSchema tableSchema) {
+    private void assertColumn(TableSchema tableSchema, boolean 
checkDefaultValue) {
         List<Column> columns = tableSchema.getColumns();
         Assertions.assertEquals(19, columns.size());
 
@@ -108,5 +108,13 @@ class ReadonlyConfigParserTest extends 
BaseConfigParserTest {
 
         SeaTunnelRowType seatunnalRowType1 = (SeaTunnelRowType) 
seaTunnelRowType.getFieldType(17);
         Assertions.assertEquals(17, seatunnalRowType1.getTotalFields());
+
+        if (checkDefaultValue) {
+            Assertions.assertEquals(0, columns.get(0).getDefaultValue());
+            Assertions.assertEquals("I'm default value", 
columns.get(4).getDefaultValue());
+            Assertions.assertEquals(false, columns.get(5).getDefaultValue());
+            Assertions.assertEquals(1.1, columns.get(10).getDefaultValue());
+            Assertions.assertEquals("2020-01-01", 
columns.get(15).getDefaultValue());
+        }
     }
 }
diff --git a/seatunnel-api/src/test/resources/conf/catalog/schema_column.conf 
b/seatunnel-api/src/test/resources/conf/catalog/schema_column.conf
index b3e7966996..5e6c987e27 100644
--- a/seatunnel-api/src/test/resources/conf/catalog/schema_column.conf
+++ b/seatunnel-api/src/test/resources/conf/catalog/schema_column.conf
@@ -46,12 +46,14 @@ schema = {
         name = string
         type = "string"
         nullable = true
+        defaultValue = "I'm default value"
         comment = "string value"
       },
       {
         name = boolean
         type = "boolean"
         nullable = true
+        defaultValue = false
         comment = "boolean value"
       },
       {
@@ -82,6 +84,7 @@ schema = {
         name = float
         type = "float"
         nullable = true
+        defaultValue = 1.1
         comment = "float value"
       },
       {
@@ -112,6 +115,7 @@ schema = {
         name = date
         type = "date"
         nullable = true
+        defaultValue = "2020-01-01"
         comment = "date value"
       },
       {

Reply via email to