Return-Path: Delivered-To: apmail-ibatis-commits-archive@www.apache.org Received: (qmail 41619 invoked from network); 26 Feb 2009 04:41:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 26 Feb 2009 04:41:11 -0000 Received: (qmail 3761 invoked by uid 500); 26 Feb 2009 04:41:11 -0000 Delivered-To: apmail-ibatis-commits-archive@ibatis.apache.org Received: (qmail 3748 invoked by uid 500); 26 Feb 2009 04:41:11 -0000 Mailing-List: contact commits-help@ibatis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ibatis.apache.org Delivered-To: mailing list commits@ibatis.apache.org Received: (qmail 3739 invoked by uid 99); 26 Feb 2009 04:41:11 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Feb 2009 20:41:11 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 26 Feb 2009 04:41:10 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 0EC93238898B; Thu, 26 Feb 2009 04:40:50 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r748013 - in /ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis: annotations/Annotations.java binding/MapperAnnotationParser.java mapping/ResultMapping.java parser/MapperConfigurator.java Date: Thu, 26 Feb 2009 04:40:49 -0000 To: commits@ibatis.apache.org From: cbegin@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090226044050.0EC93238898B@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cbegin Date: Thu Feb 26 04:40:48 2009 New Revision: 748013 URL: http://svn.apache.org/viewvc?rev=748013&view=rev Log: Added @Results annotation support 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/mapping/ResultMapping.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigurator.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=748013&r1=748012&r2=748013&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 Thu Feb 26 04:40:48 2009 @@ -21,9 +21,9 @@ public static @interface Arg { boolean id() default false; String column() default ""; - Class javaType() default Class.class; + Class javaType() default void.class; JdbcType jdbcType() default JdbcType.UNDEFINED; - Class typeHandler() default Class.class; + Class typeHandler() default void.class; } @Retention(RetentionPolicy.RUNTIME) @@ -38,9 +38,9 @@ boolean key() default false; String column() default ""; String property() default ""; - Class javaType() default Class.class; + Class javaType() default void.class; JdbcType jdbcType() default JdbcType.UNDEFINED; - Class typeHandler() default Class.class; + Class typeHandler() default void.class; String collectionSelect() default ""; Results collectionResults() default @Results; String associationSelect() 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=748013&r1=748012&r2=748013&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 Thu Feb 26 04:40:48 2009 @@ -3,16 +3,21 @@ import static org.apache.ibatis.annotations.Annotations.*; import org.apache.ibatis.mapping.*; import org.apache.ibatis.parser.MapperConfigurator; +import org.apache.ibatis.type.TypeHandler; +import org.apache.ibatis.type.JdbcType; +import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.lang.reflect.TypeVariable; -import java.lang.annotation.Annotation; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; public class MapperAnnotationParser { private MapperConfigurator configurator; private Class type; + private boolean hasResults; public MapperAnnotationParser(Configuration config, Class type) { String resource = type.getName().replace('.', '/') + ".java (best guess)"; @@ -22,24 +27,47 @@ public void parse() { configurator.namespace(type.getName()); - parseCache(type, configurator); - parseCacheRef(type, configurator); + parseCache(); + parseCacheRef(); Method[] methods = type.getMethods(); for (Method method : methods) { + parseResults(method); parseStatement(method); } } - private void parseCache(Class type, MapperConfigurator mapperConfigurator) { + + private void parseCache() { CacheDomain cacheDomain = (CacheDomain) type.getAnnotation(CacheDomain.class); if (cacheDomain != null) { - mapperConfigurator.cache(cacheDomain.implementation(), cacheDomain.eviction(), cacheDomain.flushInterval(), cacheDomain.size(), !cacheDomain.readWrite(), null); + configurator.cache(cacheDomain.implementation(), cacheDomain.eviction(), cacheDomain.flushInterval(), cacheDomain.size(), !cacheDomain.readWrite(), null); } } - private void parseCacheRef(Class type, MapperConfigurator mapperConfigurator) { + private void parseCacheRef() { CacheDomainRef cacheDomainRef = (CacheDomainRef) type.getAnnotation(CacheDomainRef.class); if (cacheDomainRef != null) { - mapperConfigurator.cacheRef(cacheDomainRef.value().getName()); + configurator.cacheRef(cacheDomainRef.value().getName()); + } + } + + private void parseResults(Method method) { + Results results = method.getAnnotation(Results.class); + if (results != null) { + String resultMapId = type.getName() + "." + method.getName(); + configurator.resultMapStart(resultMapId,getReturnType(method),null); + for (Result result : results.value()) { + configurator.resultMapping( + result.property(), + result.column(), + result.javaType() == void.class ? null : result.javaType(), + result.jdbcType() == JdbcType.UNDEFINED ? null : result.jdbcType(), + null, + null, + result.typeHandler() == void.class ? null : result.typeHandler(), + null); + } + configurator.resultMapEnd(); + hasResults = true; } } @@ -71,7 +99,7 @@ timeout, null, // ParameterMapID getParameterType(method), - null, // ResultMapID + hasResults ? mappedStatementId : null, // ResultMapID getReturnType(method), resultSetType, isSelect, // IsSelectStatement Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMapping.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMapping.java?rev=748013&r1=748012&r2=748013&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMapping.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/ResultMapping.java Thu Feb 26 04:40:48 2009 @@ -3,6 +3,7 @@ import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.TypeHandler; import org.apache.ibatis.type.TypeHandlerRegistry; +import org.apache.derby.impl.sql.compile.SQLParser; import java.util.ArrayList; import java.util.Collections; @@ -105,6 +106,10 @@ } } + public Builder column(String column) { + resultMapping.column = column; + return this; + } } public String getProperty() { 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=748013&r1=748012&r2=748013&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 Thu Feb 26 04:40:48 2009 @@ -326,7 +326,7 @@ builder.nestedQueryId(applyNamespace(nestedSelect)); builder.nestedResultMapId(applyNamespace(nestedResultMap)); builder.typeHandler(typeHandlerInstance); - builder.flags(flags); + builder.flags(flags == null ? new ArrayList() : flags); return builder.build(); }