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 2007/06/10 08:55:34 UTC
svn commit: r545849 - in /ibatis/trunk/java/mapper/mapper2:
src/com/ibatis/sqlmap/engine/builder/xml/
src/com/ibatis/sqlmap/engine/conifg/ src/com/ibatis/sqlmap/engine/impl/
src/com/ibatis/sqlmap/engine/transaction/
src/com/ibatis/sqlmap/engine/transac...
Author: cbegin
Date: Sat Jun 9 23:55:31 2007
New Revision: 545849
URL: http://svn.apache.org/viewvc?view=rev&rev=545849
Log:
Improved type safety on configuration class methods
Modified:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapClasspathEntityResolver.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XmlParserState.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/CacheModelConfig.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ParameterMapConfig.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ResultMapConfig.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlSource.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/BaseTransactionConfig.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionConfig.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionManager.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/external/ExternalTransactionConfig.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransactionConfig.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jta/JtaTransactionConfig.java
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/StatementTest.java
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapClasspathEntityResolver.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapClasspathEntityResolver.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapClasspathEntityResolver.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapClasspathEntityResolver.java Sat Jun 9 23:55:31 2007
@@ -15,15 +15,11 @@
*/
package com.ibatis.sqlmap.engine.builder.xml;
-import com.ibatis.common.resources.Resources;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
+import com.ibatis.common.resources.*;
+import org.xml.sax.*;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
+import java.io.*;
+import java.util.*;
/**
* Offline entity resolver for the iBATIS DTDs
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapConfigParser.java Sat Jun 9 23:55:31 2007
@@ -1,15 +1,15 @@
package com.ibatis.sqlmap.engine.builder.xml;
-import com.ibatis.common.resources.Resources;
-import com.ibatis.common.xml.Nodelet;
-import com.ibatis.common.xml.NodeletParser;
-import com.ibatis.common.xml.NodeletUtils;
-import com.ibatis.sqlmap.client.SqlMapClient;
-import com.ibatis.sqlmap.client.SqlMapException;
+import com.ibatis.common.resources.*;
+import com.ibatis.common.xml.*;
+import com.ibatis.sqlmap.client.*;
+import com.ibatis.sqlmap.engine.conifg.*;
+import com.ibatis.sqlmap.engine.transaction.*;
+import com.ibatis.sqlmap.engine.datasource.*;
+import com.ibatis.sqlmap.engine.mapping.result.*;
import org.w3c.dom.Node;
-import java.io.InputStream;
-import java.io.Reader;
+import java.io.*;
import java.util.Properties;
public class SqlMapConfigParser {
@@ -69,7 +69,7 @@
private void addSqlMapConfigNodelets() {
parser.addNodelet("/sqlMapConfig/end()", new Nodelet() {
public void process(Node node) throws Exception {
- state.getConfig().wireupCacheModels();
+ state.getConfig().finalizeSqlMapConfig();
}
});
}
@@ -89,41 +89,47 @@
parser.addNodelet("/sqlMapConfig/settings", new Nodelet() {
public void process(Node node) throws Exception {
Properties attributes = NodeletUtils.parseAttributes(node, state.getGlobalProps());
+ SqlMapConfiguration config = state.getConfig();
String classInfoCacheEnabledAttr = attributes.getProperty("classInfoCacheEnabled");
boolean classInfoCacheEnabled = (classInfoCacheEnabledAttr == null || "true".equals(classInfoCacheEnabledAttr));
+ config.setClassInfoCacheEnabled(classInfoCacheEnabled);
String lazyLoadingEnabledAttr = attributes.getProperty("lazyLoadingEnabled");
boolean lazyLoadingEnabled = (lazyLoadingEnabledAttr == null || "true".equals(lazyLoadingEnabledAttr));
+ config.setLazyLoadingEnabled(lazyLoadingEnabled);
String statementCachingEnabledAttr = attributes.getProperty("statementCachingEnabled");
boolean statementCachingEnabled = (statementCachingEnabledAttr == null || "true".equals(statementCachingEnabledAttr));
+ config.setStatementCachingEnabled(statementCachingEnabled);
String cacheModelsEnabledAttr = attributes.getProperty("cacheModelsEnabled");
boolean cacheModelsEnabled = (cacheModelsEnabledAttr == null || "true".equals(cacheModelsEnabledAttr));
+ config.setCacheModelsEnabled(cacheModelsEnabled);
String enhancementEnabledAttr = attributes.getProperty("enhancementEnabled");
boolean enhancementEnabled = (enhancementEnabledAttr == null || "true".equals(enhancementEnabledAttr));
-
-
- String useStatementNamespacesAttr = attributes.getProperty("useStatementNamespaces");
- boolean useStatementNamespaces = "true".equals(useStatementNamespacesAttr);
+ config.setEnhancementEnabled(enhancementEnabled);
String maxTransactionsAttr = attributes.getProperty("maxTransactions");
Integer maxTransactions = maxTransactionsAttr == null ? null : new Integer((maxTransactionsAttr));
-
+ config.setMaxTransactions(maxTransactions);
String maxRequestsAttr = attributes.getProperty("maxRequests");
Integer maxRequests = maxRequestsAttr == null ? null : new Integer(maxRequestsAttr);
+ config.setMaxRequests(maxRequests);
String maxSessionsAttr = attributes.getProperty("maxSessions");
Integer maxSessions = maxSessionsAttr == null ? null : new Integer(maxSessionsAttr);
+ config.setMaxSessions(maxSessions);
String defaultTimeoutAttr = attributes.getProperty("defaultStatementTimeout");
Integer defaultTimeout = defaultTimeoutAttr == null ? null : Integer.valueOf(defaultTimeoutAttr);
+ config.setDefaultStatementTimeout(defaultTimeout);
+ String useStatementNamespacesAttr = attributes.getProperty("useStatementNamespaces");
+ boolean useStatementNamespaces = "true".equals(useStatementNamespacesAttr);
state.setUseStatementNamespaces(useStatementNamespaces);
- state.getConfig().setSettings(classInfoCacheEnabled, lazyLoadingEnabled, statementCachingEnabled, cacheModelsEnabled, enhancementEnabled, maxTransactions, maxRequests, maxSessions, defaultTimeout);
}
});
}
@@ -134,7 +140,7 @@
Properties prop = NodeletUtils.parseAttributes(node, state.getGlobalProps());
String alias = prop.getProperty("alias");
String type = prop.getProperty("type");
- state.getConfig().addTypeAlias(alias, type);
+ state.getConfig().getTypeHandlerFactory().putTypeAlias(alias, type);
}
});
}
@@ -146,7 +152,11 @@
String jdbcType = prop.getProperty("jdbcType");
String javaType = prop.getProperty("javaType");
String callback = prop.getProperty("callback");
- state.getConfig().addGlobalTypeHandler(javaType, jdbcType, callback);
+
+ javaType = state.getConfig().getTypeHandlerFactory().resolveAlias(javaType);
+ callback = state.getConfig().getTypeHandlerFactory().resolveAlias(callback);
+
+ state.getConfig().addTypeHandler(Resources.classForName(javaType), jdbcType, Resources.instantiate(callback));
}
});
}
@@ -165,7 +175,29 @@
Properties attributes = NodeletUtils.parseAttributes(node, state.getGlobalProps());
String type = attributes.getProperty("type");
boolean commitRequired = "true".equals(attributes.getProperty("commitRequired"));
- state.getConfig().setTransactionManager(type, commitRequired, state.getTxProps());
+
+ state.getConfig().getErrorContext().setActivity("configuring the transaction manager");
+ type = state.getConfig().getTypeHandlerFactory().resolveAlias(type);
+ TransactionManager txManager;
+ try {
+ state.getConfig().getErrorContext().setMoreInfo("Check the transaction manager type or class.");
+ TransactionConfig config = (TransactionConfig) Resources.instantiate(type);
+ config.setDataSource(state.getDataSource());
+ config.setMaximumConcurrentTransactions(state.getConfig().getDelegate().getMaxTransactions());
+ state.getConfig().getErrorContext().setMoreInfo("Check the transactio nmanager properties or configuration.");
+ config.setProperties(state.getTxProps());
+ config.setForceCommit(commitRequired);
+ config.setDataSource(state.getDataSource());
+ state.getConfig().getErrorContext().setMoreInfo(null);
+ txManager = new TransactionManager(config);
+ } catch (Exception e) {
+ if (e instanceof SqlMapException) {
+ throw (SqlMapException) e;
+ } else {
+ throw new SqlMapException("Error initializing TransactionManager. Could not instantiate TransactionConfig. Cause: " + e, e);
+ }
+ }
+ state.getConfig().setTransactionManager(txManager);
}
});
parser.addNodelet("/sqlMapConfig/transactionManager/dataSource/property", new Nodelet() {
@@ -185,7 +217,21 @@
String type = attributes.getProperty("type");
Properties props = state.getDsProps();
- state.getConfig().setDataSource(type, props);
+ type = state.getConfig().getTypeHandlerFactory().resolveAlias(type);
+ try {
+ state.getConfig().getErrorContext().setMoreInfo("Check the data source type or class.");
+ DataSourceFactory dsFactory = (DataSourceFactory) Resources.instantiate(type);
+ state.getConfig().getErrorContext().setMoreInfo("Check the data source properties or configuration.");
+ dsFactory.initialize(props);
+ state.setDataSource(dsFactory.getDataSource());
+ state.getConfig().getErrorContext().setMoreInfo(null);
+ } catch (Exception e) {
+ if (e instanceof SqlMapException) {
+ throw (SqlMapException) e;
+ } else {
+ throw new SqlMapException("Error initializing DataSource. Could not instantiate DataSourceFactory. Cause: " + e, e);
+ }
+ }
}
});
}
@@ -238,7 +284,15 @@
Properties attributes = NodeletUtils.parseAttributes(node, state.getGlobalProps());
String type = attributes.getProperty("type");
- state.getConfig().setResultObjectFactory(type);
+ state.getConfig().getErrorContext().setActivity("configuring the Result Object Factory");
+ ResultObjectFactory rof;
+ try {
+ rof = (ResultObjectFactory) Resources.instantiate(type);
+ state.getConfig().setResultObjectFactory(rof);
+ } catch (Exception e) {
+ throw new SqlMapException("Error instantiating resultObjectFactory: " + type, e);
+ }
+
}
});
parser.addNodelet("/sqlMapConfig/resultObjectFactory/property", new Nodelet() {
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java Sat Jun 9 23:55:31 2007
@@ -1,18 +1,12 @@
package com.ibatis.sqlmap.engine.builder.xml;
-import com.ibatis.common.xml.Nodelet;
-import com.ibatis.common.xml.NodeletException;
-import com.ibatis.common.xml.NodeletParser;
-import com.ibatis.common.xml.NodeletUtils;
-import com.ibatis.sqlmap.client.SqlMapException;
+import com.ibatis.common.xml.*;
+import com.ibatis.sqlmap.client.*;
+import com.ibatis.sqlmap.engine.conifg.*;
import com.ibatis.sqlmap.engine.mapping.statement.*;
-import com.ibatis.sqlmap.engine.conifg.ParameterMapConfig;
-import com.ibatis.sqlmap.engine.conifg.ResultMapConfig;
-import com.ibatis.sqlmap.engine.conifg.CacheModelConfig;
import org.w3c.dom.Node;
-import java.io.InputStream;
-import java.io.Reader;
+import java.io.*;
import java.util.Properties;
public class SqlMapParser {
@@ -55,14 +49,8 @@
state.setNamespace(attributes.getProperty("namespace"));
}
});
- parser.addNodelet("/sqlMap/end()", new Nodelet() {
- public void process(Node node) throws Exception {
- state.getConfig().bindDelegateSubMaps();
- }
- });
}
-
private void addSqlNodelets() {
parser.addNodelet("/sqlMap/sql", new Nodelet() {
public void process(Node node) throws Exception {
@@ -86,7 +74,7 @@
Properties prop = NodeletUtils.parseAttributes(node, state.getGlobalProps());
String alias = prop.getProperty("alias");
String type = prop.getProperty("type");
- state.getConfig().addTypeAlias(alias, type);
+ state.getConfig().getTypeHandlerFactory().putTypeAlias(alias, type);
}
});
}
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlStatementParser.java Sat Jun 9 23:55:31 2007
@@ -1,8 +1,9 @@
package com.ibatis.sqlmap.engine.builder.xml;
-import com.ibatis.common.xml.NodeletUtils;
+import com.ibatis.common.xml.*;
+import com.ibatis.sqlmap.engine.conifg.*;
import com.ibatis.sqlmap.engine.mapping.statement.*;
-import com.ibatis.sqlmap.engine.conifg.MappedStatementConfig;
+import org.w3c.dom.CharacterData;
import org.w3c.dom.*;
import java.util.Properties;
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java Sat Jun 9 23:55:31 2007
@@ -1,12 +1,12 @@
package com.ibatis.sqlmap.engine.builder.xml;
-import com.ibatis.common.xml.NodeletUtils;
-import com.ibatis.sqlmap.engine.mapping.parameter.InlineParameterMapParser;
+import com.ibatis.common.xml.*;
+import com.ibatis.sqlmap.engine.conifg.*;
+import com.ibatis.sqlmap.engine.mapping.parameter.*;
import com.ibatis.sqlmap.engine.mapping.sql.*;
-import com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql;
+import com.ibatis.sqlmap.engine.mapping.sql.dynamic.*;
import com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements.*;
-import com.ibatis.sqlmap.engine.mapping.sql.raw.RawSql;
-import com.ibatis.sqlmap.engine.conifg.*;
+import com.ibatis.sqlmap.engine.mapping.sql.raw.*;
import org.w3c.dom.CharacterData;
import org.w3c.dom.*;
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XmlParserState.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XmlParserState.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XmlParserState.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XmlParserState.java Sat Jun 9 23:55:31 2007
@@ -1,11 +1,9 @@
package com.ibatis.sqlmap.engine.builder.xml;
-import com.ibatis.common.resources.Resources;
-import com.ibatis.sqlmap.engine.conifg.SqlMapConfiguration;
-import com.ibatis.sqlmap.engine.conifg.ParameterMapConfig;
-import com.ibatis.sqlmap.engine.conifg.ResultMapConfig;
-import com.ibatis.sqlmap.engine.conifg.CacheModelConfig;
+import com.ibatis.common.resources.*;
+import com.ibatis.sqlmap.engine.conifg.*;
+import javax.sql.DataSource;
import java.util.*;
public class XmlParserState {
@@ -23,6 +21,7 @@
private CacheModelConfig cacheConfig;
private String namespace;
+ private DataSource dataSource;
public SqlMapConfiguration getConfig() {
return config;
@@ -130,4 +129,11 @@
}
}
+ public DataSource getDataSource() {
+ return dataSource;
+ }
+
+ public void setDataSource(DataSource dataSource) {
+ this.dataSource = dataSource;
+ }
}
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/CacheModelConfig.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/CacheModelConfig.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/CacheModelConfig.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/CacheModelConfig.java Sat Jun 9 23:55:31 2007
@@ -1,9 +1,9 @@
package com.ibatis.sqlmap.engine.conifg;
-import com.ibatis.sqlmap.engine.cache.CacheModel;
-import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient;
-import com.ibatis.sqlmap.engine.scope.ErrorContext;
-import com.ibatis.sqlmap.engine.type.TypeHandlerFactory;
+import com.ibatis.sqlmap.engine.cache.*;
+import com.ibatis.sqlmap.engine.impl.*;
+import com.ibatis.sqlmap.engine.scope.*;
+import com.ibatis.sqlmap.engine.type.*;
import java.util.Properties;
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/MappedStatementConfig.java Sat Jun 9 23:55:31 2007
@@ -1,29 +1,22 @@
package com.ibatis.sqlmap.engine.conifg;
-import com.ibatis.common.beans.Probe;
-import com.ibatis.common.beans.ProbeFactory;
-import com.ibatis.common.resources.Resources;
-import com.ibatis.sqlmap.client.SqlMapException;
-import com.ibatis.sqlmap.engine.cache.CacheModel;
-import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient;
-import com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate;
-import com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap;
-import com.ibatis.sqlmap.engine.mapping.parameter.InlineParameterMapParser;
-import com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap;
-import com.ibatis.sqlmap.engine.mapping.result.AutoResultMap;
-import com.ibatis.sqlmap.engine.mapping.result.BasicResultMap;
-import com.ibatis.sqlmap.engine.mapping.sql.Sql;
-import com.ibatis.sqlmap.engine.mapping.sql.SqlText;
-import com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql;
-import com.ibatis.sqlmap.engine.mapping.sql.simple.SimpleDynamicSql;
-import com.ibatis.sqlmap.engine.mapping.sql.stat.StaticSql;
+import com.ibatis.common.beans.*;
+import com.ibatis.common.resources.*;
+import com.ibatis.sqlmap.client.*;
+import com.ibatis.sqlmap.engine.cache.*;
+import com.ibatis.sqlmap.engine.impl.*;
+import com.ibatis.sqlmap.engine.mapping.parameter.*;
+import com.ibatis.sqlmap.engine.mapping.result.*;
+import com.ibatis.sqlmap.engine.mapping.sql.*;
+import com.ibatis.sqlmap.engine.mapping.sql.dynamic.*;
+import com.ibatis.sqlmap.engine.mapping.sql.simple.*;
+import com.ibatis.sqlmap.engine.mapping.sql.stat.*;
import com.ibatis.sqlmap.engine.mapping.statement.*;
-import com.ibatis.sqlmap.engine.scope.ErrorContext;
-import com.ibatis.sqlmap.engine.type.TypeHandlerFactory;
+import com.ibatis.sqlmap.engine.scope.*;
+import com.ibatis.sqlmap.engine.type.*;
import java.sql.ResultSet;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
public class MappedStatementConfig {
private static final Probe PROBE = ProbeFactory.getProbe();
@@ -35,7 +28,7 @@
private MappedStatement mappedStatement;
private MappedStatement rootStatement;
- MappedStatementConfig(SqlMapConfiguration config, String id, GeneralStatement statement, SqlSource processor, String parameterMapName, String parameterClassName, String resultMapName, String[] additionalResultMapNames, String resultClassName, String[] additionalResultClasses, String cacheModelName, String resultSetType, String fetchSize, String allowRemapping, String timeout, String xmlResultName) {
+ MappedStatementConfig(SqlMapConfiguration config, String id, GeneralStatement statement, SqlSource processor, String parameterMapName, String parameterClassName, String resultMapName, String[] additionalResultMapNames, String resultClassName, String[] additionalResultClasses, String cacheModelName, String resultSetType, String fetchSize, String allowRemapping, String timeout, Integer defaultStatementTimeout, String xmlResultName) {
this.errorContext = config.getErrorContext();
this.client = config.getClient();
this.delegate = client.getDelegate();
@@ -106,7 +99,7 @@
}
}
- statement.setTimeout(config.getDefaultStatementTimeout());
+ statement.setTimeout(defaultStatementTimeout);
if (timeout != null) {
try {
statement.setTimeout(Integer.valueOf(timeout));
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ParameterMapConfig.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ParameterMapConfig.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ParameterMapConfig.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ParameterMapConfig.java Sat Jun 9 23:55:31 2007
@@ -1,18 +1,14 @@
package com.ibatis.sqlmap.engine.conifg;
-import com.ibatis.common.resources.Resources;
-import com.ibatis.sqlmap.client.SqlMapException;
-import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
-import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient;
-import com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap;
-import com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMapping;
-import com.ibatis.sqlmap.engine.scope.ErrorContext;
-import com.ibatis.sqlmap.engine.type.CustomTypeHandler;
-import com.ibatis.sqlmap.engine.type.TypeHandler;
-import com.ibatis.sqlmap.engine.type.TypeHandlerFactory;
+import com.ibatis.common.resources.*;
+import com.ibatis.sqlmap.client.*;
+import com.ibatis.sqlmap.client.extensions.*;
+import com.ibatis.sqlmap.engine.impl.*;
+import com.ibatis.sqlmap.engine.mapping.parameter.*;
+import com.ibatis.sqlmap.engine.scope.*;
+import com.ibatis.sqlmap.engine.type.*;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
public class ParameterMapConfig {
private SqlMapConfiguration config;
@@ -66,7 +62,15 @@
}
} else {
errorContext.setMoreInfo("Check the parameter mapping property type or name.");
- handler = config.resolveTypeHandler(client.getDelegate().getTypeHandlerFactory(), parameterMap.getParameterClass(), propertyName, javaType, jdbcType);
+ try {
+ Class javaClass = null;
+ if (javaType != null) {
+ javaClass = Resources.classForName(javaType);
+ }
+ handler = config.resolveTypeHandler(client.getDelegate().getTypeHandlerFactory(), parameterMap.getParameterClass(), propertyName, javaClass, jdbcType);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException("Error setting type handler on parameter mapping. Cause: " + e);
+ }
}
BasicParameterMapping mapping = new BasicParameterMapping();
mapping.setPropertyName(propertyName);
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ResultMapConfig.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ResultMapConfig.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ResultMapConfig.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/ResultMapConfig.java Sat Jun 9 23:55:31 2007
@@ -1,22 +1,13 @@
package com.ibatis.sqlmap.engine.conifg;
-import com.ibatis.common.resources.Resources;
-import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
-import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient;
-import com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate;
-import com.ibatis.sqlmap.engine.mapping.result.BasicResultMap;
-import com.ibatis.sqlmap.engine.mapping.result.BasicResultMapping;
-import com.ibatis.sqlmap.engine.mapping.result.Discriminator;
-import com.ibatis.sqlmap.engine.mapping.result.ResultMapping;
-import com.ibatis.sqlmap.engine.scope.ErrorContext;
-import com.ibatis.sqlmap.engine.type.CustomTypeHandler;
-import com.ibatis.sqlmap.engine.type.TypeHandler;
-import com.ibatis.sqlmap.engine.type.TypeHandlerFactory;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
+import com.ibatis.common.resources.*;
+import com.ibatis.sqlmap.client.extensions.*;
+import com.ibatis.sqlmap.engine.impl.*;
+import com.ibatis.sqlmap.engine.mapping.result.*;
+import com.ibatis.sqlmap.engine.scope.*;
+import com.ibatis.sqlmap.engine.type.*;
+
+import java.util.*;
public class ResultMapConfig {
private SqlMapConfiguration config;
@@ -104,7 +95,15 @@
}
} else {
errorContext.setMoreInfo("Check the result mapping property type or name.");
- handler = config.resolveTypeHandler(client.getDelegate().getTypeHandlerFactory(), resultMap.getResultClass(), "", javaType, jdbcType, true);
+ try {
+ Class javaClass = null;
+ if (javaType != null) {
+ javaClass = Resources.classForName(javaType);
+ }
+ handler = config.resolveTypeHandler(client.getDelegate().getTypeHandlerFactory(), resultMap.getResultClass(), "", javaClass, jdbcType, true);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException("Error setting type handler on parameter mapping. Cause: " + e);
+ }
}
BasicResultMapping mapping = new BasicResultMapping();
mapping.setColumnName(columnName);
@@ -152,7 +151,15 @@
}
} else {
errorContext.setMoreInfo("Check the result mapping property type or name.");
- handler = config.resolveTypeHandler(client.getDelegate().getTypeHandlerFactory(), resultMap.getResultClass(), propertyName, javaType, jdbcType, true);
+ try {
+ Class javaClass = null;
+ if (javaType != null) {
+ javaClass = Resources.classForName(javaType);
+ }
+ handler = config.resolveTypeHandler(client.getDelegate().getTypeHandlerFactory(), resultMap.getResultClass(), propertyName, javaClass, jdbcType, true);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException("Error setting type handler on parameter mapping. Cause: " + e);
+ }
}
BasicResultMapping mapping = new BasicResultMapping();
mapping.setPropertyName(propertyName);
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java Sat Jun 9 23:55:31 2007
@@ -1,39 +1,27 @@
package com.ibatis.sqlmap.engine.conifg;
-import com.ibatis.common.beans.ClassInfo;
-import com.ibatis.common.beans.Probe;
-import com.ibatis.common.beans.ProbeFactory;
-import com.ibatis.common.resources.Resources;
-import com.ibatis.sqlmap.client.SqlMapException;
-import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
-import com.ibatis.sqlmap.engine.accessplan.AccessPlanFactory;
-import com.ibatis.sqlmap.engine.cache.CacheModel;
-import com.ibatis.sqlmap.engine.cache.fifo.FifoCacheController;
-import com.ibatis.sqlmap.engine.cache.lru.LruCacheController;
-import com.ibatis.sqlmap.engine.cache.memory.MemoryCacheController;
-import com.ibatis.sqlmap.engine.datasource.DataSourceFactory;
-import com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory;
-import com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory;
-import com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory;
-import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient;
-import com.ibatis.sqlmap.engine.impl.SqlMapClientImpl;
-import com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate;
-import com.ibatis.sqlmap.engine.mapping.result.Discriminator;
-import com.ibatis.sqlmap.engine.mapping.result.ResultMap;
-import com.ibatis.sqlmap.engine.mapping.result.ResultObjectFactory;
-import com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement;
-import com.ibatis.sqlmap.engine.mapping.statement.MappedStatement;
-import com.ibatis.sqlmap.engine.scope.ErrorContext;
-import com.ibatis.sqlmap.engine.transaction.TransactionConfig;
-import com.ibatis.sqlmap.engine.transaction.TransactionManager;
-import com.ibatis.sqlmap.engine.transaction.external.ExternalTransactionConfig;
-import com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransactionConfig;
-import com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConfig;
+import com.ibatis.common.beans.*;
+import com.ibatis.common.resources.*;
+import com.ibatis.sqlmap.client.*;
+import com.ibatis.sqlmap.client.extensions.*;
+import com.ibatis.sqlmap.engine.accessplan.*;
+import com.ibatis.sqlmap.engine.cache.*;
+import com.ibatis.sqlmap.engine.cache.fifo.*;
+import com.ibatis.sqlmap.engine.cache.lru.*;
+import com.ibatis.sqlmap.engine.cache.memory.*;
+import com.ibatis.sqlmap.engine.datasource.*;
+import com.ibatis.sqlmap.engine.impl.*;
+import com.ibatis.sqlmap.engine.mapping.result.*;
+import com.ibatis.sqlmap.engine.mapping.statement.*;
+import com.ibatis.sqlmap.engine.scope.*;
+import com.ibatis.sqlmap.engine.transaction.*;
+import com.ibatis.sqlmap.engine.transaction.external.*;
+import com.ibatis.sqlmap.engine.transaction.jdbc.*;
+import com.ibatis.sqlmap.engine.transaction.jta.*;
import com.ibatis.sqlmap.engine.type.*;
import javax.sql.DataSource;
-import java.util.Iterator;
-import java.util.Properties;
+import java.util.*;
public class SqlMapConfiguration {
private static final Probe PROBE = ProbeFactory.getProbe();
@@ -68,19 +56,15 @@
return delegate;
}
- public Integer getDefaultStatementTimeout() {
- return defaultStatementTimeout;
- }
-
//
// Utility Methods
//
- public TypeHandler resolveTypeHandler(TypeHandlerFactory typeHandlerFactory, Class clazz, String propertyName, String javaType, String jdbcType) {
+ TypeHandler resolveTypeHandler(TypeHandlerFactory typeHandlerFactory, Class clazz, String propertyName, Class javaType, String jdbcType) {
return resolveTypeHandler(typeHandlerFactory, clazz, propertyName, javaType, jdbcType, false);
}
- public TypeHandler resolveTypeHandler(TypeHandlerFactory typeHandlerFactory, Class clazz, String propertyName, String javaType, String jdbcType, boolean useSetterToResolve) {
+ TypeHandler resolveTypeHandler(TypeHandlerFactory typeHandlerFactory, Class clazz, String propertyName, Class javaType, String jdbcType, boolean useSetterToResolve) {
TypeHandler handler;
if (clazz == null) {
// Unknown
@@ -93,12 +77,7 @@
if (javaType == null) {
handler = typeHandlerFactory.getUnkownTypeHandler(); //BUG 1012591 - typeHandlerFactory.getTypeHandler(java.lang.Object.class, jdbcType);
} else {
- try {
- Class javaClass = Resources.classForName(javaType);
- handler = typeHandlerFactory.getTypeHandler(javaClass, jdbcType);
- } catch (Exception e) {
- throw new RuntimeException("Error. Could not set TypeHandler. Cause: " + e, e);
- }
+ handler = typeHandlerFactory.getTypeHandler(javaType, jdbcType);
}
} else if (typeHandlerFactory.getTypeHandler(clazz, jdbcType) != null) {
// Primitive
@@ -114,40 +93,66 @@
handler = typeHandlerFactory.getTypeHandler(type, jdbcType);
}
} else {
- try {
- Class javaClass = Resources.classForName(javaType);
- handler = typeHandlerFactory.getTypeHandler(javaClass, jdbcType);
- } catch (Exception e) {
- throw new RuntimeException("Error. Could not set TypeHandler. Cause: " + e, e);
- }
+ handler = typeHandlerFactory.getTypeHandler(javaType, jdbcType);
}
}
return handler;
}
- // TODO: Split into separate methods
- public void setSettings(boolean classInfoCacheEnabled, boolean lazyLoadingEnabled, boolean statementCachingEnabled, boolean cacheModelsEnabled, boolean enhancementEnabled, Integer maxTransactions, Integer maxRequests, Integer maxSessions, Integer defaultTimeout) {
- errorContext.setActivity("loading settings properties");
+ public void setClassInfoCacheEnabled (boolean classInfoCacheEnabled) {
+ errorContext.setActivity("setting class info cache enabled/disabled");
ClassInfo.setCacheEnabled(classInfoCacheEnabled);
+ }
+
+ public void setLazyLoadingEnabled (boolean lazyLoadingEnabled) {
+ errorContext.setActivity("setting lazy loading enabled/disabled");
client.getDelegate().setLazyLoadingEnabled(lazyLoadingEnabled);
+ }
+
+ public void setStatementCachingEnabled (boolean statementCachingEnabled) {
+ errorContext.setActivity("setting statement caching enabled/disabled");
client.getDelegate().setStatementCacheEnabled(statementCachingEnabled);
+ }
+
+ public void setCacheModelsEnabled (boolean cacheModelsEnabled) {
+ errorContext.setActivity("setting cache models enabled/disabled");
client.getDelegate().setCacheModelsEnabled(cacheModelsEnabled);
+ }
+
+ public void setEnhancementEnabled (boolean enhancementEnabled) {
+ errorContext.setActivity("setting enhancement enabled/disabled");
try {
enhancementEnabled = enhancementEnabled && Resources.classForName("net.sf.cglib.proxy.InvocationHandler") != null;
} catch (ClassNotFoundException e) {
enhancementEnabled = false;
}
client.getDelegate().setEnhancementEnabled(enhancementEnabled);
+ AccessPlanFactory.setBytecodeEnhancementEnabled(enhancementEnabled);
+ }
+
+ public void setMaxTransactions (Integer maxTransactions) {
+ errorContext.setActivity("setting maximum transactions");
if (maxTransactions != null && maxTransactions.intValue() > 0) {
client.getDelegate().setMaxTransactions(maxTransactions.intValue());
}
+ }
+
+ public void setMaxRequests (Integer maxRequests) {
+ errorContext.setActivity("setting maximum requests");
if (maxRequests != null && maxRequests.intValue() > 0) {
client.getDelegate().setMaxRequests(maxRequests.intValue());
}
+ }
+
+ public void setMaxSessions (Integer maxSessions) {
+ errorContext.setActivity("setting maximum sessions");
if (maxSessions != null && maxSessions.intValue() > 0) {
client.getDelegate().setMaxSessions(maxSessions.intValue());
}
- AccessPlanFactory.setBytecodeEnhancementEnabled(client.getDelegate().isEnhancementEnabled());
+ }
+
+ public void setDefaultStatementTimeout(Integer defaultTimeout) {
+ errorContext.setActivity("setting default timeout");
if (defaultTimeout != null) {
try {
defaultStatementTimeout = defaultTimeout;
@@ -157,31 +162,23 @@
}
}
- public void addTypeAlias(String alias, String type) {
- typeHandlerFactory.putTypeAlias(alias, type);
- }
-
- public void addGlobalTypeHandler(String javaType, String jdbcType, String callback) {
+ public void addTypeHandler(Class javaType, String jdbcType, Object callback) {
try {
errorContext.setActivity("building a building custom type handler");
TypeHandlerFactory typeHandlerFactory = client.getDelegate().getTypeHandlerFactory();
- callback = typeHandlerFactory.resolveAlias(callback);
- javaType = typeHandlerFactory.resolveAlias(javaType);
- errorContext.setMoreInfo("Check the callback attribute '" + callback + "' (must be a classname).");
TypeHandler typeHandler;
- Object impl = Resources.instantiate(callback);
- if (impl instanceof TypeHandlerCallback) {
- typeHandler = new CustomTypeHandler((TypeHandlerCallback) impl);
- } else if (impl instanceof TypeHandler) {
- typeHandler = (TypeHandler) impl;
+ if (callback instanceof TypeHandlerCallback) {
+ typeHandler = new CustomTypeHandler((TypeHandlerCallback) callback);
+ } else if (callback instanceof TypeHandler) {
+ typeHandler = (TypeHandler) callback;
} else {
- throw new RuntimeException("The class '' is not a valid implementation of TypeHandler or TypeHandlerCallback");
+ throw new RuntimeException("The object '" + callback + "' is not a valid implementation of TypeHandler or TypeHandlerCallback");
}
errorContext.setMoreInfo("Check the javaType attribute '" + javaType + "' (must be a classname) or the jdbcType '" + jdbcType + "' (must be a JDBC type name).");
if (jdbcType != null && jdbcType.length() > 0) {
- typeHandlerFactory.register(Resources.classForName(javaType), jdbcType, typeHandler);
+ typeHandlerFactory.register(javaType, jdbcType, typeHandler);
} else {
- typeHandlerFactory.register(Resources.classForName(javaType), typeHandler);
+ typeHandlerFactory.register(javaType, typeHandler);
}
} catch (Exception e) {
throw new SqlMapException("Error registering occurred. Cause: " + e, e);
@@ -190,90 +187,12 @@
errorContext.setObjectId(null);
}
- //TODO: pass in datasource as a parameter to setTXMgr
- public void setDataSource(String type, Properties props) {
- type = typeHandlerFactory.resolveAlias(type);
- try {
- errorContext.setMoreInfo("Check the data source type or class.");
- DataSourceFactory dsFactory = (DataSourceFactory) Resources.instantiate(type);
- errorContext.setMoreInfo("Check the data source properties or configuration.");
- dsFactory.initialize(props);
- dataSource = dsFactory.getDataSource();
- errorContext.setMoreInfo(null);
- } catch (Exception e) {
- if (e instanceof SqlMapException) {
- throw (SqlMapException) e;
- } else {
- throw new SqlMapException("Error initializing DataSource. Could not instantiate DataSourceFactory. Cause: " + e, e);
- }
- }
- }
-
- public void setTransactionManager(String type, boolean commitRequired, Properties props) {
- errorContext.setActivity("configuring the transaction manager");
- type = typeHandlerFactory.resolveAlias(type);
- TransactionManager txManager;
- try {
- errorContext.setMoreInfo("Check the transaction manager type or class.");
- TransactionConfig config = (TransactionConfig) Resources.instantiate(type);
- config.setDataSource(dataSource);
- config.setMaximumConcurrentTransactions(client.getDelegate().getMaxTransactions());
- errorContext.setMoreInfo("Check the transactio nmanager properties or configuration.");
- config.initialize(props);
- errorContext.setMoreInfo(null);
- txManager = new TransactionManager(config);
- txManager.setForceCommit(commitRequired);
- } catch (Exception e) {
- if (e instanceof SqlMapException) {
- throw (SqlMapException) e;
- } else {
- throw new SqlMapException("Error initializing TransactionManager. Could not instantiate TransactionConfig. Cause: " + e, e);
- }
- }
- client.getDelegate().setTxManager(txManager);
+ public void setTransactionManager(TransactionManager txManager) {
+ delegate.setTxManager(txManager);
}
- public void setResultObjectFactory(String type) {
- errorContext.setActivity("configuring the Result Object Factory");
- ResultObjectFactory rof;
- try {
- rof = (ResultObjectFactory) Resources.instantiate(type);
- delegate.setResultObjectFactory(rof);
- } catch (Exception e) {
- throw new SqlMapException("Error instantiating resultObjectFactory: " + type, e);
- }
- }
-
- // TODO - post processing sql map config
- public void wireupCacheModels() {
- Iterator cacheNames = client.getDelegate().getCacheModelNames();
- while (cacheNames.hasNext()) {
- String cacheName = (String) cacheNames.next();
- CacheModel cacheModel = client.getDelegate().getCacheModel(cacheName);
- Iterator statementNames = cacheModel.getFlushTriggerStatementNames();
- while (statementNames.hasNext()) {
- String statementName = (String) statementNames.next();
- MappedStatement statement = client.getDelegate().getMappedStatement(statementName);
- if (statement != null) {
- statement.addExecuteListener(cacheModel);
- } else {
- throw new RuntimeException("Could not find statement named '" + statementName + "' for use as a flush trigger for the cache model named '" + cacheName + "'.");
- }
- }
- }
- }
-
- // TODO: post processing sql map
- public void bindDelegateSubMaps() {
- Iterator names = delegate.getResultMapNames();
- while (names.hasNext()) {
- String name = (String) names.next();
- ResultMap rm = delegate.getResultMap(name);
- Discriminator disc = rm.getDiscriminator();
- if (disc != null) {
- disc.bindSubMaps();
- }
- }
+ public void setResultObjectFactory(ResultObjectFactory rof) {
+ delegate.setResultObjectFactory(rof);
}
public ParameterMapConfig newParameterMapConfig(String id, String parameterClassName) {
@@ -289,7 +208,7 @@
}
public MappedStatementConfig newMappedStatementConfig(String id, GeneralStatement statement, SqlSource processor, String parameterMapName, String parameterClassName, String resultMapName, String[] additionalResultMapNames, String resultClassName, String[] additionalResultClasses, String resultSetType, String fetchSize, String allowRemapping, String timeout, String cacheModelName, String xmlResultName) {
- return new MappedStatementConfig(this, id, statement, processor, parameterMapName, parameterClassName, resultMapName, additionalResultMapNames, resultClassName, additionalResultClasses, cacheModelName, resultSetType, fetchSize, allowRemapping, timeout, xmlResultName);
+ return new MappedStatementConfig(this, id, statement, processor, parameterMapName, parameterClassName, resultMapName, additionalResultMapNames, resultClassName, additionalResultClasses, cacheModelName, resultSetType, fetchSize, allowRemapping, timeout, defaultStatementTimeout, xmlResultName);
}
private void registerDefaultTypeAliases() {
@@ -315,6 +234,43 @@
typeHandlerFactory.putTypeAlias("domCollection", DomCollectionTypeMarker.class.getName());
typeHandlerFactory.putTypeAlias("xml", XmlTypeMarker.class.getName());
typeHandlerFactory.putTypeAlias("xmlCollection", XmlCollectionTypeMarker.class.getName());
+ }
+
+ public void finalizeSqlMapConfig() {
+ wireUpCacheModels();
+ bindResultMapDiscriminators();
+ }
+
+ private void wireUpCacheModels() {
+ // Wire Up Cache Models
+ Iterator cacheNames = client.getDelegate().getCacheModelNames();
+ while (cacheNames.hasNext()) {
+ String cacheName = (String) cacheNames.next();
+ CacheModel cacheModel = client.getDelegate().getCacheModel(cacheName);
+ Iterator statementNames = cacheModel.getFlushTriggerStatementNames();
+ while (statementNames.hasNext()) {
+ String statementName = (String) statementNames.next();
+ MappedStatement statement = client.getDelegate().getMappedStatement(statementName);
+ if (statement != null) {
+ statement.addExecuteListener(cacheModel);
+ } else {
+ throw new RuntimeException("Could not find statement named '" + statementName + "' for use as a flush trigger for the cache model named '" + cacheName + "'.");
+ }
+ }
+ }
+ }
+
+ private void bindResultMapDiscriminators() {
+ // Bind discriminators
+ Iterator names = delegate.getResultMapNames();
+ while (names.hasNext()) {
+ String name = (String) names.next();
+ ResultMap rm = delegate.getResultMap(name);
+ Discriminator disc = rm.getDiscriminator();
+ if (disc != null) {
+ disc.bindSubMaps();
+ }
+ }
}
}
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlSource.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlSource.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlSource.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlSource.java Sat Jun 9 23:55:31 2007
@@ -1,6 +1,6 @@
package com.ibatis.sqlmap.engine.conifg;
-import com.ibatis.sqlmap.engine.mapping.sql.Sql;
+import com.ibatis.sqlmap.engine.mapping.sql.*;
public interface SqlSource {
Sql getSql();
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/impl/SqlMapExecutorDelegate.java Sat Jun 9 23:55:31 2007
@@ -852,7 +852,7 @@
public DataSource getDataSource() {
DataSource ds = null;
if (txManager != null) {
- ds = txManager.getDataSource();
+ ds = txManager.getConfig().getDataSource();
}
return ds;
}
@@ -907,8 +907,8 @@
CacheKey key = new CacheKey();
if (txManager != null) {
key.update(txManager);
- if (txManager.getDataSource() != null) {
- key.update(txManager.getDataSource());
+ if (txManager.getConfig().getDataSource() != null) {
+ key.update(txManager.getConfig().getDataSource());
}
}
key.update(System.identityHashCode(this));
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/BaseTransactionConfig.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/BaseTransactionConfig.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/BaseTransactionConfig.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/BaseTransactionConfig.java Sat Jun 9 23:55:31 2007
@@ -15,9 +15,13 @@
*/
package com.ibatis.sqlmap.engine.transaction;
+import javax.sql.DataSource;
+
public abstract class BaseTransactionConfig implements TransactionConfig {
- private int maximumConcurrentTransactions;
+ protected DataSource dataSource;
+ protected boolean forceCommit;
+ protected int maximumConcurrentTransactions;
public int getMaximumConcurrentTransactions() {
return maximumConcurrentTransactions;
@@ -25,6 +29,22 @@
public void setMaximumConcurrentTransactions(int maximumConcurrentTransactions) {
this.maximumConcurrentTransactions = maximumConcurrentTransactions;
+ }
+
+ public boolean isForceCommit() {
+ return forceCommit;
+ }
+
+ public void setForceCommit(boolean forceCommit) {
+ this.forceCommit = forceCommit;
+ }
+
+ public DataSource getDataSource() {
+ return dataSource;
+ }
+
+ public void setDataSource(DataSource ds) {
+ this.dataSource = ds;
}
}
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionConfig.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionConfig.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionConfig.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionConfig.java Sat Jun 9 23:55:31 2007
@@ -21,16 +21,19 @@
public interface TransactionConfig {
- public DataSource getDataSource();
+ Transaction newTransaction(int transactionIsolation)
+ throws SQLException, TransactionException;
- public void setDataSource(DataSource ds);
+ DataSource getDataSource();
+ void setDataSource(DataSource ds);
- public void initialize(Properties props) throws SQLException, TransactionException;
+ int getMaximumConcurrentTransactions();
+ void setMaximumConcurrentTransactions(int maximumConcurrentTransactions);
- public Transaction newTransaction(int transactionIsolation) throws SQLException, TransactionException;
+ boolean isForceCommit();
+ void setForceCommit(boolean forceCommit);
- public int getMaximumConcurrentTransactions();
-
- public void setMaximumConcurrentTransactions(int maximumConcurrentTransactions);
+ void setProperties(Properties props)
+ throws SQLException, TransactionException;
}
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionManager.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionManager.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionManager.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/TransactionManager.java Sat Jun 9 23:55:31 2007
@@ -18,23 +18,18 @@
import com.ibatis.common.util.Throttle;
import com.ibatis.sqlmap.engine.scope.SessionScope;
-import javax.sql.DataSource;
import java.sql.SQLException;
public class TransactionManager {
- private TransactionConfig transactionConfig;
-
- private boolean forceCommit;
-
+ private TransactionConfig config;
private Throttle txThrottle;
public TransactionManager(TransactionConfig transactionConfig) {
- this.transactionConfig = transactionConfig;
+ this.config = transactionConfig;
this.txThrottle = new Throttle(transactionConfig.getMaximumConcurrentTransactions());
}
-
public void begin(SessionScope session) throws SQLException, TransactionException {
begin(session, IsolationLevel.UNSET_ISOLATION_LEVEL);
}
@@ -54,7 +49,7 @@
txThrottle.increment();
try {
- trans = transactionConfig.newTransaction(transactionIsolation);
+ trans = config.newTransaction(transactionIsolation);
session.setCommitRequired(false);
} catch (SQLException e) {
txThrottle.decrement();
@@ -62,6 +57,9 @@
} catch (TransactionException e) {
txThrottle.decrement();
throw e;
+ } catch (Exception e) {
+ txThrottle.decrement();
+ throw new RuntimeException ("Unexpected exception wile beginning transaction.", e);
}
session.setTransaction(trans);
@@ -79,7 +77,7 @@
} else if (state != TransactionState.STATE_STARTED && state != TransactionState.STATE_COMMITTED ) {
throw new TransactionException("TransactionManager could not commit. No transaction is started.");
}
- if (session.isCommitRequired() || forceCommit) {
+ if (session.isCommitRequired() || config.isForceCommit()) {
trans.commit();
session.setCommitRequired(false);
}
@@ -101,7 +99,7 @@
if (trans != null) {
try {
if (state != TransactionState.STATE_COMMITTED) {
- if (session.isCommitRequired() || forceCommit) {
+ if (session.isCommitRequired() || config.isForceCommit()) {
trans.rollback();
session.setCommitRequired(false);
}
@@ -122,20 +120,8 @@
}
}
- public DataSource getDataSource() {
- return transactionConfig.getDataSource();
- }
-
- public void setDataSource(DataSource ds) {
- transactionConfig.setDataSource(ds);
- }
-
- public boolean isForceCommit() {
- return forceCommit;
- }
-
- public void setForceCommit(boolean forceCommit) {
- this.forceCommit = forceCommit;
+ public TransactionConfig getConfig() {
+ return config;
}
}
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/external/ExternalTransactionConfig.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/external/ExternalTransactionConfig.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/external/ExternalTransactionConfig.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/external/ExternalTransactionConfig.java Sat Jun 9 23:55:31 2007
@@ -15,37 +15,41 @@
*/
package com.ibatis.sqlmap.engine.transaction.external;
-import com.ibatis.sqlmap.engine.transaction.BaseTransactionConfig;
-import com.ibatis.sqlmap.engine.transaction.Transaction;
-import com.ibatis.sqlmap.engine.transaction.TransactionException;
+import com.ibatis.sqlmap.engine.transaction.*;
-import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Properties;
public class ExternalTransactionConfig extends BaseTransactionConfig {
- private DataSource dataSource;
private boolean defaultAutoCommit = false;
private boolean setAutoCommitAllowed = true;
- public DataSource getDataSource() {
- return dataSource;
+ public Transaction newTransaction(int transactionIsolation) throws SQLException, TransactionException {
+ return new ExternalTransaction(dataSource, defaultAutoCommit, setAutoCommitAllowed, transactionIsolation);
+ }
+
+ public boolean isDefaultAutoCommit() {
+ return defaultAutoCommit;
+ }
+
+ public void setDefaultAutoCommit(boolean defaultAutoCommit) {
+ this.defaultAutoCommit = defaultAutoCommit;
}
- public void setDataSource(DataSource ds) {
- this.dataSource = ds;
+ public boolean isSetAutoCommitAllowed() {
+ return setAutoCommitAllowed;
}
- public void initialize(Properties props) throws SQLException, TransactionException {
+ public void setSetAutoCommitAllowed(boolean setAutoCommitAllowed) {
+ this.setAutoCommitAllowed = setAutoCommitAllowed;
+ }
+
+ public void setProperties(Properties props) throws SQLException, TransactionException {
String dacProp = props.getProperty("DefaultAutoCommit");
String sacaProp = props.getProperty("SetAutoCommitAllowed");
defaultAutoCommit = "true".equals(dacProp);
setAutoCommitAllowed = "true".equals(sacaProp) || sacaProp == null;
- }
-
- public Transaction newTransaction(int transactionIsolation) throws SQLException, TransactionException {
- return new ExternalTransaction(dataSource, defaultAutoCommit, setAutoCommitAllowed, transactionIsolation);
}
}
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransactionConfig.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransactionConfig.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransactionConfig.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jdbc/JdbcTransactionConfig.java Sat Jun 9 23:55:31 2007
@@ -15,31 +15,18 @@
*/
package com.ibatis.sqlmap.engine.transaction.jdbc;
-import com.ibatis.sqlmap.engine.transaction.BaseTransactionConfig;
-import com.ibatis.sqlmap.engine.transaction.Transaction;
-import com.ibatis.sqlmap.engine.transaction.TransactionException;
+import com.ibatis.sqlmap.engine.transaction.*;
-import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Properties;
public class JdbcTransactionConfig extends BaseTransactionConfig {
- private DataSource dataSource;
-
- public DataSource getDataSource() {
- return dataSource;
- }
-
- public void setDataSource(DataSource ds) {
- this.dataSource = ds;
- }
-
- public void initialize(Properties props) throws SQLException, TransactionException {
- }
-
public Transaction newTransaction(int transactionIsolation) throws SQLException, TransactionException {
return new JdbcTransaction(dataSource, transactionIsolation);
+ }
+
+ public void setProperties(Properties props) throws SQLException, TransactionException {
}
}
Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jta/JtaTransactionConfig.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jta/JtaTransactionConfig.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jta/JtaTransactionConfig.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/transaction/jta/JtaTransactionConfig.java Sat Jun 9 23:55:31 2007
@@ -15,32 +15,31 @@
*/
package com.ibatis.sqlmap.engine.transaction.jta;
-import com.ibatis.sqlmap.client.SqlMapException;
-import com.ibatis.sqlmap.engine.transaction.BaseTransactionConfig;
-import com.ibatis.sqlmap.engine.transaction.Transaction;
-import com.ibatis.sqlmap.engine.transaction.TransactionException;
-
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.sql.DataSource;
+import com.ibatis.sqlmap.client.*;
+import com.ibatis.sqlmap.engine.transaction.*;
+
+import javax.naming.*;
import javax.transaction.UserTransaction;
import java.sql.SQLException;
import java.util.Properties;
public class JtaTransactionConfig extends BaseTransactionConfig {
- private DataSource dataSource;
private UserTransaction userTransaction;
- public DataSource getDataSource() {
- return dataSource;
+ public Transaction newTransaction(int transactionIsolation) throws SQLException, TransactionException {
+ return new JtaTransaction(userTransaction, dataSource, transactionIsolation);
+ }
+
+ public UserTransaction getUserTransaction() {
+ return userTransaction;
}
- public void setDataSource(DataSource ds) {
- this.dataSource = ds;
+ public void setUserTransaction(UserTransaction userTransaction) {
+ this.userTransaction = userTransaction;
}
- public void initialize(Properties props) throws SQLException, TransactionException {
+ public void setProperties(Properties props) throws SQLException, TransactionException {
String utxName = null;
try {
utxName = (String) props.get("UserTransaction");
@@ -49,10 +48,6 @@
} catch (NamingException e) {
throw new SqlMapException("Error initializing JtaTransactionConfig while looking up UserTransaction (" + utxName + "). Cause: " + e);
}
- }
-
- public Transaction newTransaction(int transactionIsolation) throws SQLException, TransactionException {
- return new JtaTransaction(userTransaction, dataSource, transactionIsolation);
}
}
Modified: ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/StatementTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/StatementTest.java?view=diff&rev=545849&r1=545848&r2=545849
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/StatementTest.java (original)
+++ ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/StatementTest.java Sat Jun 9 23:55:31 2007
@@ -42,30 +42,30 @@
public void testUserConnection() throws SQLException {
DataSource ds = sqlMap.getDataSource();
Connection conn = ds.getConnection();
- ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().setDataSource(null);
+ ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().getConfig().setDataSource(null);
sqlMap.setUserConnection(conn);
Account account = (Account) sqlMap.queryForObject("getAccountViaColumnName", new Integer(1));
conn.close();
assertAccount1(account);
- ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().setDataSource(ds);
+ ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().getConfig().setDataSource(ds);
}
public void testSessionUserConnection() throws SQLException {
DataSource ds = sqlMap.getDataSource();
Connection conn = ds.getConnection();
- ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().setDataSource(null);
+ ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().getConfig().setDataSource(null);
SqlMapSession session = sqlMap.openSession(conn);
Account account = (Account) session.queryForObject("getAccountViaColumnName", new Integer(1));
session.close();
conn.close();
assertAccount1(account);
- ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().setDataSource(ds);
+ ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().getConfig().setDataSource(ds);
}
public void testSessionUserConnectionFailures() throws SQLException {
DataSource ds = sqlMap.getDataSource();
Connection conn = ds.getConnection();
- ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().setDataSource(null);
+ ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().getConfig().setDataSource(null);
SqlMapSession session = sqlMap.openSession(conn);
Exception expected = null;
@@ -95,7 +95,7 @@
session.close();
conn.close();
assertAccount1(account);
- ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().setDataSource(ds);
+ ((SqlMapClientImpl) sqlMap).getDelegate().getTxManager().getConfig().setDataSource(ds);
}
public void testExecuteQueryForObjectViaColumnIndex() throws SQLException {