Author: cbegin
Date: Sun Oct 4 04:58:13 2009
New Revision: 821467
URL: http://svn.apache.org/viewvc?rev=821467&view=rev
Log:
Fixed IBATIS-636 Changing the Environment does not change the
SqlSessionFactory's fields
Modified:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java
Modified:
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java
URL:
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java?rev=821467&r1=821466&r2=821467&view=diff
==============================================================================
---
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java
(original)
+++
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java
Sun Oct 4 04:58:13 2009
@@ -17,20 +17,11 @@
private static final Log log = LogFactory.getLog(Connection.class);
private final Configuration configuration;
- private Environment environment;
- private DataSource dataSource;
- private TransactionFactory transactionFactory;
+ private final TransactionFactory managedTransactionFactory;
public DefaultSqlSessionFactory(Configuration configuration) {
this.configuration = configuration;
- this.environment = configuration.getEnvironment();
- if (environment == null) {
- this.dataSource = null;
- this.transactionFactory = new ManagedTransactionFactory();
- } else {
- this.dataSource = environment.getDataSource();
- this.transactionFactory = environment.getTransactionFactory();
- }
+ this.managedTransactionFactory = new ManagedTransactionFactory();
}
public SqlSession openSession() {
@@ -47,9 +38,9 @@
public SqlSession openSession(ExecutorType execType, boolean autoCommit) {
try {
- if (dataSource == null) {
- throw new SessionException("Configuration does not include an
environment with a DataSource, so session cannot be created unless a connection
is passed in.");
- }
+ final Environment environment = configuration.getEnvironment();
+ final DataSource dataSource = getDataSourceFromEnvironment(environment);
+ TransactionFactory transactionFactory =
getTransactionFactoryFromEnvironment(environment);
Connection connection = dataSource.getConnection();
connection = wrapConnection(connection);
Transaction tx = transactionFactory.newTransaction(connection,
autoCommit);
@@ -60,6 +51,21 @@
}
}
+ private DataSource getDataSourceFromEnvironment(Environment environment) {
+ final DataSource dataSource = environment.getDataSource();
+ if (dataSource == null) {
+ throw new SessionException("Configuration does not include an
environment with a DataSource, so session cannot be created unless a connection
is passed in.");
+ }
+ return dataSource;
+ }
+
+ private TransactionFactory getTransactionFactoryFromEnvironment(Environment
environment) {
+ if (environment == null || environment.getTransactionFactory() == null) {
+ return managedTransactionFactory;
+ }
+ return environment.getTransactionFactory();
+ }
+
public SqlSession openSession(Connection connection) {
return openSession(configuration.getDefaultExecutorType(), connection);
}
@@ -75,6 +81,8 @@
autoCommit = true;
}
connection = wrapConnection(connection);
+ final Environment environment = configuration.getEnvironment();
+ final TransactionFactory transactionFactory =
getTransactionFactoryFromEnvironment(environment);
Transaction tx = transactionFactory.newTransaction(connection,
autoCommit);
Executor executor = configuration.newExecutor(tx, execType);
return new DefaultSqlSession(configuration, executor, autoCommit);