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 2008/11/29 22:44:58 UTC
svn commit: r721728 - in /ibatis/trunk/java/ibatis-3: ./
ibatis-3-core/src/main/java/org/apache/ibatis/api/
ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/
ibatis-3-core/src/main/java/org/apache/ibatis/builder/
ibatis-3-core/src/main/java/o...
Author: cbegin
Date: Sat Nov 29 13:44:57 2008
New Revision: 721728
URL: http://svn.apache.org/viewvc?rev=721728&view=rev
Log:
Implemented SqlMapperBuilder and SqlSession interface.
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlMapperBuilder.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/SqlMapperBuilderTest.java
- copied, changed from r721707, ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfigParserTest.java
Removed:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfigParserTest.java
Modified:
ibatis/trunk/java/ibatis-3/TODO
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlMapper.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlMapper.java
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/builder/MapperConfigParser.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/transaction/jdbc/JdbcTransaction.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactory.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
Modified: ibatis/trunk/java/ibatis-3/TODO
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/TODO?rev=721728&r1=721727&r2=721728&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/TODO (original)
+++ ibatis/trunk/java/ibatis-3/TODO Sat Nov 29 13:44:57 2008
@@ -10,7 +10,18 @@
* Transaction Manager (REAL AutoCommit support...)
* Mapper Interface Binding
* Client / Mapper Factory
+ * Exception hierarchy returned from exceptionfactory
Testing
* Functional tests
* Perf/Threaded Integration Tests
+
+Logging
+// private static final Log log = LogFactory.getLog(BaseExecutor.class);
+// if (log.isDebugEnabled()) {
+// this.connection = ConnectionLogger.newInstance(connection);
+// } else {
+// this.connection = connection;
+// }
+
+
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlMapper.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlMapper.java?rev=721728&r1=721727&r2=721728&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlMapper.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlMapper.java Sat Nov 29 13:44:57 2008
@@ -1,7 +1,15 @@
package org.apache.ibatis.api;
+import org.apache.ibatis.mapping.Configuration;
+
+import java.sql.Connection;
+
public interface SqlMapper {
SqlSession openSession();
+
+ SqlSession openSession(Connection connection);
+
+ Configuration getConfiguration();
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java?rev=721728&r1=721727&r2=721728&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSession.java Sat Nov 29 13:44:57 2008
@@ -1,4 +1,15 @@
package org.apache.ibatis.api;
+import org.apache.ibatis.executor.result.ResultHandler;
+
+import java.util.List;
+
public interface SqlSession {
+
+ List selectList(String statement);
+ List selectList(String statement, Object parameter);
+ List selectList(String statement, Object parameter, int offset, int limit);
+ List selectList(String statement, Object parameter, int offset, int limit, ResultHandler handler);
+ void close();
+
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlMapper.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlMapper.java?rev=721728&r1=721727&r2=721728&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlMapper.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlMapper.java Sat Nov 29 13:44:57 2008
@@ -44,4 +44,10 @@
return new DefaultSqlSession(configuration, executor);
}
+ public Configuration getConfiguration() {
+ return configuration;
+ }
+
+
}
+
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=721728&r1=721727&r2=721728&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 Sat Nov 29 13:44:57 2008
@@ -3,6 +3,7 @@
import org.apache.ibatis.api.SqlSession;
import org.apache.ibatis.api.exceptions.ExceptionFactory;
import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.executor.result.ResultHandler;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.Configuration;
@@ -11,25 +12,56 @@
public class DefaultSqlSession implements SqlSession {
+ private boolean commitRequired;
+
private Configuration configuration;
private Executor executor;
public DefaultSqlSession(Configuration configuration, Executor executor) {
this.configuration = configuration;
this.executor = executor;
+ this.commitRequired = false;
+ }
+
+ public List selectList(String statement) {
+ return selectList(statement, null);
+ }
+
+ public List selectList(String statement, Object parameter) {
+ return selectList(statement, parameter, Executor.NO_ROW_OFFSET, Executor.NO_ROW_LIMIT);
}
- public List query(String statement) {
- return query(statement, null);
+ public List selectList(String statement, Object parameter, int offset, int limit) {
+ return selectList(statement, parameter, offset, limit, Executor.NO_RESULT_HANDLER);
}
- public List query(String statement, Object parameter) {
+ public List selectList(String statement, Object parameter, int offset, int limit, ResultHandler handler) {
try {
- MappedStatement ms = configuration.getMappedStatement("com.domain.AuthorMapper.selectAllAuthors");
- return executor.query(ms, parameter , Executor.NO_ROW_OFFSET, Executor.NO_ROW_LIMIT, Executor.NO_RESULT_HANDLER);
+ MappedStatement ms = configuration.getMappedStatement(statement);
+ return executor.query(ms, parameter , offset, limit, handler);
} catch (SQLException e) {
throw ExceptionFactory.wrapSQLException("Error querying database. Cause: " + e, e);
}
}
+ public void close() {
+ executor.close();
+ }
+
+ public void commit() {
+ try {
+ executor.commit(false);
+ } catch (SQLException e) {
+ throw ExceptionFactory.wrapSQLException("Error committing transaction. Cause: " + e, e);
+ }
+ }
+
+ public void rollback() {
+ try {
+ executor.rollback(false);
+ } catch (SQLException e) {
+ throw ExceptionFactory.wrapSQLException("Error rolling back transaction. Cause: " + e, e);
+ }
+ }
+
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/MapperConfigParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/MapperConfigParser.java?rev=721728&r1=721727&r2=721728&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/MapperConfigParser.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/MapperConfigParser.java Sat Nov 29 13:44:57 2008
@@ -15,14 +15,26 @@
public class MapperConfigParser extends BaseParser {
+ private boolean parsed;
+
protected Reader reader;
protected NodeletParser parser;
private String environment;
private Environment.Builder environmentBuilder;
- public MapperConfigParser(Reader reader, Properties props) {
+ public MapperConfigParser(Reader reader) {
+ this(reader,null,null);
+ }
+
+ public MapperConfigParser(Reader reader, String environment) {
+ this(reader,environment,null);
+ }
+
+ public MapperConfigParser(Reader reader, String environment, Properties props) {
+ this.parsed = false;
this.reader = reader;
+ this.environment = environment;
this.configuration = new Configuration();
this.configuration.setVariables(props);
@@ -36,16 +48,17 @@
this.parser.setEntityResolver(new MapperEntityResolver());
}
- public void parse() {
+ public Configuration parse() {
assert reader != null;
assert parser != null;
assert configuration != null;
assert typeAliasRegistry != null;
assert typeHandlerRegistry != null;
+ if (parsed) {
+ throw new BuilderException("Each MapperConfigParser can only be used once.");
+ }
+ parsed = true;
parser.parse(reader);
- }
-
- public Configuration getConfiguration() {
return configuration;
}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlMapperBuilder.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlMapperBuilder.java?rev=721728&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlMapperBuilder.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SqlMapperBuilder.java Sat Nov 29 13:44:57 2008
@@ -0,0 +1,26 @@
+package org.apache.ibatis.builder;
+
+import org.apache.ibatis.mapping.Configuration;
+import org.apache.ibatis.api.defaults.DefaultSqlMapper;
+import org.apache.ibatis.api.SqlMapper;
+
+import java.io.Reader;
+import java.util.Properties;
+
+public class SqlMapperBuilder {
+
+ public SqlMapper build(Reader reader) {
+ return build(reader,null,null);
+ }
+
+ public SqlMapper build(Reader reader, String environment) {
+ return build(reader,environment,null);
+ }
+
+ public SqlMapper build(Reader reader, String environment, Properties props) {
+ MapperConfigParser parser = new MapperConfigParser(reader,environment,props);
+ Configuration config = parser.parse();
+ return new DefaultSqlMapper(config);
+ }
+
+}
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=721728&r1=721727&r2=721728&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 Sat Nov 29 13:44:57 2008
@@ -13,8 +13,7 @@
import java.util.*;
public abstract class BaseExecutor implements Executor {
-
- private static final Log log = LogFactory.getLog(BaseExecutor.class);
+
private static final Object EXECUTION_PLACEHOLDER = new Object();
protected final Transaction transaction;
@@ -27,11 +26,6 @@
protected List<BatchResult> batchResults = new ArrayList<BatchResult>();
protected BaseExecutor(Transaction transaction) {
-// if (log.isDebugEnabled()) {
-// this.connection = ConnectionLogger.newInstance(connection);
-// } else {
-// this.connection = connection;
-// }
this.transaction = transaction;
this.deferredLoads = new ArrayList<DeferredLoad>();
this.localCache = new PerpetualCache("LocalCache");
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/transaction/jdbc/JdbcTransaction.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/transaction/jdbc/JdbcTransaction.java?rev=721728&r1=721727&r2=721728&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/transaction/jdbc/JdbcTransaction.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/transaction/jdbc/JdbcTransaction.java Sat Nov 29 13:44:57 2008
@@ -1,6 +1,7 @@
package org.apache.ibatis.transaction.jdbc;
import org.apache.ibatis.transaction.Transaction;
+import org.apache.ibatis.api.exceptions.ExceptionFactory;
import java.sql.Connection;
import java.sql.SQLException;
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactory.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactory.java?rev=721728&r1=721727&r2=721728&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactory.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/transaction/managed/ManagedTransactionFactory.java Sat Nov 29 13:44:57 2008
@@ -13,6 +13,7 @@
}
public Transaction newTransaction(Connection conn) {
+
return new ManagedTransaction(conn);
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml?rev=721728&r1=721727&r2=721728&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml Sat Nov 29 13:44:57 2008
@@ -6,7 +6,7 @@
<configuration>
- <properties resource="org/apache/ibatis/builder/mapper.properties"> <!-- url="" -->
+ <properties resource="org/apache/ibatis/builder/mapper.properties">
<property name="driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
</properties>
Copied: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/SqlMapperBuilderTest.java (from r721707, ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfigParserTest.java)
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/SqlMapperBuilderTest.java?p2=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/SqlMapperBuilderTest.java&p1=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfigParserTest.java&r1=721707&r2=721728&rev=721728&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfigParserTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/SqlMapperBuilderTest.java Sat Nov 29 13:44:57 2008
@@ -3,48 +3,29 @@
import org.junit.Test;
import org.junit.Assert;
import org.apache.ibatis.BaseDataTest;
-import org.apache.ibatis.api.SqlMapper;
-import org.apache.ibatis.api.defaults.DefaultSqlMapper;
-import org.apache.ibatis.executor.Executor;
-import org.apache.ibatis.transaction.TransactionFactory;
-import org.apache.ibatis.transaction.Transaction;
-import org.apache.ibatis.mapping.Configuration;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.mapping.Environment;
+import org.apache.ibatis.api.*;
import org.apache.ibatis.io.Resources;
-import javax.sql.DataSource;
import java.io.Reader;
import java.util.List;
import domain.blog.Author;
-public class MapperConfigParserTest extends BaseDataTest {
+public class SqlMapperBuilderTest extends BaseDataTest {
@Test
public void shouldBuildBlogMappers() throws Exception {
createBlogDataSource();
final String resource = "org/apache/ibatis/builder/MapperConfig.xml";
final Reader reader = Resources.getResourceAsReader(resource);
- MapperConfigParser parser = new MapperConfigParser(reader,null);
- parser.parse();
- Configuration config = parser.getConfiguration();
-
- SqlMapper sqlMapper = new DefaultSqlMapper(config);
-
- Environment environment = config.getEnvironment();
- DataSource ds = environment.getDataSource();
- TransactionFactory tf = environment.getTransactionFactory();
- Transaction tx = tf.newTransaction(ds.getConnection());
- Executor exec = config.newExecutor(tx);
- MappedStatement ms = config.getMappedStatement("com.domain.AuthorMapper.selectAllAuthors");
- List<Author> authors = exec.query(ms,null,Executor.NO_ROW_OFFSET, Executor.NO_ROW_LIMIT, Executor.NO_RESULT_HANDLER);
-
- for (Author author : authors) {
- System.out.println(author);
+ SqlMapper sqlMapper = new SqlMapperBuilder().build(reader);
+ SqlSession session = sqlMapper.openSession();
+ try {
+ List<Author> authors = session.selectList("com.domain.AuthorMapper.selectAllAuthors");
+ Assert.assertEquals(2,authors.size());
+ } finally {
+ session.close();
}
-
- Assert.assertEquals(2,authors.size());
}
}