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/03 05:55:55 UTC
svn commit: r730909 - in /ibatis/trunk/java/ibatis-3/ibatis-3-core/src:
main/java/org/apache/ibatis/api/defaults/
main/java/org/apache/ibatis/api/exceptions/
main/java/org/apache/ibatis/executor/
main/java/org/apache/ibatis/executor/parameter/ main/jav...
Author: cbegin
Date: Fri Jan 2 20:55:55 2009
New Revision: 730909
URL: http://svn.apache.org/viewvc?rev=730909&view=rev
Log:
Refactored ErrorContext
Improved error messages in general
Added 1:M collections test
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
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/parameter/DefaultParameterHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.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/main/java/org/apache/ibatis/mapping/MappedStatement.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.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
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java?rev=730909&r1=730908&r2=730909&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSession.java Fri Jan 2 20:55:55 2009
@@ -9,7 +9,6 @@
import org.apache.ibatis.mapping.Configuration;
import java.util.List;
-import java.sql.SQLException;
public class DefaultSqlSession implements SqlSession {
@@ -54,7 +53,7 @@
try {
MappedStatement ms = configuration.getMappedStatement(statement);
return executor.query(ms, parameter, offset, limit, handler);
- } catch (SQLException e) {
+ } catch (Exception e) {
throw ExceptionFactory.wrapException("Error querying database. Cause: " + e, e);
}
}
@@ -78,7 +77,7 @@
dirty = true;
MappedStatement ms = configuration.getMappedStatement(statement);
return executor.update(ms, parameter);
- } catch (SQLException e) {
+ } catch (Exception e) {
throw ExceptionFactory.wrapException("Error updating database. Cause: " + e, e);
}
}
@@ -99,7 +98,7 @@
try {
executor.commit(isCommitOrRollbackRequired(force));
dirty = false;
- } catch (SQLException e) {
+ } catch (Exception e) {
throw ExceptionFactory.wrapException("Error committing transaction. Cause: " + e, e);
}
}
@@ -112,7 +111,7 @@
try {
executor.rollback(isCommitOrRollbackRequired(force));
dirty = false;
- } catch (SQLException e) {
+ } catch (Exception e) {
throw ExceptionFactory.wrapException("Error rolling back transaction. Cause: " + e, e);
}
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java?rev=730909&r1=730908&r2=730909&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/exceptions/ExceptionFactory.java Fri Jan 2 20:55:55 2009
@@ -1,11 +1,11 @@
package org.apache.ibatis.api.exceptions;
-import java.sql.SQLException;
+import org.apache.ibatis.executor.ErrorContext;
public class ExceptionFactory {
public static RuntimeException wrapException(String message, Exception e) {
- return new RuntimeSqlException(message, e);
+ return new RuntimeSqlException(ErrorContext.instance().message(message).cause(e).toString(), e);
}
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java?rev=730909&r1=730908&r2=730909&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java Fri Jan 2 20:55:55 2009
@@ -3,7 +3,6 @@
import org.apache.ibatis.cache.CacheKey;
import org.apache.ibatis.cache.impl.PerpetualCache;
import org.apache.ibatis.executor.result.ResultHandler;
-import org.apache.ibatis.logging.*;
import org.apache.ibatis.mapping.*;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.type.TypeHandlerRegistry;
@@ -44,6 +43,7 @@
}
public int update(MappedStatement ms, Object parameter) throws SQLException {
+ ErrorContext.instance().resource(ms.getResource()).activity("executing an update").object(ms.getId());
localCache.clear();
return doUpdate(ms, parameter);
}
@@ -54,6 +54,7 @@
}
public List query(MappedStatement ms, Object parameter, int offset, int limit, ResultHandler resultHandler) throws SQLException {
+ ErrorContext.instance().resource(ms.getResource()).activity("executing a query").object(ms.getId());
List list;
try {
queryStack++;
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=730909&r1=730908&r2=730909&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 20:55:55 2009
@@ -2,125 +2,122 @@
public class ErrorContext {
- private static final ThreadLocal<ErrorContext> local = new ThreadLocal<ErrorContext>();
+ private static String NEWLINE; // Can't be final due to a weird Java compiler issue.
+ 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);
- }
+ private String resource;
+ private String activity;
+ private String object;
+ private String message;
+ private String sql;
+ private Throwable cause;
- public static String description() {
- return _local()._toString();
+ static {
+ try {
+ NEWLINE = System.getProperty("line.separator");
+ } catch (Throwable t) {
+ NEWLINE = "\n";
+ }
}
- public static void reset() {
- _local()._reset();
+ private ErrorContext() {
}
- private static ErrorContext _local() {
- ErrorContext context = local.get();
+ public static ErrorContext instance() {
+ ErrorContext context = LOCAL.get();
if (context == null) {
context = new ErrorContext();
- local.set(context);
+ LOCAL.set(context);
}
return context;
}
- private String resource;
- private String activity;
- private String objectId;
- private String moreInfo;
- private Throwable cause;
-
- private ErrorContext() {
+ public ErrorContext resource(String resource) {
+ this.resource = resource;
+ return this;
}
- private void _set(String resource, String activity, String objectId, String moreInfo) {
- this.resource = resource;
+ public ErrorContext activity(String activity) {
this.activity = activity;
- this.objectId = objectId;
- this.moreInfo = moreInfo;
+ return this;
}
- private void _set(String activity, String objectId, String moreInfo) {
- this.activity = activity;
- this.objectId = objectId;
- this.moreInfo = moreInfo;
+ public ErrorContext object(String object) {
+ this.object = object;
+ return this;
}
- private void _set(String objectId, String moreInfo) {
- this.objectId = objectId;
- this.moreInfo = moreInfo;
+ public ErrorContext message(String message) {
+ this.message = message;
+ return this;
}
- private void _set(String moreInfo) {
- this.moreInfo = moreInfo;
+ public ErrorContext sql(String sql) {
+ this.sql = sql;
+ return this;
}
- private void _set(Throwable cause) {
+ public ErrorContext cause(Throwable cause) {
this.cause = cause;
+ return this;
+ }
+
+ public ErrorContext reset() {
+ resource = null;
+ activity = null;
+ object = null;
+ message = null;
+ sql = null;
+ cause = null;
+ return this;
}
- private String _toString() {
- StringBuffer message = new StringBuffer();
+ public String toString() {
+ StringBuffer description = new StringBuffer();
+
+ // message
+ if (this.message != null) {
+ description.append(NEWLINE);
+ description.append("### ");
+ description.append(this.message);
+ }
// resource
if (resource != null) {
- message.append(" \n*** The error occurred in ");
- message.append(resource);
- message.append(".");
+ description.append(NEWLINE);
+ description.append("### The error may exist in ");
+ description.append(resource);
}
- // activity
- if (activity != null) {
- message.append(" \n*** The error occurred while ");
- message.append(activity);
- message.append(".");
+ // object
+ if (object != null) {
+ description.append(NEWLINE);
+ description.append("### The error may involve ");
+ description.append(object);
}
- // object
- if (objectId != null) {
- message.append(" \n*** Check ");
- message.append(objectId);
- message.append(".");
+ // activity
+ if (activity != null) {
+ description.append(NEWLINE);
+ description.append("### The error occurred while ");
+ description.append(activity);
}
- // more info
- if (moreInfo != null) {
- message.append(" \n*** ");
- message.append(moreInfo);
+ // activity
+ if (sql != null) {
+ description.append(NEWLINE);
+ description.append("### SQL: ");
+ description.append(sql.replace('\n',' ').replace('\r',' ').replace('\t',' ').trim());
}
// cause
if (cause != null) {
- message.append(" \n*** Cause: ");
- message.append(cause.toString());
+ description.append(NEWLINE);
+ description.append("### Cause: ");
+ description.append(cause.toString());
}
- return message.toString();
- }
-
- private void _reset() {
- resource = null;
- activity = null;
- objectId = null;
- moreInfo = null;
- cause = null;
+ return description.toString();
}
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/parameter/DefaultParameterHandler.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/parameter/DefaultParameterHandler.java?rev=730909&r1=730908&r2=730909&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/parameter/DefaultParameterHandler.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/parameter/DefaultParameterHandler.java Fri Jan 2 20:55:55 2009
@@ -3,7 +3,7 @@
import org.apache.ibatis.mapping.*;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.type.*;
-import org.apache.ibatis.executor.ExecutorException;
+import org.apache.ibatis.executor.*;
import java.sql.*;
import java.util.List;
@@ -27,6 +27,7 @@
public void setParameters(PreparedStatement ps)
throws SQLException {
+ ErrorContext.instance().activity("setting parameters").object(mappedStatement.getParameterMap().getId());
List<ParameterMapping> parameterMappings = mappedStatement.getDynamicParameterMappings(parameterObject);
if (parameterMappings != null) {
MetaObject metaObject = parameterObject == null ? null : MetaObject.forObject(parameterObject);
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java?rev=730909&r1=730908&r2=730909&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java Fri Jan 2 20:55:55 2009
@@ -1,8 +1,7 @@
package org.apache.ibatis.executor.resultset;
import org.apache.ibatis.cache.CacheKey;
-import org.apache.ibatis.executor.Executor;
-import org.apache.ibatis.executor.ExecutorException;
+import org.apache.ibatis.executor.*;
import org.apache.ibatis.executor.loader.*;
import org.apache.ibatis.executor.parameter.ParameterHandler;
import org.apache.ibatis.executor.result.*;
@@ -54,6 +53,7 @@
try {
for (int i = 0, n = mappedStatement.getResultMaps().size(); i < n; i++) {
ResultMap resultMap = mappedStatement.getResultMaps().get(i);
+ ErrorContext.instance().activity("handling result set").object(resultMap.getId());
if (resultHandler == null) {
DefaultResultHandler defaultResultHandler = new DefaultResultHandler();
handleResults(rs, resultMap, defaultResultHandler, rowOffset, rowLimit);
@@ -80,7 +80,7 @@
}
public void handleOutputParameters(CallableStatement callableStatement) throws SQLException {
- ParameterMap parameterMap = mappedStatement.getParameterMap();
+ ErrorContext.instance().activity("handling output parameters");
MetaObject metaParam = MetaObject.forObject(parameterObject);
List<ParameterMapping> parameterMappings = mappedStatement.getDynamicParameterMappings(parameterObject);
for (int i = 0; i < parameterMappings.size(); i++) {
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=730909&r1=730908&r2=730909&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 20:55:55 2009
@@ -50,6 +50,7 @@
public Statement prepare(Connection connection)
throws SQLException {
+ ErrorContext.instance().sql(sql);
Statement statement = null;
try {
statement = instantiateStatement(connection);
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java?rev=730909&r1=730908&r2=730909&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java Fri Jan 2 20:55:55 2009
@@ -6,6 +6,7 @@
public class MappedStatement {
+ private String resource;
private Configuration configuration;
private String id;
private Integer fetchSize;
@@ -35,6 +36,11 @@
mappedStatement.timeout = configuration.getDefaultStatementTimeout();
}
+ public Builder resource(String resource) {
+ mappedStatement.resource = resource;
+ return this;
+ }
+
public String id() {
return mappedStatement.id;
}
@@ -94,6 +100,10 @@
}
+ public String getResource() {
+ return resource;
+ }
+
public Configuration getConfiguration() {
return configuration;
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigParser.java?rev=730909&r1=730908&r2=730909&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigParser.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperConfigParser.java Fri Jan 2 20:55:55 2009
@@ -9,6 +9,7 @@
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.datasource.DataSourceFactory;
import org.apache.ibatis.transaction.TransactionFactory;
+import org.apache.ibatis.executor.ErrorContext;
import java.io.Reader;
import java.util.*;
@@ -32,6 +33,7 @@
}
public MapperConfigParser(Reader reader, String environment, Properties props) {
+ ErrorContext.instance().resource("SQL Mapper Configuration");
this.parsed = false;
this.reader = reader;
this.environment = environment;
@@ -214,14 +216,18 @@
String url = context.getStringAttribute("url");
Reader reader;
if (resource != null && url == null) {
+ ErrorContext.instance().resource(resource);
reader = Resources.getResourceAsReader(resource);
+ MapperParser mapperParser = new MapperParser(reader, configuration, resource);
+ mapperParser.parse();
} else if (url != null && resource == null) {
+ ErrorContext.instance().resource(url);
reader = Resources.getUrlAsReader(url);
+ MapperParser mapperParser = new MapperParser(reader, configuration, url);
+ mapperParser.parse();
} else {
throw new ParserException("A mapper element may only specify a url or resource, but not both.");
}
- MapperParser mapperParser = new MapperParser(reader, configuration);
- mapperParser.parse();
}
private boolean isSpecifiedEnvironment() {
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.java?rev=730909&r1=730908&r2=730909&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.java Fri Jan 2 20:55:55 2009
@@ -5,6 +5,7 @@
import org.apache.ibatis.type.*;
import org.apache.ibatis.xml.*;
import org.apache.ibatis.cache.Cache;
+import org.apache.ibatis.executor.ErrorContext;
import java.io.Reader;
import java.util.*;
@@ -15,6 +16,8 @@
protected Reader reader;
protected NodeletParser parser;
+ private String resource;
+
private ParameterMap.Builder parameterMapBuilder;
private List<ParameterMapping> parameterMappings;
@@ -26,7 +29,9 @@
private Cache cache;
- public MapperParser(Reader reader, Configuration configuration) {
+ public MapperParser(Reader reader, Configuration configuration, String resource) {
+ ErrorContext.instance().resource(resource);
+ this.resource = resource;
this.reader = reader;
this.configuration = configuration;
@@ -283,10 +288,11 @@
String id = context.getStringAttribute("id");
id = applyNamespace(id);
- String sql = context.getStringBody();
+ //String sql = context.getStringBody();
SqlSource sqlSource = new SqlSourceParser(configuration).parse(context);
MappedStatement.Builder statementBuilder = new MappedStatement.Builder(configuration, id, sqlSource);
+ statementBuilder.resource(resource);
Integer fetchSize = context.getIntAttribute("fetchSize", null);
statementBuilder.fetchSize(fetchSize);
statementBuilder.statementType(statementType);
@@ -384,8 +390,8 @@
ResultMapping.Builder builder = new ResultMapping.Builder(configuration, property, column, javaTypeClass);
builder.jdbcType(jdbcTypeEnum);
- builder.nestedQueryId(nestedSelect);
- builder.nestedResultMapId(nestedResultMap);
+ builder.nestedQueryId(applyNamespace(nestedSelect));
+ builder.nestedResultMapId(applyNamespace(nestedResultMap));
builder.typeHandler(typeHandlerInstance);
return builder;
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=730909&r1=730908&r2=730909&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 20:55:55 2009
@@ -161,13 +161,14 @@
}
}
- @Test @Ignore
+ @Test
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());
+ Assert.assertEquals("Jim Business", blog.getTitle());
+ Assert.assertEquals(2, blog.getPosts().size());
+ Assert.assertEquals("Corn nuts",blog.getPosts().get(0).getSubject());
} 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=730909&r1=730908&r2=730909&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 20:55:55 2009
@@ -6,25 +6,26 @@
@Test
public void shouldShowProgressiveErrorContextBuilding() {
- 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();
+ ErrorContext context = ErrorContext.instance();
+ context.resource("somefile.xml").activity("some activity").object("some object").message("Here's more info.");
+ context.toString().startsWith("### The error occurred in somefile.xml.");
+ context.reset();
+
+ context.activity("some activity").object("some object").message("Here's more info.");
+ context.toString().startsWith("### The error occurred while some activity.");
+ context.reset();
+
+ context.object("some object").message("Here's more info.");
+ context.toString().startsWith("### Check some object.");
+ context.reset();
+
+ context.message("Here's more info.");
+ context.toString().startsWith("### Here's more info.");
+ context.reset();
+
+ context.cause(new Exception("test"));
+ context.toString().startsWith("### Cause: java.lang.Exception: test");
+ context.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=730909&r1=730908&r2=730909&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 20:55:55 2009
@@ -9,15 +9,15 @@
<resultMap id="blogWithPosts" type="Blog">
<id property="id" column="id" />
<result property="title" column="title" />
- <collection property="posts" column="id" javaType="Post" select="selectPostsForBlog" />
+ <collection property="posts" column="id" select="selectPostsForBlog" />
</resultMap>
<select id="selectBlogWithPostsUsingSubSelect" parameterType="int" resultMap="blogWithPosts">
- select * from Blog where id = ${id}
+ select * from Blog where id = #{id}
</select>
<select id="selectPostsForBlog" parameterType="int" resultType="Post" >
- select * from Post where blog_id = ${blog_id}
+ select * from Post where blog_id = #{blog_id}
</select>
</mapper>
\ No newline at end of file