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"
},
{