You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2009/03/15 05:52:19 UTC
svn commit: r754613 - in /ibatis/trunk/java/ibatis-3/ibatis-3-core/src:
main/java/org/apache/ibatis/annotations/
main/java/org/apache/ibatis/binding/ main/java/org/apache/ibatis/parser/
test/java/org/apache/ibatis/binding/ test/java/org/apache/ibatis/c...
Author: cbegin
Date: Sun Mar 15 04:52:17 2009
New Revision: 754613
URL: http://svn.apache.org/viewvc?rev=754613&view=rev
Log:
Added discriminator unit tests
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/BaseParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SoftCacheTest.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SuperCacheTest.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java?rev=754613&r1=754612&r2=754613&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java Sun Mar 15 04:52:17 2009
@@ -139,7 +139,7 @@
public @interface Case {
String value();
Class type();
- Result[] results();
+ Result[] results() default {};
}
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java?rev=754613&r1=754612&r2=754613&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperAnnotationParser.java Sun Mar 15 04:52:17 2009
@@ -51,16 +51,28 @@
}
private void parseResultsAndConstructorArgs(Method method) {
- ConstructorArgs args = method.getAnnotation(ConstructorArgs.class);
- Results results = method.getAnnotation(Results.class);
Class returnType = getReturnType(method);
- String resultMapId = type.getName() + "." + method.getName();
- if (hasResults(method)) {
+ if (returnType != null) {
+ ConstructorArgs args = method.getAnnotation(ConstructorArgs.class);
+ Results results = method.getAnnotation(Results.class);
TypeDiscriminator typeDiscriminator = method.getAnnotation(TypeDiscriminator.class);
+ String resultMapId = generateResultMapName(method);
applyResultMap(resultMapId, returnType, argsIf(args), resultsIf(results), typeDiscriminator);
}
}
+ private String generateResultMapName(Method method) {
+ StringBuilder suffix = new StringBuilder();
+ for (Class c : method.getParameterTypes()) {
+ suffix.append("-");
+ suffix.append(c.getSimpleName());
+ }
+ if (suffix.length() < 1) {
+ suffix.append("-void");
+ }
+ return type.getName() + "." + method.getName() + suffix;
+ }
+
private void applyResultMap(String resultMapId, Class returnType, Arg[] args, Result[] results, TypeDiscriminator discriminator) {
applyNestedResultMaps(resultMapId, returnType, results);
configurator.resultMapStart(resultMapId, returnType, null);
@@ -93,7 +105,7 @@
result.typeHandler() == void.class ? null : result.typeHandler(),
flags);
}
-
+ configurator.resultMapEnd();
}
}
}
@@ -101,9 +113,9 @@
private void applyDiscriminator(String resultMapId, TypeDiscriminator discriminator) {
if (discriminator != null) {
String column = discriminator.column();
- Class javaType = discriminator.javaType();
- JdbcType jdbcType = discriminator.jdbcType();
- Class typeHandler = discriminator.typeHandler();
+ Class javaType = discriminator.javaType() == void.class ? String.class : discriminator.javaType();
+ JdbcType jdbcType = discriminator.jdbcType() == JdbcType.UNDEFINED ? null : discriminator.jdbcType();
+ Class typeHandler = discriminator.typeHandler() == void.class ? null : discriminator.typeHandler();
Case[] cases = discriminator.cases();
configurator.resultMapDiscriminatorStart(column, javaType, jdbcType, typeHandler);
@@ -164,7 +176,7 @@
timeout,
null, // ParameterMapID
getParameterType(method),
- hasResults(method) ? mappedStatementId : null, // ResultMapID
+ generateResultMapName(method), // ResultMapID
getReturnType(method),
resultSetType,
isSelect, // IsSelectStatement
@@ -308,12 +320,6 @@
|| result.many().results().value().length > 1;
}
- private boolean hasResults(Method method) {
- ConstructorArgs args = method.getAnnotation(ConstructorArgs.class);
- Results results = method.getAnnotation(Results.class);
- return results != null || args != null;
- }
-
private Result[] resultsIf(Results results) {
return results == null ? new Result[0] : results.value();
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/BaseParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/BaseParser.java?rev=754613&r1=754612&r2=754613&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/BaseParser.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/BaseParser.java Sun Mar 15 04:52:17 2009
@@ -80,7 +80,6 @@
}
protected String resolveAlias(String alias) {
- System.out.println(this.getClass() +" " + typeAliasRegistry);
return typeAliasRegistry.resolveAlias(alias);
}
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java?rev=754613&r1=754612&r2=754613&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.java Sun Mar 15 04:52:17 2009
@@ -263,7 +263,7 @@
List<ParameterMapping> parameterMappings = new ArrayList<ParameterMapping>();
ParameterMap.Builder inlineParameterMapBuilder = new ParameterMap.Builder(
configuration,
- statementBuilder.id() + "-inline-parameter-map",
+ statementBuilder.id() + "-Inline",
parameterTypeClass,
parameterMappings);
statementBuilder.parameterMap(inlineParameterMapBuilder.build());
@@ -286,7 +286,7 @@
} else if (resultType != null) {
ResultMap.Builder inlineResultMapBuilder = new ResultMap.Builder(
configuration,
- statementBuilder.id() + "-inline-result-map",
+ statementBuilder.id() + "-Inline",
resultType,
new ArrayList<ResultMapping>());
resultMaps.add(inlineResultMapBuilder.build());
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java?rev=754613&r1=754612&r2=754613&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BindingTest.java Sun Mar 15 04:52:17 2009
@@ -121,5 +121,39 @@
}
}
+ @Test
+ public void shouldSelectDraftTypedPosts() {
+ SqlSession session = sqlSessionFactory.openSession();
+ try {
+ BoundBlogMapper mapper = session.getMapper(BoundBlogMapper.class);
+ List<Post> posts = mapper.selectPosts();
+ assertEquals(5, posts.size());
+ assertEquals(DraftPost.class, posts.get(0).getClass());
+ assertEquals(Post.class, posts.get(1).getClass());
+ assertEquals(DraftPost.class, posts.get(2).getClass());
+ assertEquals(Post.class, posts.get(3).getClass());
+ assertEquals(Post.class, posts.get(4).getClass());
+ } finally {
+ session.close();
+ }
+ }
+
+ @Test
+ public void shouldSelectDraftTypedPostsWithResultMap() {
+ SqlSession session = sqlSessionFactory.openSession();
+ try {
+ BoundBlogMapper mapper = session.getMapper(BoundBlogMapper.class);
+ List<Post> posts = mapper.selectPostsWithResultMap();
+ assertEquals(5, posts.size());
+ assertEquals(DraftPost.class, posts.get(0).getClass());
+ assertEquals(Post.class, posts.get(1).getClass());
+ assertEquals(DraftPost.class, posts.get(2).getClass());
+ assertEquals(Post.class, posts.get(3).getClass());
+ assertEquals(Post.class, posts.get(4).getClass());
+ } finally {
+ session.close();
+ }
+ }
+
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java?rev=754613&r1=754612&r2=754613&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/binding/BoundBlogMapper.java Sun Mar 15 04:52:17 2009
@@ -26,6 +26,30 @@
//======================================================
+ @Select("SELECT * FROM post ORDER BY id")
+ @TypeDiscriminator(
+ column = "draft",
+ javaType = String.class,
+ cases={@Case(value = "1", type = DraftPost.class)}
+ )
+ List<Post> selectPosts();
+
+ //======================================================
+
+ @Select("SELECT * FROM post ORDER BY id")
+ @Results({
+ @Result(id = true,property = "id",column = "id" )
+ })
+ @TypeDiscriminator(
+ column = "draft",
+ javaType = int.class,
+ cases={@Case(value = "1", type = DraftPost.class,
+ results = {@Result(id=true,property = "id",column="id")})}
+ )
+ List<Post> selectPostsWithResultMap();
+
+ //======================================================
+
@Select("SELECT * FROM " +
"blog WHERE id = #{id}")
Blog selectBlog(int id);
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SoftCacheTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SoftCacheTest.java?rev=754613&r1=754612&r2=754613&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SoftCacheTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SoftCacheTest.java Sun Mar 15 04:52:17 2009
@@ -18,7 +18,6 @@
cache.putObject(i, array);
Object value = cache.getObject(i);
}
- System.out.println(cache.getSize());
assertTrue(cache.getSize() < N);
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SuperCacheTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SuperCacheTest.java?rev=754613&r1=754612&r2=754613&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SuperCacheTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/cache/SuperCacheTest.java Sun Mar 15 04:52:17 2009
@@ -26,7 +26,6 @@
Object o = cache.getObject(i);
assertTrue(o == null || i == ((Integer) o));
}
- System.out.println(cache.getSize());
assertTrue(cache.getSize() < N);
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java?rev=754613&r1=754612&r2=754613&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java Sun Mar 15 04:52:17 2009
@@ -298,7 +298,6 @@
SqlSession session = sqlMapper.openSession();
try {
AuthorMapper mapper = session.getMapper(AuthorMapper.class);
- System.out.println(mapper.getClass());
List authors = mapper.selectAllAuthors();
assertEquals(2,authors.size());
} finally {
@@ -311,7 +310,6 @@
SqlSession session = sqlMapper.openSession();
try {
AuthorMapper mapper = session.getMapper(AuthorMapper.class);
- System.out.println(mapper.getClass());
Author author = mapper.selectAuthor(101);
assertEquals(101,author.getId());
} finally {