Skip to content

Commit 1a02824

Browse files
authored
Merge pull request #3252 from mawen12/optimize-mapper-builder
optimize mapper builder
2 parents a943a1b + 85bd9ba commit 1a02824

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/main/java/org/apache/ibatis/builder/xml/XMLMapperBuilder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ private ResultMap resultMapElement(XNode resultMapNode, List<ResultMapping> addi
239239
resultMappings.add(buildResultMappingFromContext(resultChild, typeClass, flags));
240240
}
241241
}
242-
String id = resultMapNode.getStringAttribute("id", resultMapNode.getValueBasedIdentifier());
242+
String id = resultMapNode.getStringAttribute("id", resultMapNode::getValueBasedIdentifier);
243243
String extend = resultMapNode.getStringAttribute("extends");
244244
Boolean autoMapping = resultMapNode.getBooleanAttribute("autoMapping");
245245
ResultMapResolver resultMapResolver = new ResultMapResolver(builderAssistant, id, typeClass, extend, discriminator,
@@ -289,8 +289,7 @@ private Discriminator processDiscriminatorElement(XNode context, Class<?> result
289289
Map<String, String> discriminatorMap = new HashMap<>();
290290
for (XNode caseChild : context.getChildren()) {
291291
String value = caseChild.getStringAttribute("value");
292-
String resultMap = caseChild.getStringAttribute("resultMap",
293-
processNestedResultMappings(caseChild, resultMappings, resultType));
292+
String resultMap = caseChild.getStringAttribute("resultMap", () -> processNestedResultMappings(caseChild, resultMappings, resultType));
294293
discriminatorMap.put(value, resultMap);
295294
}
296295
return builderAssistant.buildDiscriminator(resultType, column, javaTypeClass, jdbcTypeEnum, typeHandlerClass,

src/test/java/org/apache/ibatis/type/TypeAliasRegistryTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package org.apache.ibatis.type;
1717

18+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
1819
import static org.junit.jupiter.api.Assertions.assertEquals;
1920
import static org.junit.jupiter.api.Assertions.assertNull;
2021
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -75,4 +76,21 @@ void shouldFetchCharType() {
7576
assertEquals(char[].class, typeAliasRegistry.resolveAlias("_char[]"));
7677
}
7778

79+
@Test
80+
void shouldNotBeAbleToRegisterAliasWithEmptyString() {
81+
TypeAliasRegistry typeAliasRegistry = new TypeAliasRegistry();
82+
83+
assertThatThrownBy(() -> typeAliasRegistry.registerAlias("foo", ""))
84+
.isInstanceOf(TypeException.class)
85+
.hasMessageContaining("Error registering type alias foo for");
86+
}
87+
88+
@Test
89+
void shouldNotBeAbleToResolveNotExistsAlias() {
90+
TypeAliasRegistry typeAliasRegistry = new TypeAliasRegistry();
91+
92+
assertThatThrownBy(() -> typeAliasRegistry.resolveAlias("abc"))
93+
.isInstanceOf(TypeException.class)
94+
.hasMessageContaining("Could not resolve type alias 'abc'. Cause: java.lang.ClassNotFoundException: Cannot find class: abc");
95+
}
7896
}

0 commit comments

Comments
 (0)