Author: cbegin
Date: Fri Mar 2 13:50:49 2007
New Revision: 513972
URL: http://svn.apache.org/viewvc?view=rev&rev=513972
Log:
Reintroduced XmlParserState for XML specific builder state. This cleans up the
actual configuration class quite a bit.
Added:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XmlParserState.java
Modified:
ibatis/trunk/java/mapper/mapper2/build/version.properties
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/conifg/SqlMapConfiguration.java
Modified: ibatis/trunk/java/mapper/mapper2/build/version.properties
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/build/version.properties?view=diff&rev=513972&r1=513971&r2=513972
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/build/version.properties (original)
+++ ibatis/trunk/java/mapper/mapper2/build/version.properties Fri Mar 2
13:50:49 2007
@@ -1,5 +1,5 @@
#Build version info
-#Wed Feb 28 00:05:43 MST 2007
+#Fri Mar 02 14:49:45 MST 2007
version=2.3.1
-buildDate=2007/02/28 00\:05
-buildNum=685
+buildDate=2007/03/02 14\:49
+buildNum=686
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=513972&r1=513971&r2=513972
==============================================================================
---
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
Fri Mar 2 13:50:49 2007
@@ -6,7 +6,6 @@
import com.ibatis.common.xml.NodeletUtils;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapException;
-import com.ibatis.sqlmap.engine.conifg.SqlMapConfiguration;
import org.w3c.dom.Node;
import java.io.InputStream;
@@ -16,7 +15,7 @@
public class SqlMapConfigParser {
protected final NodeletParser parser = new NodeletParser();
- private SqlMapConfiguration config = new SqlMapConfiguration();
+ private XmlParserState state = new XmlParserState();
private boolean usingStreams = false;
@@ -36,7 +35,7 @@
}
public SqlMapClient parse(Reader reader, Properties props) {
- if (props != null) config.globalProps = props;
+ if (props != null) state.setGlobalProps(props);
return parse(reader);
}
@@ -45,14 +44,14 @@
usingStreams = false;
parser.parse(reader);
- return config.getClient();
+ return state.getConfig().getClient();
} catch (Exception e) {
throw new RuntimeException("Error occurred. Cause: " + e, e);
}
}
public SqlMapClient parse(InputStream inputStream, Properties props) {
- if (props != null) config.globalProps = props;
+ if (props != null) state.setGlobalProps(props);
return parse(inputStream);
}
@@ -61,7 +60,7 @@
usingStreams = true;
parser.parse(inputStream);
- return config.getClient();
+ return state.getConfig().getClient();
} catch (Exception e) {
throw new RuntimeException("Error occurred. Cause: " + e, e);
}
@@ -70,7 +69,7 @@
private void addSqlMapConfigNodelets() {
parser.addNodelet("/sqlMapConfig/end()", new Nodelet() {
public void process(Node node) throws Exception {
- config.wireupCacheModels();
+ state.getConfig().wireupCacheModels();
}
});
}
@@ -78,10 +77,10 @@
private void addGlobalPropNodelets() {
parser.addNodelet("/sqlMapConfig/properties", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String resource = attributes.getProperty("resource");
String url = attributes.getProperty("url");
- config.setGlobalProperties(resource, url);
+ state.setGlobalProperties(resource, url);
}
});
}
@@ -89,7 +88,7 @@
private void addSettingsNodelets() {
parser.addNodelet("/sqlMapConfig/settings", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String classInfoCacheEnabledAttr =
attributes.getProperty("classInfoCacheEnabled");
boolean classInfoCacheEnabled = (classInfoCacheEnabledAttr == null ||
"true".equals(classInfoCacheEnabledAttr));
@@ -123,7 +122,8 @@
String defaultTimeoutAttr =
attributes.getProperty("defaultStatementTimeout");
Integer defaultTimeout = defaultTimeoutAttr == null ? null :
Integer.valueOf(defaultTimeoutAttr);
- config.setSettings(classInfoCacheEnabled, lazyLoadingEnabled,
statementCachingEnabled, cacheModelsEnabled, enhancementEnabled,
useStatementNamespaces, maxTransactions, maxRequests, maxSessions,
defaultTimeout);
+ state.setUseStatementNamespaces(useStatementNamespaces);
+ state.getConfig().setSettings(classInfoCacheEnabled,
lazyLoadingEnabled, statementCachingEnabled, cacheModelsEnabled,
enhancementEnabled, maxTransactions, maxRequests, maxSessions, defaultTimeout);
}
});
}
@@ -131,10 +131,10 @@
private void addTypeAliasNodelets() {
parser.addNodelet("/sqlMapConfig/typeAlias", new Nodelet() {
public void process(Node node) throws Exception {
- Properties prop = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties prop = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String alias = prop.getProperty("alias");
String type = prop.getProperty("type");
- config.addTypeAlias(alias, type);
+ state.getConfig().addTypeAlias(alias, type);
}
});
}
@@ -142,11 +142,11 @@
private void addTypeHandlerNodelets() {
parser.addNodelet("/sqlMapConfig/typeHandler", new Nodelet() {
public void process(Node node) throws Exception {
- Properties prop = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties prop = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String jdbcType = prop.getProperty("jdbcType");
String javaType = prop.getProperty("javaType");
String callback = prop.getProperty("callback");
- config.addGlobalTypeHandler(javaType, jdbcType, callback);
+ state.getConfig().addGlobalTypeHandler(javaType, jdbcType, callback);
}
});
}
@@ -154,38 +154,38 @@
private void addTransactionManagerNodelets() {
parser.addNodelet("/sqlMapConfig/transactionManager/property", new
Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String name = attributes.getProperty("name");
- String value =
NodeletUtils.parsePropertyTokens(attributes.getProperty("value"),
config.globalProps);
- config.txProps.setProperty(name, value);
+ String value =
NodeletUtils.parsePropertyTokens(attributes.getProperty("value"),
state.getGlobalProps());
+ state.getTxProps().setProperty(name, value);
}
});
parser.addNodelet("/sqlMapConfig/transactionManager/end()", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String type = attributes.getProperty("type");
boolean commitRequired =
"true".equals(attributes.getProperty("commitRequired"));
- config.setTransactionManager(type, commitRequired, config.txProps);
+ state.getConfig().setTransactionManager(type, commitRequired,
state.getTxProps());
}
});
parser.addNodelet("/sqlMapConfig/transactionManager/dataSource/property",
new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String name = attributes.getProperty("name");
- String value =
NodeletUtils.parsePropertyTokens(attributes.getProperty("value"),
config.globalProps);
- config.dsProps.setProperty(name, value);
+ String value =
NodeletUtils.parsePropertyTokens(attributes.getProperty("value"),
state.getGlobalProps());
+ state.getDsProps().setProperty(name, value);
}
});
parser.addNodelet("/sqlMapConfig/transactionManager/dataSource/end()", new
Nodelet() {
public void process(Node node) throws Exception {
- config.getErrorContext().setActivity("configuring the data source");
+ state.getConfig().getErrorContext().setActivity("configuring the data
source");
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String type = attributes.getProperty("type");
- Properties props = config.dsProps;
+ Properties props = state.getDsProps();
- config.setDataSource(type, props);
+ state.getConfig().setDataSource(type, props);
}
});
}
@@ -194,9 +194,9 @@
protected void addSqlMapNodelets() {
parser.addNodelet("/sqlMapConfig/sqlMap", new Nodelet() {
public void process(Node node) throws Exception {
- config.getErrorContext().setActivity("loading the SQL Map resource");
+ state.getConfig().getErrorContext().setActivity("loading the SQL Map
resource");
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String resource = attributes.getProperty("resource");
String url = attributes.getProperty("url");
@@ -204,29 +204,29 @@
if (usingStreams) {
InputStream inputStream = null;
if (resource != null) {
- config.getErrorContext().setResource(resource);
+ state.getConfig().getErrorContext().setResource(resource);
inputStream = Resources.getResourceAsStream(resource);
} else if (url != null) {
- config.getErrorContext().setResource(url);
+ state.getConfig().getErrorContext().setResource(url);
inputStream = Resources.getUrlAsStream(url);
} else {
throw new SqlMapException("The <sqlMap> element requires either a
resource or a url attribute.");
}
- new SqlMapParser(config).parse(inputStream);
+ new SqlMapParser(state).parse(inputStream);
} else {
Reader reader = null;
if (resource != null) {
- config.getErrorContext().setResource(resource);
+ state.getConfig().getErrorContext().setResource(resource);
reader = Resources.getResourceAsReader(resource);
} else if (url != null) {
- config.getErrorContext().setResource(url);
+ state.getConfig().getErrorContext().setResource(url);
reader = Resources.getUrlAsReader(url);
} else {
throw new SqlMapException("The <sqlMap> element requires either a
resource or a url attribute.");
}
- new SqlMapParser(config).parse(reader);
+ new SqlMapParser(state).parse(reader);
}
}
});
@@ -235,18 +235,18 @@
private void addResultObjectFactoryNodelets() {
parser.addNodelet("/sqlMapConfig/resultObjectFactory", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String type = attributes.getProperty("type");
- config.setResultObjectFactory(type);
+ state.getConfig().setResultObjectFactory(type);
}
});
parser.addNodelet("/sqlMapConfig/resultObjectFactory/property", new
Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String name = attributes.getProperty("name");
- String value =
NodeletUtils.parsePropertyTokens(attributes.getProperty("value"),
config.globalProps);
- config.getDelegate().getResultObjectFactory().setProperty(name, value);
+ String value =
NodeletUtils.parsePropertyTokens(attributes.getProperty("value"),
state.getGlobalProps());
+
state.getConfig().getDelegate().getResultObjectFactory().setProperty(name,
value);
}
});
}
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=513972&r1=513971&r2=513972
==============================================================================
---
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
Fri Mar 2 13:50:49 2007
@@ -7,7 +7,6 @@
import com.ibatis.sqlmap.client.SqlMapException;
import com.ibatis.sqlmap.engine.cache.CacheModel;
import com.ibatis.sqlmap.engine.mapping.statement.*;
-import com.ibatis.sqlmap.engine.conifg.SqlMapConfiguration;
import org.w3c.dom.Node;
import java.io.InputStream;
@@ -17,10 +16,10 @@
public class SqlMapParser {
private final NodeletParser parser = new NodeletParser();
- private SqlMapConfiguration config;
+ private XmlParserState state = new XmlParserState();
- public SqlMapParser(SqlMapConfiguration config) {
- this.config = config;
+ public SqlMapParser(XmlParserState config) {
+ this.state = config;
parser.setValidation(true);
parser.setEntityResolver(new SqlMapClasspathEntityResolver());
@@ -45,13 +44,13 @@
private void addSqlMapNodelets() {
parser.addNodelet("/sqlMap", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
- config.namespace = attributes.getProperty("namespace");
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
+ state.setNamespace(attributes.getProperty("namespace"));
}
});
parser.addNodelet("/sqlMap/end()", new Nodelet() {
public void process(Node node) throws Exception {
- config.bindDelegateSubMaps();
+ state.getConfig().bindDelegateSubMaps();
}
});
}
@@ -60,15 +59,15 @@
private void addSqlNodelets() {
parser.addNodelet("/sqlMap/sql", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String id = attributes.getProperty("id");
- if (config.useStatementNamespaces) {
- id = config.applyNamespace(id);
+ if (state.isUseStatementNamespaces()) {
+ id = state.applyNamespace(id);
}
- if (config.sqlIncludes.containsKey(id)) {
+ if (state.getSqlIncludes().containsKey(id)) {
throw new SqlMapException("Duplicate <sql>-include '" + id + "'
found.");
} else {
- config.sqlIncludes.put(id, node);
+ state.getSqlIncludes().put(id, node);
}
}
});
@@ -77,10 +76,10 @@
private void addTypeAliasNodelets() {
parser.addNodelet("/sqlMap/typeAlias", new Nodelet() {
public void process(Node node) throws Exception {
- Properties prop = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties prop = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String alias = prop.getProperty("alias");
String type = prop.getProperty("type");
- config.addTypeAlias(alias, type);
+ state.getConfig().addTypeAlias(alias, type);
}
});
}
@@ -88,85 +87,84 @@
private void addCacheModelNodelets() {
parser.addNodelet("/sqlMap/cacheModel", new Nodelet() {
public void process(Node node) throws Exception {
- config.cacheModel = new CacheModel();
- config.cacheProps = new Properties();
+ state.getConfig().cacheModel = new CacheModel();
+ state.getConfig().cacheProps = new Properties();
}
});
parser.addNodelet("/sqlMap/cacheModel/end()", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
- String id = config.applyNamespace(attributes.getProperty("id"));
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
+ String id = state.applyNamespace(attributes.getProperty("id"));
String type = attributes.getProperty("type");
String readOnlyAttr = attributes.getProperty("readOnly");
Boolean readOnly = readOnlyAttr == null || readOnlyAttr.length() <= 0
? null : new Boolean("true".equals(readOnlyAttr));
String serializeAttr = attributes.getProperty("serialize");
Boolean serialize = serializeAttr == null || serializeAttr.length() <=
0 ? null : new Boolean("true".equals(serializeAttr));
- config.addCacheModel(id, type, readOnly, serialize, config.cacheProps);
+ state.getConfig().addCacheModel(id, type, readOnly, serialize,
state.getConfig().cacheProps);
}
});
parser.addNodelet("/sqlMap/cacheModel/property", new Nodelet() {
public void process(Node node) throws Exception {
- config.getErrorContext().setMoreInfo("Check the cache model
properties.");
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ state.getConfig().getErrorContext().setMoreInfo("Check the cache model
properties.");
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String name = attributes.getProperty("name");
- String value =
NodeletUtils.parsePropertyTokens(attributes.getProperty("value"),
config.globalProps);
- config.cacheProps.put(name, value);
+ String value =
NodeletUtils.parsePropertyTokens(attributes.getProperty("value"),
state.getGlobalProps());
+ state.getConfig().cacheProps.put(name, value);
}
});
parser.addNodelet("/sqlMap/cacheModel/flushOnExecute", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String statement = childAttributes.getProperty("statement");
- config.addFlushTriggerStatement(statement);
+ state.getConfig().addFlushTriggerStatement(statement);
}
});
parser.addNodelet("/sqlMap/cacheModel/flushInterval", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
try {
int milliseconds = childAttributes.getProperty("milliseconds") ==
null ? 0 : Integer.parseInt(childAttributes.getProperty("milliseconds"));
int seconds = childAttributes.getProperty("seconds") == null ? 0 :
Integer.parseInt(childAttributes.getProperty("seconds"));
int minutes = childAttributes.getProperty("minutes") == null ? 0 :
Integer.parseInt(childAttributes.getProperty("minutes"));
int hours = childAttributes.getProperty("hours") == null ? 0 :
Integer.parseInt(childAttributes.getProperty("hours"));
- config.setFlushInterval(hours, minutes, seconds, milliseconds);
+ state.getConfig().setFlushInterval(hours, minutes, seconds,
milliseconds);
} catch (NumberFormatException e) {
- throw new RuntimeException("Error building cache '" +
config.cacheModel.getId() + "' in '" + "resourceNAME" + "'. Flush interval
milliseconds must be a valid long integer value. Cause: " + e, e);
+ throw new RuntimeException("Error building cache '" +
state.getConfig().cacheModel.getId() + "' in '" + "resourceNAME" + "'. Flush
interval milliseconds must be a valid long integer value. Cause: " + e, e);
}
}
});
}
-
private void addParameterMapNodelets() {
parser.addNodelet("/sqlMap/parameterMap/end()", new Nodelet() {
public void process(Node node) throws Exception {
- config.finalizeParameterMap();
+ state.getConfig().finalizeParameterMap();
}
});
parser.addNodelet("/sqlMap/parameterMap", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
- String id = config.applyNamespace(attributes.getProperty("id"));
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
+ String id = state.applyNamespace(attributes.getProperty("id"));
String parameterClassName = attributes.getProperty("class");
- config.addParameterMap(id, parameterClassName);
+ state.getConfig().addParameterMap(id, parameterClassName);
}
});
parser.addNodelet("/sqlMap/parameterMap/parameter", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String propertyName = childAttributes.getProperty("property");
String jdbcType = childAttributes.getProperty("jdbcType");
String type = childAttributes.getProperty("typeName");
String javaType = childAttributes.getProperty("javaType");
- String resultMap = childAttributes.getProperty("resultMap");
+ String resultMap =
state.applyNamespace(childAttributes.getProperty("resultMap"));
String nullValue = childAttributes.getProperty("nullValue");
String mode = childAttributes.getProperty("mode");
String callback = childAttributes.getProperty("typeHandler");
String numericScale = childAttributes.getProperty("numericScale");
- config.addParameterMapping(callback, javaType, resultMap,
propertyName, jdbcType, type, nullValue, mode, numericScale);
+ state.getConfig().addParameterMapping(callback, javaType, resultMap,
propertyName, jdbcType, type, nullValue, mode, numericScale);
}
});
@@ -176,23 +174,23 @@
private void addResultMapNodelets() {
parser.addNodelet("/sqlMap/resultMap/end()", new Nodelet() {
public void process(Node node) throws Exception {
- config.finalizeResultMap();
+ state.getConfig().finalizeResultMap();
}
});
parser.addNodelet("/sqlMap/resultMap", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
- String id = config.applyNamespace(attributes.getProperty("id"));
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
+ String id = state.applyNamespace(attributes.getProperty("id"));
String resultClassName = attributes.getProperty("class");
- String extended =
config.applyNamespace(attributes.getProperty("extends"));
+ String extended =
state.applyNamespace(attributes.getProperty("extends"));
String xmlName = attributes.getProperty("xmlName");
String groupBy = attributes.getProperty("groupBy");
- config.addResultMap(id, resultClassName, xmlName, groupBy, extended);
+ state.getConfig().addResultMap(id, resultClassName, xmlName, groupBy,
extended);
}
});
parser.addNodelet("/sqlMap/resultMap/result", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String propertyName = childAttributes.getProperty("property");
String nullValue = childAttributes.getProperty("nullValue");
String jdbcType = childAttributes.getProperty("jdbcType");
@@ -203,22 +201,23 @@
String resultMapName = childAttributes.getProperty("resultMap");
String callback = childAttributes.getProperty("typeHandler");
- config.addResultMapping(callback, javaType, propertyName, jdbcType,
columnName, nullValue, statementName, resultMapName, columnIndex);
+ state.getConfig().addResultMapping(callback, javaType, propertyName,
jdbcType, columnName, nullValue, statementName, resultMapName, columnIndex);
}
});
parser.addNodelet("/sqlMap/resultMap/discriminator/subMap", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String value = childAttributes.getProperty("value");
String resultMap = childAttributes.getProperty("resultMap");
- config.addSubMap(value, resultMap);
+ resultMap = state.applyNamespace(resultMap);
+ state.getConfig().addSubMap(value, resultMap);
}
});
parser.addNodelet("/sqlMap/resultMap/discriminator", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String nullValue = childAttributes.getProperty("nullValue");
String jdbcType = childAttributes.getProperty("jdbcType");
String javaType = childAttributes.getProperty("javaType");
@@ -226,7 +225,7 @@
String columnIndex = childAttributes.getProperty("columnIndex");
String callback = childAttributes.getProperty("typeHandler");
- config.addDiscriminator(callback, javaType, jdbcType, columnName,
nullValue, columnIndex);
+ state.getConfig().addDiscriminator(callback, javaType, jdbcType,
columnName, nullValue, columnIndex);
}
});
}
@@ -234,38 +233,38 @@
protected void addStatementNodelets() {
parser.addNodelet("/sqlMap/statement", new Nodelet() {
public void process(Node node) throws Exception {
- config.currentStatement = new
SqlStatementParser(config).parseGeneralStatement(node, new GeneralStatement());
- config.getDelegate().addMappedStatement(config.currentStatement);
+ MappedStatement statement = new
SqlStatementParser(state).parseGeneralStatement(node, new GeneralStatement());
+ state.getConfig().getDelegate().addMappedStatement(statement);
}
});
parser.addNodelet("/sqlMap/insert", new Nodelet() {
public void process(Node node) throws Exception {
- config.currentStatement = new
SqlStatementParser(config).parseGeneralStatement(node, new InsertStatement());
- config.getDelegate().addMappedStatement(config.currentStatement);
+ MappedStatement statement = new
SqlStatementParser(state).parseGeneralStatement(node, new InsertStatement());
+ state.getConfig().getDelegate().addMappedStatement(statement);
}
});
parser.addNodelet("/sqlMap/update", new Nodelet() {
public void process(Node node) throws Exception {
- config.currentStatement = new
SqlStatementParser(config).parseGeneralStatement(node, new UpdateStatement());
- config.getDelegate().addMappedStatement(config.currentStatement);
+ MappedStatement statement = new
SqlStatementParser(state).parseGeneralStatement(node, new UpdateStatement());
+ state.getConfig().getDelegate().addMappedStatement(statement);
}
});
parser.addNodelet("/sqlMap/delete", new Nodelet() {
public void process(Node node) throws Exception {
- config.currentStatement = new
SqlStatementParser(config).parseGeneralStatement(node, new DeleteStatement());
- config.getDelegate().addMappedStatement(config.currentStatement);
+ MappedStatement statement = new
SqlStatementParser(state).parseGeneralStatement(node, new DeleteStatement());
+ state.getConfig().getDelegate().addMappedStatement(statement);
}
});
parser.addNodelet("/sqlMap/select", new Nodelet() {
public void process(Node node) throws Exception {
- config.currentStatement = new
SqlStatementParser(config).parseGeneralStatement(node, new SelectStatement());
- config.getDelegate().addMappedStatement(config.currentStatement);
+ MappedStatement statement = new
SqlStatementParser(state).parseGeneralStatement(node, new SelectStatement());
+ state.getConfig().getDelegate().addMappedStatement(statement);
}
});
parser.addNodelet("/sqlMap/procedure", new Nodelet() {
public void process(Node node) throws Exception {
- config.currentStatement = new
SqlStatementParser(config).parseGeneralStatement(node, new
ProcedureStatement());
- config.getDelegate().addMappedStatement(config.currentStatement);
+ MappedStatement statement = new
SqlStatementParser(state).parseGeneralStatement(node, new ProcedureStatement());
+ state.getConfig().getDelegate().addMappedStatement(statement);
}
});
}
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=513972&r1=513971&r2=513972
==============================================================================
---
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
Fri Mar 2 13:50:49 2007
@@ -2,36 +2,54 @@
import com.ibatis.common.xml.NodeletUtils;
import com.ibatis.sqlmap.engine.mapping.statement.*;
-import com.ibatis.sqlmap.engine.conifg.SqlMapConfiguration;
import org.w3c.dom.*;
import java.util.Properties;
public class SqlStatementParser {
- private SqlMapConfiguration config;
+ private XmlParserState state;
- public SqlStatementParser(SqlMapConfiguration config) {
- this.config = config;
+ public SqlStatementParser(XmlParserState config) {
+ this.state = config;
}
public MappedStatement parseGeneralStatement(Node node, GeneralStatement
statement) {
// get attributes
- Properties attributes = NodeletUtils.parseAttributes(node,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node,
state.getGlobalProps());
String id = attributes.getProperty("id");
- String parameterMapName =
config.applyNamespace(attributes.getProperty("parameterMap"));
+ String parameterMapName =
state.applyNamespace(attributes.getProperty("parameterMap"));
String parameterClassName = attributes.getProperty("parameterClass");
String resultMapName = attributes.getProperty("resultMap");
String resultClassName = attributes.getProperty("resultClass");
- String cacheModelName =
config.applyNamespace(attributes.getProperty("cacheModel"));
+ String cacheModelName =
state.applyNamespace(attributes.getProperty("cacheModel"));
String xmlResultName = attributes.getProperty("xmlResultName");
String resultSetType = attributes.getProperty("resultSetType");
String fetchSize = attributes.getProperty("fetchSize");
String allowRemapping = attributes.getProperty("remapResults");
String timeout = attributes.getProperty("timeout");
- MappedStatement mappedStatement = config.prepareGeneralStatement(new
XMLSqlSource(config, node), statement, id, resultMapName, parameterMapName,
resultSetType, fetchSize, parameterClassName, resultClassName, allowRemapping,
xmlResultName, timeout, cacheModelName);
+ if (state.isUseStatementNamespaces()) {
+ id = state.applyNamespace(id);
+ }
+ String[] additionalResultMapNames = null;
+ if (resultMapName != null) {
+ additionalResultMapNames = state.getAllButFirstToken(resultMapName);
+ resultMapName = state.getFirstToken(resultMapName);
+ resultMapName = state.applyNamespace(resultMapName);
+ for (int i = 0; i < additionalResultMapNames.length; i++) {
+ additionalResultMapNames[i] =
state.applyNamespace(additionalResultMapNames[i]);
+ }
+ }
+
+ String[] additionalResultClasses = null;
+ if (resultClassName != null) {
+ additionalResultClasses = state.getAllButFirstToken(resultClassName);
+ resultClassName = state.getFirstToken(resultClassName);
+ }
+ MappedStatement mappedStatement =
state.getConfig().prepareGeneralStatement(new XMLSqlSource(state, node),
statement, id, resultMapName, additionalResultMapNames, parameterMapName,
resultSetType, fetchSize, parameterClassName, resultClassName,
additionalResultClasses, allowRemapping, xmlResultName, timeout,
cacheModelName);
+
findAndParseSelectKey(node, statement);
return mappedStatement;
@@ -39,7 +57,7 @@
private void findAndParseSelectKey(Node node, GeneralStatement statement) {
if (statement instanceof InsertStatement) {
- config.getErrorContext().setActivity("parsing select key tags");
+ state.getConfig().getErrorContext().setActivity("parsing select key
tags");
InsertStatement insertStatement = ((InsertStatement) statement);
@@ -58,15 +76,15 @@
}
} else if (child.getNodeType() == Node.ELEMENT_NODE
&& "selectKey".equals(child.getNodeName())) {
- Properties attributes = NodeletUtils.parseAttributes(child,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(child,
state.getGlobalProps());
String keyPropName = attributes.getProperty("keyProperty");
String resultClassName = attributes.getProperty("resultClass");
String type = attributes.getProperty("type");
- selectKeyStatement = config.prepareSelectKeyStatement(new
XMLSqlSource(config, child), resultClassName, statement.getId(), keyPropName,
foundSQLFirst, type, statement.getParameterClass());
+ selectKeyStatement = state.getConfig().prepareSelectKeyStatement(new
XMLSqlSource(state, child), resultClassName, statement.getId(), keyPropName,
foundSQLFirst, type, statement.getParameterClass());
break;
}
}
- config.getErrorContext().setMoreInfo(null);
+ state.getConfig().getErrorContext().setMoreInfo(null);
insertStatement.setSelectKeyStatement(selectKeyStatement);
}
}
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=513972&r1=513971&r2=513972
==============================================================================
---
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
Fri Mar 2 13:50:49 2007
@@ -16,20 +16,20 @@
private static final InlineParameterMapParser PARAM_PARSER = new
InlineParameterMapParser();
- private SqlMapConfiguration config;
+ private XmlParserState state;
private Node parentNode;
- public XMLSqlSource(SqlMapConfiguration config, Node parentNode) {
- this.config = config;
+ public XMLSqlSource(XmlParserState config, Node parentNode) {
+ this.state = config;
this.parentNode = parentNode;
}
public Sql getSql() {
- config.getErrorContext().setActivity("processing an SQL statement");
+ state.getConfig().getErrorContext().setActivity("processing an SQL
statement");
boolean isDynamic = false;
StringBuffer sqlBuffer = new StringBuffer();
- DynamicSql dynamic = new DynamicSql(config.getClient().getDelegate());
+ DynamicSql dynamic = new
DynamicSql(state.getConfig().getClient().getDelegate());
isDynamic = parseDynamicTags(parentNode, dynamic, sqlBuffer, isDynamic,
false);
String sqlStatement = sqlBuffer.toString();
if (isDynamic) {
@@ -40,7 +40,7 @@
}
private boolean parseDynamicTags(Node node, DynamicParent dynamic,
StringBuffer sqlBuffer, boolean isDynamic, boolean postParseRequired) {
- config.getErrorContext().setActivity("parsing dynamic SQL tags");
+ state.getConfig().getErrorContext().setActivity("parsing dynamic SQL
tags");
NodeList children = node.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
@@ -50,7 +50,7 @@
|| child.getNodeType() == Node.TEXT_NODE) {
String data = ((CharacterData) child).getData();
- data = NodeletUtils.parsePropertyTokens(data, config.globalProps);
+ data = NodeletUtils.parsePropertyTokens(data, state.getGlobalProps());
SqlText sqlText;
@@ -59,7 +59,7 @@
sqlText.setPostParseRequired(postParseRequired);
sqlText.setText(data);
} else {
- sqlText =
PARAM_PARSER.parseInlineParameterMap(config.getClient().getDelegate().getTypeHandlerFactory(),
data, null);
+ sqlText =
PARAM_PARSER.parseInlineParameterMap(state.getConfig().getClient().getDelegate().getTypeHandlerFactory(),
data, null);
sqlText.setPostParseRequired(postParseRequired);
}
@@ -67,19 +67,19 @@
sqlBuffer.append(data);
} else if ("include".equals(nodeName)) {
- Properties attributes = NodeletUtils.parseAttributes(child,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(child,
state.getGlobalProps());
String refid = (String) attributes.get("refid");
- Node includeNode = (Node) config.sqlIncludes.get(refid);
+ Node includeNode = (Node) state.getSqlIncludes().get(refid);
if (includeNode == null) {
- String nsrefid = config.applyNamespace(refid);
- includeNode = (Node) config.sqlIncludes.get(nsrefid);
+ String nsrefid = state.applyNamespace(refid);
+ includeNode = (Node) state.getSqlIncludes().get(nsrefid);
if (includeNode == null) {
throw new RuntimeException("Could not find SQL statement to
include with refid '" + refid + "'");
}
}
isDynamic = parseDynamicTags(includeNode, dynamic, sqlBuffer,
isDynamic, false);
} else {
- config.getErrorContext().setMoreInfo("Check the dynamic tags.");
+ state.getConfig().getErrorContext().setMoreInfo("Check the dynamic
tags.");
SqlTagHandler handler =
SqlTagHandlerFactory.getSqlTagHandler(nodeName);
if (handler != null) {
@@ -89,7 +89,7 @@
tag.setName(nodeName);
tag.setHandler(handler);
- Properties attributes = NodeletUtils.parseAttributes(child,
config.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(child,
state.getGlobalProps());
tag.setPrependAttr(attributes.getProperty("prepend"));
tag.setPropertyAttr(attributes.getProperty("property"));
@@ -124,7 +124,7 @@
}
}
}
- config.getErrorContext().setMoreInfo(null);
+ state.getConfig().getErrorContext().setMoreInfo(null);
return isDynamic;
}
Added:
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=auto&rev=513972
==============================================================================
---
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XmlParserState.java
(added)
+++
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XmlParserState.java
Fri Mar 2 13:50:49 2007
@@ -0,0 +1,102 @@
+package com.ibatis.sqlmap.engine.builder.xml;
+
+import com.ibatis.common.resources.Resources;
+import com.ibatis.sqlmap.engine.conifg.SqlMapConfiguration;
+
+import java.util.*;
+
+public class XmlParserState {
+
+ private SqlMapConfiguration config = new SqlMapConfiguration();
+
+ private Properties globalProps = new Properties();
+ private Properties txProps = new Properties();
+ private Properties dsProps = new Properties();
+ private boolean useStatementNamespaces = false;
+ private Map sqlIncludes = new HashMap();
+
+ private String namespace;
+
+ public SqlMapConfiguration getConfig() {
+ return config;
+ }
+
+ public void setGlobalProps(Properties props) {
+ globalProps = props;
+ }
+
+ public Properties getGlobalProps() {
+ return globalProps;
+ }
+
+ public Properties getTxProps() {
+ return txProps;
+ }
+
+ public Properties getDsProps() {
+ return dsProps;
+ }
+
+ public void setUseStatementNamespaces(boolean useStatementNamespaces) {
+ this.useStatementNamespaces = useStatementNamespaces;
+ }
+
+ public boolean isUseStatementNamespaces() {
+ return useStatementNamespaces;
+ }
+
+ public Map getSqlIncludes() {
+ return sqlIncludes;
+ }
+
+ public void setNamespace(String namespace) {
+ this.namespace = namespace;
+ }
+
+ public String applyNamespace(String id) {
+ String newId = id;
+ if (namespace != null && namespace.length() > 0 && id != null &&
id.indexOf('.') < 0) {
+ newId = namespace + "." + id;
+ }
+ return newId;
+ }
+
+ public String getFirstToken(String s) {
+ return new StringTokenizer(s, ", ", false).nextToken();
+ }
+
+ public String[] getAllButFirstToken(String s) {
+ List strings = new ArrayList();
+ StringTokenizer parser = new StringTokenizer(s, ", ", false);
+ parser.nextToken();
+ while (parser.hasMoreTokens()) {
+ strings.add(parser.nextToken());
+ }
+ return (String[]) strings.toArray(new String[strings.size()]);
+ }
+
+ public void setGlobalProperties(String resource, String url) {
+ config.getErrorContext().setActivity("loading global properties");
+ try {
+ Properties props;
+ if (resource != null) {
+ config.getErrorContext().setResource(resource);
+ props = Resources.getResourceAsProperties(resource);
+ } else if (url != null) {
+ config.getErrorContext().setResource(url);
+ props = Resources.getUrlAsProperties(url);
+ } else {
+ throw new RuntimeException("The " + "properties" + " element requires
either a resource or a url attribute.");
+ }
+
+ // Merge properties with those passed in programmatically
+ if (props != null) {
+ props.putAll(globalProps);
+ globalProps = props;
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("Error loading properties. Cause: " + e, e);
+ }
+ }
+
+}
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=513972&r1=513971&r2=513972
==============================================================================
---
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
Fri Mar 2 13:50:49 2007
@@ -42,8 +42,7 @@
private static final InlineParameterMapParser PARAM_PARSER = new
InlineParameterMapParser();
private ErrorContext errorContext = new ErrorContext();
- private String resource = "SQL Map Config XML File";
-
+
private ExtendedSqlMapClient client;
private SqlMapExecutorDelegate delegate;
private TypeHandlerFactory typeHandlerFactory;
@@ -51,33 +50,24 @@
private Integer defaultStatementTimeout;
private DataSource dataSource;
+ // TODO: Move to ResultMapConfig
private BasicResultMap resultMap;
private List resultMappingList;
private int resultMappingIndex;
private Discriminator discriminator;
+ // TODO: Move to ParameterMapConfig
private BasicParameterMap parameterMap;
private List parameterMappingList;
- public Properties globalProps = new Properties();
- public Properties txProps = new Properties();
- public Properties dsProps = new Properties();
-
- public boolean useStatementNamespaces;
-
- public String namespace;
-
+ // TODO: Move to CacheModelConfig
public CacheModel cacheModel;
public Properties cacheProps;
- public Map sqlIncludes = new HashMap();
- public MappedStatement currentStatement;
-
public SqlMapConfiguration() {
delegate = new SqlMapExecutorDelegate();
typeHandlerFactory = delegate.getTypeHandlerFactory();
client = new SqlMapClientImpl(delegate);
- useStatementNamespaces = false;
registerDefaultTypeAliases();
}
@@ -93,6 +83,7 @@
return delegate;
}
+
//
// Utility Methods
//
@@ -146,13 +137,6 @@
return handler;
}
- public String applyNamespace(String id) {
- String newId = id;
- if (namespace != null && namespace.length() > 0 && id != null &&
id.indexOf('.') < 0) {
- newId = namespace + "." + id;
- }
- return newId;
- }
private void registerDefaultTypeAliases() {
// TRANSACTION ALIASES
@@ -183,32 +167,9 @@
// SQL Map Config methods
//
- public void setGlobalProperties(String resource, String url) {
- errorContext.setActivity("loading global properties");
- try {
- Properties props;
- if (resource != null) {
- errorContext.setResource(resource);
- props = Resources.getResourceAsProperties(resource);
- } else if (url != null) {
- errorContext.setResource(url);
- props = Resources.getUrlAsProperties(url);
- } else {
- throw new RuntimeException("The " + "properties" + " element requires
either a resource or a url attribute.");
- }
-
- // Merge properties with those passed in programmatically
- if (props != null) {
- props.putAll(globalProps);
- globalProps = props;
- }
- } catch (Exception e) {
- throw new RuntimeException("Error loading properties. Cause: " + e, e);
- }
- }
// TODO: Split into separate methods
- public void setSettings(boolean classInfoCacheEnabled, boolean
lazyLoadingEnabled, boolean statementCachingEnabled, boolean
cacheModelsEnabled, boolean enhancementEnabled, boolean useStatementNamespaces,
Integer maxTransactions, Integer maxRequests, Integer maxSessions, Integer
defaultTimeout) {
+ 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");
ClassInfo.setCacheEnabled(classInfoCacheEnabled);
client.getDelegate().setLazyLoadingEnabled(lazyLoadingEnabled);
@@ -220,7 +181,6 @@
enhancementEnabled = false;
}
client.getDelegate().setEnhancementEnabled(enhancementEnabled);
- this.useStatementNamespaces = useStatementNamespaces;
if (maxTransactions != null && maxTransactions.intValue() > 0) {
client.getDelegate().setMaxTransactions(maxTransactions.intValue());
@@ -446,7 +406,6 @@
public void addParameterMapping(String callback, String javaType, String
resultMap, String propertyName, String jdbcType, String type, String nullValue,
String mode, String numericScale) {
callback = typeHandlerFactory.resolveAlias(callback);
javaType = typeHandlerFactory.resolveAlias(javaType);
- resultMap = applyNamespace(resultMap);
errorContext.setObjectId(propertyName + " mapping of the " +
parameterMap.getId() + " parameter map");
@@ -581,7 +540,7 @@
if (discriminator == null) {
throw new RuntimeException("The discriminator is null, but somehow a
subMap was reached. This is a bug.");
}
- discriminator.addSubMap(value, applyNamespace(resultMap));
+ discriminator.addSubMap(value, resultMap);
}
// TODO: pass into addResultMap
@@ -728,33 +687,17 @@
// SQL Statement methods
//
- public MappedStatement prepareGeneralStatement(final String sql,
GeneralStatement statement, String id, String resultMapName, String
parameterMapName, String resultSetType, String fetchSize, String
parameterClassName, String resultClassName, String allowRemapping, String
xmlResultName, String timeout, String cacheModelName) {
- return prepareGeneralStatement(new SqlSource() {
- public Sql getSql() {
- return new RawSql(sql);
- }
- }, statement, id, resultMapName, parameterMapName,
resultSetType,fetchSize, parameterClassName, resultClassName, allowRemapping,
xmlResultName, timeout, cacheModelName);
- }
-
// TODO: Clean up method signature
- public MappedStatement prepareGeneralStatement(SqlSource processor,
GeneralStatement statement, String id, String resultMapName, String
parameterMapName, String resultSetType, String fetchSize, String
parameterClassName, String resultClassName, String allowRemapping, String
xmlResultName, String timeout, String cacheModelName) {
+ public MappedStatement prepareGeneralStatement(SqlSource processor,
GeneralStatement statement, String id, String resultMapName, String[]
additionalResultMapNames, String parameterMapName, String resultSetType, String
fetchSize, String parameterClassName, String resultClassName, String[]
additionalResultClasses, String allowRemapping, String xmlResultName, String
timeout, String cacheModelName) {
errorContext.setActivity("parsing a mapped statement");
- if (useStatementNamespaces) {
- id = applyNamespace(id);
- }
-
- String[] additionalResultMapNames;
-
errorContext.setObjectId(id + " statement");
-
errorContext.setMoreInfo("Check the result map name.");
- //BasicResultMap resultMap = null;
if (resultMapName != null) {
- additionalResultMapNames = getAllButFirstToken(resultMapName);
- resultMapName = getFirstToken(resultMapName);
- statement.setResultMap((BasicResultMap)
client.getDelegate().getResultMap(applyNamespace(resultMapName)));
- for (int i = 0; i < additionalResultMapNames.length; i++) {
- statement.addResultMap((BasicResultMap)
client.getDelegate().getResultMap(applyNamespace(additionalResultMapNames[i])));
+ statement.setResultMap((BasicResultMap)
client.getDelegate().getResultMap(resultMapName));
+ if (additionalResultMapNames != null) {
+ for (int i = 0; i < additionalResultMapNames.length; i++) {
+ statement.addResultMap((BasicResultMap)
client.getDelegate().getResultMap(additionalResultMapNames[i]));
+ }
}
}
@@ -808,12 +751,12 @@
if (resultMap == null && resultClassName == null) {
statement.setResultMap(null);
} else if (resultMap == null) {
- String firstResultClass = getFirstToken(resultClassName);
- resultMap = buildAutoResultMap(allowRemapping, statement,
firstResultClass, xmlResultName);
+ resultMap = buildAutoResultMap(allowRemapping, statement,
resultClassName, xmlResultName);
statement.setResultMap(resultMap);
- String[] additionalResultClasses = getAllButFirstToken(resultClassName);
- for (int i = 0; i < additionalResultClasses.length; i++) {
- statement.addResultMap(buildAutoResultMap(allowRemapping, statement,
additionalResultClasses[i], xmlResultName));
+ if (additionalResultClasses != null) {
+ for (int i = 0; i < additionalResultClasses.length; i++) {
+ statement.addResultMap(buildAutoResultMap(allowRemapping, statement,
additionalResultClasses[i], xmlResultName));
+ }
}
}
@@ -962,18 +905,5 @@
}
}
- private String getFirstToken(String s) {
- return new StringTokenizer(s, ", ", false).nextToken();
- }
-
- private String[] getAllButFirstToken(String s) {
- List strings = new ArrayList();
- StringTokenizer parser = new StringTokenizer(s, ", ", false);
- parser.nextToken();
- while (parser.hasMoreTokens()) {
- strings.add(parser.nextToken());
- }
- return (String[]) strings.toArray(new String[strings.size()]);
- }
}