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/01/02 22:46:29 UTC

svn commit: r730847 - in /ibatis/trunk/java/ibatis-3: ./ ibatis-3-core/src/main/java/org/apache/ibatis/executor/ ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/ ibatis-3-core/src/test/java/domain/blog/ ibatis-3-core/src/test/java/org/...

Author: cbegin
Date: Fri Jan  2 13:46:28 2009
New Revision: 730847

URL: http://svn.apache.org/viewvc?rev=730847&view=rev
Log:
Refactored ErrorContext.
Added first association test ... currently ignored.

Modified:
    ibatis/trunk/java/ibatis-3/TODO
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ErrorContext.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/domain/blog/Blog.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ErrorContextTest.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml

Modified: ibatis/trunk/java/ibatis-3/TODO
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/TODO?rev=730847&r1=730846&r2=730847&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/TODO (original)
+++ ibatis/trunk/java/ibatis-3/TODO Fri Jan  2 13:46:28 2009
@@ -1,5 +1,6 @@
 Improvements
  * Duplicate element IDs are clobbering each other in config
+ * Need to report on lookups of nonexisting config elements (e.g. config.getMappedStatement)
  * Statement (other elements?) not found does not fail gracefully
  * Improved Error Messages
  * Exception hierarchy returned from exceptionfactory

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ErrorContext.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ErrorContext.java?rev=730847&r1=730846&r2=730847&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ErrorContext.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ErrorContext.java Fri Jan  2 13:46:28 2009
@@ -2,39 +2,81 @@
 
 public class ErrorContext {
 
+  private static final ThreadLocal<ErrorContext> local = new ThreadLocal<ErrorContext>();
+
+  public static void set(String resource, String activity, String objectId, String moreInfo) {
+    _local()._set(resource,activity,objectId,moreInfo);
+  }
+
+  public static void set(String activity, String objectId, String moreInfo) {
+    _local()._set(activity,objectId,moreInfo);
+  }
+
+  public static void set(String objectId, String moreInfo) {
+    _local()._set(objectId,moreInfo);
+  }
+
+  public static void set(String moreInfo) {
+    _local()._set(moreInfo);
+  }
+
+  public static void set(Throwable cause) {
+    _local()._set(cause);
+  }
+
+  public static String description() {
+    return _local()._toString();
+  }
+
+  public static void reset() {
+    _local()._reset();
+  }
+
+  private static ErrorContext _local() {
+    ErrorContext context = local.get();
+    if (context == null) {
+      context = new ErrorContext();
+      local.set(context);
+    }
+    return context;
+  }
+
   private String resource;
   private String activity;
   private String objectId;
   private String moreInfo;
   private Throwable cause;
 
-  public void set(String resource, String activity, String objectId, String moreInfo) {
+  private ErrorContext() {
+  }
+
+  private void _set(String resource, String activity, String objectId, String moreInfo) {
     this.resource = resource;
     this.activity = activity;
     this.objectId = objectId;
     this.moreInfo = moreInfo;
   }
 
-  public void set(String activity, String objectId, String moreInfo) {
+  private void _set(String activity, String objectId, String moreInfo) {
     this.activity = activity;
     this.objectId = objectId;
     this.moreInfo = moreInfo;
   }
 
-  public void set(String objectId, String moreInfo) {
+  private void _set(String objectId, String moreInfo) {
     this.objectId = objectId;
     this.moreInfo = moreInfo;
   }
 
-  public void set(String moreInfo) {
+  private void _set(String moreInfo) {
     this.moreInfo = moreInfo;
   }
 
-  public void set(Throwable cause) {
+  private void _set(Throwable cause) {
     this.cause = cause;
   }
 
-  public String toString() {
+  private String _toString() {
     StringBuffer message = new StringBuffer();
 
     // resource
@@ -73,7 +115,7 @@
     return message.toString();
   }
 
-  public void reset() {
+  private void _reset() {
     resource = null;
     activity = null;
     objectId = null;

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java?rev=730847&r1=730846&r2=730847&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java Fri Jan  2 13:46:28 2009
@@ -12,7 +12,6 @@
 
 public abstract class BaseStatementHandler implements StatementHandler {
 
-  protected final ErrorContext errorContext;
   protected final ObjectFactory objectFactory;
   protected final TypeHandlerRegistry typeHandlerRegistry;
   protected final ResultSetHandler resultSetHandler;
@@ -33,7 +32,6 @@
     this.rowLimit = rowLimit;
 
     Configuration configuration = mappedStatement.getConfiguration();
-    this.errorContext = new ErrorContext();
     this.typeHandlerRegistry = configuration.getTypeHandlerRegistry();
     this.objectFactory = configuration.getObjectFactory();
     this.parameterHandler = configuration.newParameterHandler(mappedStatement, parameterObject);

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/domain/blog/Blog.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/domain/blog/Blog.java?rev=730847&r1=730846&r2=730847&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/domain/blog/Blog.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/domain/blog/Blog.java Fri Jan  2 13:46:28 2009
@@ -5,8 +5,8 @@
 public class Blog {
 
   private int id;
-  private Author author;
   private String title;
+  private Author author;
   private List<Post> posts;
 
   public int getId() {
@@ -17,14 +17,6 @@
     this.id = id;
   }
 
-  public Author getAuthor() {
-    return author;
-  }
-
-  public void setAuthor(Author author) {
-    this.author = author;
-  }
-
   public String getTitle() {
     return title;
   }
@@ -33,6 +25,14 @@
     this.title = title;
   }
 
+  public Author getAuthor() {
+    return author;
+  }
+
+  public void setAuthor(Author author) {
+    this.author = author;
+  }
+
   public List<Post> getPosts() {
     return posts;
   }

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java?rev=730847&r1=730846&r2=730847&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java Fri Jan  2 13:46:28 2009
@@ -10,6 +10,7 @@
 import domain.blog.Author;
 import domain.blog.Section;
 import domain.blog.ImmutableAuthor;
+import domain.blog.Blog;
 
 public class SqlSessionTest extends BaseDataTest {
   private static SqlSessionFactory sqlMapper;
@@ -160,4 +161,16 @@
     }
   }
 
+  @Test @Ignore
+  public void shouldSelectBlogWithPostsUsingSubSelect() throws Exception {
+    SqlSession session = sqlMapper.openSession();
+    try {
+      Blog blog = (Blog) session.selectOne("com.domain.BlogMapper.selectBlogWithPostsUsingSubSelect", 1);
+
+      System.out.println(blog.getTitle());
+    } finally {
+      session.close();
+    }
+  }
+
 }

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ErrorContextTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ErrorContextTest.java?rev=730847&r1=730846&r2=730847&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ErrorContextTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ErrorContextTest.java Fri Jan  2 13:46:28 2009
@@ -6,26 +6,25 @@
 
   @Test
   public void shouldShowProgressiveErrorContextBuilding() {
-    ErrorContext context = new ErrorContext();
-    context.set("somefile.xml", "some activity", "some object", "Here's more info.");
-    context.toString().startsWith("*** The error occurred in somefile.xml.");
-    context.reset();
-
-    context.set("some activity", "some object", "Here's more info.");
-    context.toString().startsWith("*** The error occurred while some activity.");
-    context.reset();
-
-    context.set("some object", "Here's more info.");
-    context.toString().startsWith("*** Check some object.");
-    context.reset();
-
-    context.set("Here's more info.");
-    context.toString().startsWith("*** Here's more info.");
-    context.reset();
-
-    context.set(new Exception("test"));
-    context.toString().startsWith("*** Cause: java.lang.Exception: test");
-    context.reset();
+    ErrorContext.set("somefile.xml", "some activity", "some object", "Here's more info.");
+    ErrorContext.description().startsWith("*** The error occurred in somefile.xml.");
+    ErrorContext.reset();
+
+    ErrorContext.set("some activity", "some object", "Here's more info.");
+    ErrorContext.description().startsWith("*** The error occurred while some activity.");
+    ErrorContext.reset();
+
+    ErrorContext.set("some object", "Here's more info.");
+    ErrorContext.description().startsWith("*** Check some object.");
+    ErrorContext.reset();
+
+    ErrorContext.set("Here's more info.");
+    ErrorContext.description().startsWith("*** Here's more info.");
+    ErrorContext.reset();
+
+    ErrorContext.set(new Exception("test"));
+    ErrorContext.description().startsWith("*** Cause: java.lang.Exception: test");
+    ErrorContext.reset();
 
   }
 

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml?rev=730847&r1=730846&r2=730847&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/BlogMapper.xml Fri Jan  2 13:46:28 2009
@@ -6,18 +6,18 @@
 
 <mapper namespace="com.domain.BlogMapper">
 
-  <resultMap id="" type="" extends="">
-    <constructor>
-      <id column="" javaType="" jdbcType="" typeHandler="" />
-      <result column="" javaType="" jdbcType="" typeHandler=""/>
-    </constructor>
-    <result property="" column="" javaType="" jdbcType="" typeHandler=""/>
-    <collection property="" column="" javaType="" select="" resultMap=""/>
+  <resultMap id="blogWithPosts" type="Blog">
+    <id property="id" column="id" />
+    <result property="title" column="title" />
+    <collection property="posts" column="id" javaType="Post" select="selectPostsForBlog" />
   </resultMap>
 
-  <select id="selectAllPeople" useCache="true" flushCache="false" parameterType="" resultType="" resultMap="">
-    select * from PERSON order by
-    ${opts.order,javaType="",jdbcType="",typeHandler="",mode="",scale="",resultMap=""}
+  <select id="selectBlogWithPostsUsingSubSelect" parameterType="int" resultMap="blogWithPosts">
+    select * from Blog where id = ${id}
   </select>
   
+  <select id="selectPostsForBlog" parameterType="int" resultType="Post" >
+    select * from Post where blog_id = ${blog_id}
+  </select>
+
 </mapper>
\ No newline at end of file

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml?rev=730847&r1=730846&r2=730847&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/parser/MapperConfig.xml Fri Jan  2 13:46:28 2009
@@ -20,7 +20,7 @@
     <setting name="defaultExecutorType" value="SIMPLE"/>
     <setting name="defaultStatementTimeout" value="25000"/>
   </settings>
-
+  
   <typeAliases>
     <typeAlias alias="Author" type="domain.blog.Author"/>
     <typeAlias alias="Blog" type="domain.blog.Blog"/>
@@ -61,6 +61,7 @@
   <mappers>
     <!-- mapperXML vs. mapperClass-->
     <mapper resource="org/apache/ibatis/parser/AuthorMapper.xml"/>
+    <mapper resource="org/apache/ibatis/parser/BlogMapper.xml"/>
   </mappers>
 
 </configuration>