diff --git a/bitsail-common/src/main/java/com/bytedance/bitsail/common/type/BitSailTypeParser.java b/bitsail-common/src/main/java/com/bytedance/bitsail/common/type/BitSailTypeParser.java index 0e38dd7f9..325adc35c 100644 --- a/bitsail-common/src/main/java/com/bytedance/bitsail/common/type/BitSailTypeParser.java +++ b/bitsail-common/src/main/java/com/bytedance/bitsail/common/type/BitSailTypeParser.java @@ -72,19 +72,16 @@ public static TypeInfo fromTypeString(String typeString) { LOG.debug("type string = {}.", typeString); typeString = StringUtils.trim(StringUtils.upperCase(typeString)); - if (StringUtils.startsWithIgnoreCase(typeString, Types.MAP.name()) - || StringUtils.startsWithIgnoreCase(typeString, Types.LIST.name())) { - - if (StringUtils.startsWithIgnoreCase(typeString, Types.MAP.name())) { - - String[] mapTypeString = parseMapTypeString(typeString); - return new MapTypeInfo<>(fromTypeString(mapTypeString[0]), fromTypeString(mapTypeString[1])); - } else { + if (StringUtils.startsWithIgnoreCase(typeString, Types.MAP.name())) { + String[] mapTypeString = parseMapTypeString(typeString); + return new MapTypeInfo<>(fromTypeString(mapTypeString[0]), fromTypeString(mapTypeString[1])); + } - String elementTypeString = parseListTypeString(typeString); - return new ListTypeInfo<>(fromTypeString(elementTypeString)); - } + if (StringUtils.startsWithIgnoreCase(typeString, Types.LIST.name())) { + String elementTypeString = parseListTypeString(typeString); + return new ListTypeInfo<>(fromTypeString(elementTypeString)); } + TypeInfo typeInfo = TypeInfoBridge.bridgeTypeInfo(typeString); if (Objects.isNull(typeInfo)) { throw BitSailException.asBitSailException(CommonErrorCode.INTERNAL_ERROR, diff --git a/bitsail-common/src/main/java/com/bytedance/bitsail/common/type/filemapping/FileMappingTypeInfoReader.java b/bitsail-common/src/main/java/com/bytedance/bitsail/common/type/filemapping/FileMappingTypeInfoReader.java index 39d17807b..53004ddd0 100644 --- a/bitsail-common/src/main/java/com/bytedance/bitsail/common/type/filemapping/FileMappingTypeInfoReader.java +++ b/bitsail-common/src/main/java/com/bytedance/bitsail/common/type/filemapping/FileMappingTypeInfoReader.java @@ -113,7 +113,7 @@ protected void handleEngineTypeToCustom(Map tmpToTypeInformation .format("Engine type %s not support transform to custom type.", entry.getValue())); } - toTypeInformation.put(entry.getKey(), customTypeInfo); + toTypeInformation.put(StringUtils.lowerCase(entry.getKey()), customTypeInfo); } } @@ -125,7 +125,7 @@ protected void handleCustomToEngineType(Map tmpFromTypeInformati throw new IllegalArgumentException(String.format("From Custom type %s is invalid.", entry.getKey())); } - fromTypeInformation.put(typeInfo, entry.getValue()); + fromTypeInformation.put(typeInfo, StringUtils.lowerCase(entry.getValue())); } } } diff --git a/bitsail-common/src/test/java/com/bytedance/bitsail/common/typeinfo/TypeInfoUtilsTest.java b/bitsail-common/src/test/java/com/bytedance/bitsail/common/typeinfo/TypeInfoUtilsTest.java new file mode 100644 index 000000000..b49e43d1d --- /dev/null +++ b/bitsail-common/src/test/java/com/bytedance/bitsail/common/typeinfo/TypeInfoUtilsTest.java @@ -0,0 +1,41 @@ +/* + * Copyright 2022 Bytedance Ltd. and/or its affiliates. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.bytedance.bitsail.common.typeinfo; + +import com.bytedance.bitsail.common.model.ColumnInfo; +import com.bytedance.bitsail.common.type.filemapping.FileMappingTypeInfoConverter; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +public class TypeInfoUtilsTest { + + @Test + public void testGetTypeInfos() { + FileMappingTypeInfoConverter fileMappingTypeInfoConverter = new FileMappingTypeInfoConverter("fake"); + + List columnInfos = new ArrayList<>(); + columnInfos.add(new ColumnInfo("id", "long")); + columnInfos.add(new ColumnInfo("name", "String")); + + TypeInfo[] typeInfos = TypeInfoUtils.getTypeInfos(fileMappingTypeInfoConverter, columnInfos); + Assert.assertEquals(typeInfos.length, 2); + } +} diff --git a/bitsail-common/src/test/resources/fake-type-converter.yaml b/bitsail-common/src/test/resources/fake-type-converter.yaml index f0fc43d9c..d2481bb70 100644 --- a/bitsail-common/src/test/resources/fake-type-converter.yaml +++ b/bitsail-common/src/test/resources/fake-type-converter.yaml @@ -8,7 +8,7 @@ engine.type.to.bitsail.type.converter: - source.type: date target.type: date.date - - source.type: long + - source.type: Long target.type: long - source.type: string