1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.builder.xsd;
17
18 import static org.junit.jupiter.api.Assertions.*;
19
20 import java.io.InputStream;
21 import java.util.Arrays;
22 import java.util.HashSet;
23
24 import org.apache.ibatis.builder.CustomLongTypeHandler;
25 import org.apache.ibatis.builder.CustomObjectWrapperFactory;
26 import org.apache.ibatis.builder.CustomReflectorFactory;
27 import org.apache.ibatis.builder.CustomStringTypeHandler;
28 import org.apache.ibatis.builder.ExampleObjectFactory;
29 import org.apache.ibatis.builder.ExamplePlugin;
30 import org.apache.ibatis.builder.mapper.CustomMapper;
31 import org.apache.ibatis.builder.typehandler.CustomIntegerTypeHandler;
32 import org.apache.ibatis.builder.xml.XMLConfigBuilder;
33 import org.apache.ibatis.datasource.unpooled.UnpooledDataSource;
34 import org.apache.ibatis.domain.blog.Author;
35 import org.apache.ibatis.domain.blog.Blog;
36 import org.apache.ibatis.domain.blog.mappers.BlogMapper;
37 import org.apache.ibatis.domain.blog.mappers.NestedBlogMapper;
38 import org.apache.ibatis.domain.jpetstore.Cart;
39 import org.apache.ibatis.executor.loader.cglib.CglibProxyFactory;
40 import org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory;
41 import org.apache.ibatis.io.JBoss6VFS;
42 import org.apache.ibatis.io.Resources;
43 import org.apache.ibatis.logging.slf4j.Slf4jImpl;
44 import org.apache.ibatis.mapping.Environment;
45 import org.apache.ibatis.scripting.defaults.RawLanguageDriver;
46 import org.apache.ibatis.scripting.xmltags.XMLLanguageDriver;
47 import org.apache.ibatis.session.*;
48 import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
49 import org.apache.ibatis.type.JdbcType;
50 import org.junit.jupiter.api.Disabled;
51 import org.junit.jupiter.api.Test;
52
53 @Disabled("We'll try a different approach. See #1393")
54 class XmlConfigBuilderTest {
55
56 @Test
57 void shouldSuccessfullyLoadMinimalXMLConfigFile() throws Exception {
58
59 String resource = "org/apache/ibatis/builder/xsd/MinimalMapperConfig.xml";
60 try (InputStream inputStream = Resources.getResourceAsStream(resource)) {
61 XMLConfigBuilder builder = new XMLConfigBuilder(inputStream);
62 Configuration config = builder.parse();
63 assertNotNull(config);
64 assertEquals(AutoMappingBehavior.PARTIAL, config.getAutoMappingBehavior());
65 assertEquals(AutoMappingUnknownColumnBehavior.NONE, config.getAutoMappingUnknownColumnBehavior());
66 assertTrue(config.isCacheEnabled());
67 assertTrue(config.getProxyFactory() instanceof JavassistProxyFactory);
68 assertFalse(config.isLazyLoadingEnabled());
69 assertFalse(config.isAggressiveLazyLoading());
70 assertTrue(config.isMultipleResultSetsEnabled());
71 assertTrue(config.isUseColumnLabel());
72 assertFalse(config.isUseGeneratedKeys());
73 assertEquals(ExecutorType.SIMPLE, config.getDefaultExecutorType());
74 assertNull(config.getDefaultStatementTimeout());
75 assertNull(config.getDefaultFetchSize());
76 assertFalse(config.isMapUnderscoreToCamelCase());
77 assertFalse(config.isSafeRowBoundsEnabled());
78 assertEquals(LocalCacheScope.SESSION, config.getLocalCacheScope());
79 assertEquals(JdbcType.OTHER, config.getJdbcTypeForNull());
80 assertEquals(new HashSet<>(Arrays.asList("equals", "clone", "hashCode", "toString")), config.getLazyLoadTriggerMethods());
81 assertTrue(config.isSafeResultHandlerEnabled());
82 assertTrue(config.getDefaultScriptingLanguageInstance() instanceof XMLLanguageDriver);
83 assertFalse(config.isCallSettersOnNulls());
84 assertNull(config.getLogPrefix());
85 assertNull(config.getLogImpl());
86 assertNull(config.getConfigurationFactory());
87 assertFalse(config.isShrinkWhitespacesInSql());
88 assertFalse(config.isArgNameBasedConstructorAutoMapping());
89 } finally {
90
91 }
92 }
93
94 @Test
95 void shouldSuccessfullyLoadXMLConfigFile() throws Exception {
96
97 String resource = "org/apache/ibatis/builder/xsd/CustomizedSettingsMapperConfig.xml";
98 try (InputStream inputStream = Resources.getResourceAsStream(resource)) {
99 XMLConfigBuilder builder = new XMLConfigBuilder(inputStream);
100 Configuration config = builder.parse();
101
102 assertEquals(AutoMappingBehavior.NONE, config.getAutoMappingBehavior());
103 assertEquals(AutoMappingUnknownColumnBehavior.WARNING, config.getAutoMappingUnknownColumnBehavior());
104 assertFalse(config.isCacheEnabled());
105 assertTrue(config.getProxyFactory() instanceof CglibProxyFactory);
106 assertTrue(config.isLazyLoadingEnabled());
107 assertTrue(config.isAggressiveLazyLoading());
108 assertFalse(config.isMultipleResultSetsEnabled());
109 assertFalse(config.isUseColumnLabel());
110 assertTrue(config.isUseGeneratedKeys());
111 assertEquals(ExecutorType.BATCH, config.getDefaultExecutorType());
112 assertEquals(Integer.valueOf(10), config.getDefaultStatementTimeout());
113 assertEquals(Integer.valueOf(100), config.getDefaultFetchSize());
114 assertTrue(config.isMapUnderscoreToCamelCase());
115 assertTrue(config.isSafeRowBoundsEnabled());
116 assertEquals(LocalCacheScope.STATEMENT, config.getLocalCacheScope());
117 assertEquals(JdbcType.NULL, config.getJdbcTypeForNull());
118 assertEquals(new HashSet<>(Arrays.asList("equals", "clone", "hashCode", "toString", "xxx")), config.getLazyLoadTriggerMethods());
119 assertFalse(config.isSafeResultHandlerEnabled());
120 assertTrue(config.getDefaultScriptingLanguageInstance() instanceof RawLanguageDriver);
121 assertTrue(config.isCallSettersOnNulls());
122 assertEquals("mybatis_", config.getLogPrefix());
123 assertEquals(Slf4jImpl.class.getName(), config.getLogImpl().getName());
124 assertEquals(JBoss6VFS.class.getName(), config.getVfsImpl().getName());
125 assertEquals(String.class.getName(), config.getConfigurationFactory().getName());
126 assertTrue(config.isShrinkWhitespacesInSql());
127 assertTrue(config.isArgNameBasedConstructorAutoMapping());
128
129 assertEquals(Author.class, config.getTypeAliasRegistry().getTypeAliases().get("blogauthor"));
130 assertEquals(Blog.class, config.getTypeAliasRegistry().getTypeAliases().get("blog"));
131 assertEquals(Cart.class, config.getTypeAliasRegistry().getTypeAliases().get("cart"));
132
133 assertTrue(config.getTypeHandlerRegistry().getTypeHandler(Integer.class) instanceof CustomIntegerTypeHandler);
134 assertTrue(config.getTypeHandlerRegistry().getTypeHandler(Long.class) instanceof CustomLongTypeHandler);
135 assertTrue(config.getTypeHandlerRegistry().getTypeHandler(String.class) instanceof CustomStringTypeHandler);
136 assertTrue(config.getTypeHandlerRegistry().getTypeHandler(String.class, JdbcType.VARCHAR) instanceof CustomStringTypeHandler);
137
138 ExampleObjectFactory objectFactory = (ExampleObjectFactory)config.getObjectFactory();
139 assertEquals(1, objectFactory.getProperties().size());
140 assertEquals("100", objectFactory.getProperties().getProperty("objectFactoryProperty"));
141
142 assertTrue(config.getObjectWrapperFactory() instanceof CustomObjectWrapperFactory);
143
144 assertTrue(config.getReflectorFactory() instanceof CustomReflectorFactory);
145
146 ExamplePlugin plugin = (ExamplePlugin)config.getInterceptors().get(0);
147 assertEquals(1, plugin.getProperties().size());
148 assertEquals("100", plugin.getProperties().getProperty("pluginProperty"));
149
150 Environment environment = config.getEnvironment();
151 assertEquals("development", environment.getId());
152 assertTrue(environment.getDataSource() instanceof UnpooledDataSource);
153 assertTrue(environment.getTransactionFactory() instanceof JdbcTransactionFactory);
154
155 assertEquals("derby", config.getDatabaseId());
156
157 assertEquals(4, config.getMapperRegistry().getMappers().size());
158 assertTrue(config.getMapperRegistry().hasMapper(CachedAuthorMapper.class));
159 assertTrue(config.getMapperRegistry().hasMapper(CustomMapper.class));
160 assertTrue(config.getMapperRegistry().hasMapper(BlogMapper.class));
161 assertTrue(config.getMapperRegistry().hasMapper(NestedBlogMapper.class));
162 } finally {
163
164 }
165 }
166
167 }