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/02/28 08:11:32 UTC
svn commit: r512636 [1/2] - in /ibatis/trunk/java/mapper/mapper2: build/
src/com/ibatis/sqlmap/engine/builder/xml/
src/com/ibatis/sqlmap/engine/conifg/
src/com/ibatis/sqlmap/engine/mapping/sql/raw/
Author: cbegin
Date: Tue Feb 27 23:11:31 2007
New Revision: 512636
URL: http://svn.apache.org/viewvc?view=rev&rev=512636
Log:
1) Moved ParserState to new config package and renamed it to SqlMapConfiguration.
2) Refactored StatementProcessor into SqlSource for cleaner separation of concerns.
Still a work in progress.
Added:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java
- copied, changed from r512614, ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLStatementProcessor.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlMapConfiguration.java
- copied, changed from r512614, ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/ParserState.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/conifg/SqlSource.java
- copied, changed from r512614, ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/StatementProcessor.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/sql/raw/
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/sql/raw/RawSql.java
Removed:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/ParserState.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/StatementProcessor.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLStatementProcessor.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
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=512636&r1=512635&r2=512636
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/build/version.properties (original)
+++ ibatis/trunk/java/mapper/mapper2/build/version.properties Tue Feb 27 23:11:31 2007
@@ -1,5 +1,5 @@
#Build version info
-#Sat Feb 10 21:56:50 MST 2007
+#Wed Feb 28 00:05:43 MST 2007
version=2.3.1
-buildDate=2007/02/10 21\:56
-buildNum=683
+buildDate=2007/02/28 00\:05
+buildNum=685
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=512636&r1=512635&r2=512636
==============================================================================
--- 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 Tue Feb 27 23:11:31 2007
@@ -6,6 +6,7 @@
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;
@@ -15,7 +16,7 @@
public class SqlMapConfigParser {
protected final NodeletParser parser = new NodeletParser();
- private ParserState state = new ParserState();
+ private SqlMapConfiguration config = new SqlMapConfiguration();
private boolean usingStreams = false;
@@ -35,7 +36,7 @@
}
public SqlMapClient parse(Reader reader, Properties props) {
- if (props != null) state.globalProps = props;
+ if (props != null) config.globalProps = props;
return parse(reader);
}
@@ -44,14 +45,14 @@
usingStreams = false;
parser.parse(reader);
- return state.client;
+ return config.getClient();
} catch (Exception e) {
throw new RuntimeException("Error occurred. Cause: " + e, e);
}
}
public SqlMapClient parse(InputStream inputStream, Properties props) {
- if (props != null) state.globalProps = props;
+ if (props != null) config.globalProps = props;
return parse(inputStream);
}
@@ -60,7 +61,7 @@
usingStreams = true;
parser.parse(inputStream);
- return state.client;
+ return config.getClient();
} catch (Exception e) {
throw new RuntimeException("Error occurred. Cause: " + e, e);
}
@@ -69,7 +70,7 @@
private void addSqlMapConfigNodelets() {
parser.addNodelet("/sqlMapConfig/end()", new Nodelet() {
public void process(Node node) throws Exception {
- state.wireupCacheModels();
+ config.wireupCacheModels();
}
});
}
@@ -77,10 +78,10 @@
private void addGlobalPropNodelets() {
parser.addNodelet("/sqlMapConfig/properties", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String resource = attributes.getProperty("resource");
String url = attributes.getProperty("url");
- state.setGlobalProperties(resource, url);
+ config.setGlobalProperties(resource, url);
}
});
}
@@ -88,7 +89,7 @@
private void addSettingsNodelets() {
parser.addNodelet("/sqlMapConfig/settings", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String classInfoCacheEnabledAttr = attributes.getProperty("classInfoCacheEnabled");
boolean classInfoCacheEnabled = (classInfoCacheEnabledAttr == null || "true".equals(classInfoCacheEnabledAttr));
@@ -122,7 +123,7 @@
String defaultTimeoutAttr = attributes.getProperty("defaultStatementTimeout");
Integer defaultTimeout = defaultTimeoutAttr == null ? null : Integer.valueOf(defaultTimeoutAttr);
- state.setSettings(classInfoCacheEnabled, lazyLoadingEnabled, statementCachingEnabled, cacheModelsEnabled, enhancementEnabled, useStatementNamespaces, maxTransactions, maxRequests, maxSessions, defaultTimeout);
+ config.setSettings(classInfoCacheEnabled, lazyLoadingEnabled, statementCachingEnabled, cacheModelsEnabled, enhancementEnabled, useStatementNamespaces, maxTransactions, maxRequests, maxSessions, defaultTimeout);
}
});
}
@@ -130,10 +131,10 @@
private void addTypeAliasNodelets() {
parser.addNodelet("/sqlMapConfig/typeAlias", new Nodelet() {
public void process(Node node) throws Exception {
- Properties prop = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties prop = NodeletUtils.parseAttributes(node, config.globalProps);
String alias = prop.getProperty("alias");
String type = prop.getProperty("type");
- state.addTypeAlias(alias, type);
+ config.addTypeAlias(alias, type);
}
});
}
@@ -141,11 +142,11 @@
private void addTypeHandlerNodelets() {
parser.addNodelet("/sqlMapConfig/typeHandler", new Nodelet() {
public void process(Node node) throws Exception {
- Properties prop = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties prop = NodeletUtils.parseAttributes(node, config.globalProps);
String jdbcType = prop.getProperty("jdbcType");
String javaType = prop.getProperty("javaType");
String callback = prop.getProperty("callback");
- state.addGlobalTypeHandler(javaType, jdbcType, callback);
+ config.addGlobalTypeHandler(javaType, jdbcType, callback);
}
});
}
@@ -153,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, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String name = attributes.getProperty("name");
- String value = NodeletUtils.parsePropertyTokens(attributes.getProperty("value"), state.globalProps);
- state.txProps.setProperty(name, value);
+ String value = NodeletUtils.parsePropertyTokens(attributes.getProperty("value"), config.globalProps);
+ config.txProps.setProperty(name, value);
}
});
parser.addNodelet("/sqlMapConfig/transactionManager/end()", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String type = attributes.getProperty("type");
boolean commitRequired = "true".equals(attributes.getProperty("commitRequired"));
- state.setTransactionManager(type, commitRequired, state.txProps);
+ config.setTransactionManager(type, commitRequired, config.txProps);
}
});
parser.addNodelet("/sqlMapConfig/transactionManager/dataSource/property", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String name = attributes.getProperty("name");
- String value = NodeletUtils.parsePropertyTokens(attributes.getProperty("value"), state.globalProps);
- state.dsProps.setProperty(name, value);
+ String value = NodeletUtils.parsePropertyTokens(attributes.getProperty("value"), config.globalProps);
+ config.dsProps.setProperty(name, value);
}
});
parser.addNodelet("/sqlMapConfig/transactionManager/dataSource/end()", new Nodelet() {
public void process(Node node) throws Exception {
- state.errorContext.setActivity("configuring the data source");
+ config.getErrorContext().setActivity("configuring the data source");
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String type = attributes.getProperty("type");
- Properties props = state.dsProps;
+ Properties props = config.dsProps;
- state.setDataSource(type, props);
+ config.setDataSource(type, props);
}
});
}
@@ -193,9 +194,9 @@
protected void addSqlMapNodelets() {
parser.addNodelet("/sqlMapConfig/sqlMap", new Nodelet() {
public void process(Node node) throws Exception {
- state.errorContext.setActivity("loading the SQL Map resource");
+ config.getErrorContext().setActivity("loading the SQL Map resource");
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String resource = attributes.getProperty("resource");
String url = attributes.getProperty("url");
@@ -203,29 +204,29 @@
if (usingStreams) {
InputStream inputStream = null;
if (resource != null) {
- state.errorContext.setResource(resource);
+ config.getErrorContext().setResource(resource);
inputStream = Resources.getResourceAsStream(resource);
} else if (url != null) {
- state.errorContext.setResource(url);
+ config.getErrorContext().setResource(url);
inputStream = Resources.getUrlAsStream(url);
} else {
throw new SqlMapException("The <sqlMap> element requires either a resource or a url attribute.");
}
- new SqlMapParser(state).parse(inputStream);
+ new SqlMapParser(config).parse(inputStream);
} else {
Reader reader = null;
if (resource != null) {
- state.errorContext.setResource(resource);
+ config.getErrorContext().setResource(resource);
reader = Resources.getResourceAsReader(resource);
} else if (url != null) {
- state.errorContext.setResource(url);
+ config.getErrorContext().setResource(url);
reader = Resources.getUrlAsReader(url);
} else {
throw new SqlMapException("The <sqlMap> element requires either a resource or a url attribute.");
}
- new SqlMapParser(state).parse(reader);
+ new SqlMapParser(config).parse(reader);
}
}
});
@@ -234,18 +235,18 @@
private void addResultObjectFactoryNodelets() {
parser.addNodelet("/sqlMapConfig/resultObjectFactory", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String type = attributes.getProperty("type");
- state.setResultObjectFactory(type);
+ config.setResultObjectFactory(type);
}
});
parser.addNodelet("/sqlMapConfig/resultObjectFactory/property", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String name = attributes.getProperty("name");
- String value = NodeletUtils.parsePropertyTokens(attributes.getProperty("value"), state.globalProps);
- state.delegate.getResultObjectFactory().setProperty(name, value);
+ String value = NodeletUtils.parsePropertyTokens(attributes.getProperty("value"), config.globalProps);
+ config.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=512636&r1=512635&r2=512636
==============================================================================
--- 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 Tue Feb 27 23:11:31 2007
@@ -7,6 +7,7 @@
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;
@@ -16,10 +17,10 @@
public class SqlMapParser {
private final NodeletParser parser = new NodeletParser();
- private ParserState state;
+ private SqlMapConfiguration config;
- public SqlMapParser(ParserState state) {
- this.state = state;
+ public SqlMapParser(SqlMapConfiguration config) {
+ this.config = config;
parser.setValidation(true);
parser.setEntityResolver(new SqlMapClasspathEntityResolver());
@@ -44,13 +45,13 @@
private void addSqlMapNodelets() {
parser.addNodelet("/sqlMap", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
- state.namespace = attributes.getProperty("namespace");
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
+ config.namespace = attributes.getProperty("namespace");
}
});
parser.addNodelet("/sqlMap/end()", new Nodelet() {
public void process(Node node) throws Exception {
- state.bindDelegateSubMaps();
+ config.bindDelegateSubMaps();
}
});
}
@@ -59,15 +60,15 @@
private void addSqlNodelets() {
parser.addNodelet("/sqlMap/sql", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String id = attributes.getProperty("id");
- if (state.useStatementNamespaces) {
- id = state.applyNamespace(id);
+ if (config.useStatementNamespaces) {
+ id = config.applyNamespace(id);
}
- if (state.sqlIncludes.containsKey(id)) {
+ if (config.sqlIncludes.containsKey(id)) {
throw new SqlMapException("Duplicate <sql>-include '" + id + "' found.");
} else {
- state.sqlIncludes.put(id, node);
+ config.sqlIncludes.put(id, node);
}
}
});
@@ -76,10 +77,10 @@
private void addTypeAliasNodelets() {
parser.addNodelet("/sqlMap/typeAlias", new Nodelet() {
public void process(Node node) throws Exception {
- Properties prop = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties prop = NodeletUtils.parseAttributes(node, config.globalProps);
String alias = prop.getProperty("alias");
String type = prop.getProperty("type");
- state.addTypeAlias(alias, type);
+ config.addTypeAlias(alias, type);
}
});
}
@@ -87,49 +88,49 @@
private void addCacheModelNodelets() {
parser.addNodelet("/sqlMap/cacheModel", new Nodelet() {
public void process(Node node) throws Exception {
- state.cacheModel = new CacheModel();
- state.cacheProps = new Properties();
+ config.cacheModel = new CacheModel();
+ config.cacheProps = new Properties();
}
});
parser.addNodelet("/sqlMap/cacheModel/end()", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
- String id = state.applyNamespace(attributes.getProperty("id"));
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
+ String id = config.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));
- state.addCacheModel(id, type, readOnly, serialize, state.cacheProps);
+ config.addCacheModel(id, type, readOnly, serialize, config.cacheProps);
}
});
parser.addNodelet("/sqlMap/cacheModel/property", new Nodelet() {
public void process(Node node) throws Exception {
- state.errorContext.setMoreInfo("Check the cache model properties.");
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ config.getErrorContext().setMoreInfo("Check the cache model properties.");
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String name = attributes.getProperty("name");
- String value = NodeletUtils.parsePropertyTokens(attributes.getProperty("value"), state.globalProps);
- state.cacheProps.put(name, value);
+ String value = NodeletUtils.parsePropertyTokens(attributes.getProperty("value"), config.globalProps);
+ config.cacheProps.put(name, value);
}
});
parser.addNodelet("/sqlMap/cacheModel/flushOnExecute", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node, config.globalProps);
String statement = childAttributes.getProperty("statement");
- state.addFlushTriggerStatement(statement);
+ config.addFlushTriggerStatement(statement);
}
});
parser.addNodelet("/sqlMap/cacheModel/flushInterval", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node, config.globalProps);
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"));
- state.setFlushInterval(hours, minutes, seconds, milliseconds);
+ config.setFlushInterval(hours, minutes, seconds, milliseconds);
} catch (NumberFormatException e) {
- throw new RuntimeException("Error building cache '" + state.cacheModel.getId() + "' in '" + "resourceNAME" + "'. Flush interval milliseconds must be a valid long integer value. Cause: " + e, 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);
}
}
});
@@ -140,21 +141,21 @@
parser.addNodelet("/sqlMap/parameterMap/end()", new Nodelet() {
public void process(Node node) throws Exception {
- state.finalizeParameterMap();
+ config.finalizeParameterMap();
}
});
parser.addNodelet("/sqlMap/parameterMap", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
- String id = state.applyNamespace(attributes.getProperty("id"));
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
+ String id = config.applyNamespace(attributes.getProperty("id"));
String parameterClassName = attributes.getProperty("class");
- state.addParameterMap(id, parameterClassName);
+ config.addParameterMap(id, parameterClassName);
}
});
parser.addNodelet("/sqlMap/parameterMap/parameter", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node, config.globalProps);
String propertyName = childAttributes.getProperty("property");
String jdbcType = childAttributes.getProperty("jdbcType");
String type = childAttributes.getProperty("typeName");
@@ -165,7 +166,7 @@
String callback = childAttributes.getProperty("typeHandler");
String numericScale = childAttributes.getProperty("numericScale");
- state.addParameterMapping(callback, javaType, resultMap, propertyName, jdbcType, type, nullValue, mode, numericScale);
+ config.addParameterMapping(callback, javaType, resultMap, propertyName, jdbcType, type, nullValue, mode, numericScale);
}
});
@@ -175,23 +176,23 @@
private void addResultMapNodelets() {
parser.addNodelet("/sqlMap/resultMap/end()", new Nodelet() {
public void process(Node node) throws Exception {
- state.finalizeResultMap();
+ config.finalizeResultMap();
}
});
parser.addNodelet("/sqlMap/resultMap", new Nodelet() {
public void process(Node node) throws Exception {
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
- String id = state.applyNamespace(attributes.getProperty("id"));
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
+ String id = config.applyNamespace(attributes.getProperty("id"));
String resultClassName = attributes.getProperty("class");
- String extended = state.applyNamespace(attributes.getProperty("extends"));
+ String extended = config.applyNamespace(attributes.getProperty("extends"));
String xmlName = attributes.getProperty("xmlName");
String groupBy = attributes.getProperty("groupBy");
- state.addResultMap(id, resultClassName, xmlName, groupBy, extended);
+ config.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, state.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node, config.globalProps);
String propertyName = childAttributes.getProperty("property");
String nullValue = childAttributes.getProperty("nullValue");
String jdbcType = childAttributes.getProperty("jdbcType");
@@ -202,22 +203,22 @@
String resultMapName = childAttributes.getProperty("resultMap");
String callback = childAttributes.getProperty("typeHandler");
- state.addResultMapping(callback, javaType, propertyName, jdbcType, columnName, nullValue, statementName, resultMapName, columnIndex);
+ config.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, state.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node, config.globalProps);
String value = childAttributes.getProperty("value");
String resultMap = childAttributes.getProperty("resultMap");
- state.addSubMap(value, resultMap);
+ config.addSubMap(value, resultMap);
}
});
parser.addNodelet("/sqlMap/resultMap/discriminator", new Nodelet() {
public void process(Node node) throws Exception {
- Properties childAttributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties childAttributes = NodeletUtils.parseAttributes(node, config.globalProps);
String nullValue = childAttributes.getProperty("nullValue");
String jdbcType = childAttributes.getProperty("jdbcType");
String javaType = childAttributes.getProperty("javaType");
@@ -225,7 +226,7 @@
String columnIndex = childAttributes.getProperty("columnIndex");
String callback = childAttributes.getProperty("typeHandler");
- state.addDiscriminator(callback, javaType, jdbcType, columnName, nullValue, columnIndex);
+ config.addDiscriminator(callback, javaType, jdbcType, columnName, nullValue, columnIndex);
}
});
}
@@ -233,38 +234,38 @@
protected void addStatementNodelets() {
parser.addNodelet("/sqlMap/statement", new Nodelet() {
public void process(Node node) throws Exception {
- state.currentStatement = new SqlStatementParser(state).parseGeneralStatement(node, new GeneralStatement());
- state.delegate.addMappedStatement(state.currentStatement);
+ config.currentStatement = new SqlStatementParser(config).parseGeneralStatement(node, new GeneralStatement());
+ config.getDelegate().addMappedStatement(config.currentStatement);
}
});
parser.addNodelet("/sqlMap/insert", new Nodelet() {
public void process(Node node) throws Exception {
- state.currentStatement = new SqlStatementParser(state).parseGeneralStatement(node, new InsertStatement());
- state.delegate.addMappedStatement(state.currentStatement);
+ config.currentStatement = new SqlStatementParser(config).parseGeneralStatement(node, new InsertStatement());
+ config.getDelegate().addMappedStatement(config.currentStatement);
}
});
parser.addNodelet("/sqlMap/update", new Nodelet() {
public void process(Node node) throws Exception {
- state.currentStatement = new SqlStatementParser(state).parseGeneralStatement(node, new UpdateStatement());
- state.delegate.addMappedStatement(state.currentStatement);
+ config.currentStatement = new SqlStatementParser(config).parseGeneralStatement(node, new UpdateStatement());
+ config.getDelegate().addMappedStatement(config.currentStatement);
}
});
parser.addNodelet("/sqlMap/delete", new Nodelet() {
public void process(Node node) throws Exception {
- state.currentStatement = new SqlStatementParser(state).parseGeneralStatement(node, new DeleteStatement());
- state.delegate.addMappedStatement(state.currentStatement);
+ config.currentStatement = new SqlStatementParser(config).parseGeneralStatement(node, new DeleteStatement());
+ config.getDelegate().addMappedStatement(config.currentStatement);
}
});
parser.addNodelet("/sqlMap/select", new Nodelet() {
public void process(Node node) throws Exception {
- state.currentStatement = new SqlStatementParser(state).parseGeneralStatement(node, new SelectStatement());
- state.delegate.addMappedStatement(state.currentStatement);
+ config.currentStatement = new SqlStatementParser(config).parseGeneralStatement(node, new SelectStatement());
+ config.getDelegate().addMappedStatement(config.currentStatement);
}
});
parser.addNodelet("/sqlMap/procedure", new Nodelet() {
public void process(Node node) throws Exception {
- state.currentStatement = new SqlStatementParser(state).parseGeneralStatement(node, new ProcedureStatement());
- state.delegate.addMappedStatement(state.currentStatement);
+ config.currentStatement = new SqlStatementParser(config).parseGeneralStatement(node, new ProcedureStatement());
+ config.getDelegate().addMappedStatement(config.currentStatement);
}
});
}
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=512636&r1=512635&r2=512636
==============================================================================
--- 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 Tue Feb 27 23:11:31 2007
@@ -2,36 +2,74 @@
import com.ibatis.common.xml.NodeletUtils;
import com.ibatis.sqlmap.engine.mapping.statement.*;
-import org.w3c.dom.Node;
+import com.ibatis.sqlmap.engine.conifg.SqlMapConfiguration;
+import org.w3c.dom.*;
import java.util.Properties;
public class SqlStatementParser {
- private ParserState state;
+ private SqlMapConfiguration config;
- public SqlStatementParser(ParserState state) {
- this.state = state;
+ public SqlStatementParser(SqlMapConfiguration config) {
+ this.config = config;
}
public MappedStatement parseGeneralStatement(Node node, GeneralStatement statement) {
// get attributes
- Properties attributes = NodeletUtils.parseAttributes(node, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(node, config.globalProps);
String id = attributes.getProperty("id");
- String parameterMapName = state.applyNamespace(attributes.getProperty("parameterMap"));
+ String parameterMapName = config.applyNamespace(attributes.getProperty("parameterMap"));
String parameterClassName = attributes.getProperty("parameterClass");
String resultMapName = attributes.getProperty("resultMap");
String resultClassName = attributes.getProperty("resultClass");
- String cacheModelName = state.applyNamespace(attributes.getProperty("cacheModel"));
+ String cacheModelName = config.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");
- return state.prepareGeneralStatement(new XMLStatementProcessor(state, node), statement, id, resultMapName, parameterMapName, resultSetType, fetchSize, parameterClassName, resultClassName, allowRemapping, xmlResultName, timeout, cacheModelName);
+ MappedStatement mappedStatement = config.prepareGeneralStatement(new XMLSqlSource(config, node), statement, id, resultMapName, parameterMapName, resultSetType, fetchSize, parameterClassName, resultClassName, allowRemapping, xmlResultName, timeout, cacheModelName);
+ findAndParseSelectKey(node, statement);
+ return mappedStatement;
}
+
+ private void findAndParseSelectKey(Node node, GeneralStatement statement) {
+ if (statement instanceof InsertStatement) {
+ config.getErrorContext().setActivity("parsing select key tags");
+
+ InsertStatement insertStatement = ((InsertStatement) statement);
+
+ SelectKeyStatement selectKeyStatement = null;
+
+ boolean foundSQLFirst = false;
+
+ NodeList children = node.getChildNodes();
+ for (int i = 0; i < children.getLength(); i++) {
+ Node child = children.item(i);
+ if (child.getNodeType() == Node.CDATA_SECTION_NODE
+ || child.getNodeType() == Node.TEXT_NODE) {
+ String data = ((CharacterData) child).getData();
+ if (data.trim().length() > 0) {
+ foundSQLFirst = true;
+ }
+ } else if (child.getNodeType() == Node.ELEMENT_NODE
+ && "selectKey".equals(child.getNodeName())) {
+ Properties attributes = NodeletUtils.parseAttributes(child, config.globalProps);
+ 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());
+ break;
+ }
+ }
+ config.getErrorContext().setMoreInfo(null);
+ insertStatement.setSelectKeyStatement(selectKeyStatement);
+ }
+ }
+
}
Copied: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java (from r512614, ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLStatementProcessor.java)
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java?view=diff&rev=512636&p1=ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLStatementProcessor.java&r1=512614&p2=ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java&r2=512636
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLStatementProcessor.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/XMLSqlSource.java Tue Feb 27 23:11:31 2007
@@ -1,54 +1,46 @@
package com.ibatis.sqlmap.engine.builder.xml;
-import org.w3c.dom.*;
-import com.ibatis.sqlmap.engine.mapping.statement.*;
+import com.ibatis.common.xml.NodeletUtils;
+import com.ibatis.sqlmap.engine.mapping.parameter.InlineParameterMapParser;
+import com.ibatis.sqlmap.engine.mapping.sql.*;
import com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql;
import com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements.*;
-import com.ibatis.sqlmap.engine.mapping.sql.SqlText;
-import com.ibatis.sqlmap.engine.mapping.parameter.InlineParameterMapParser;
-import com.ibatis.common.xml.NodeletUtils;
+import com.ibatis.sqlmap.engine.mapping.sql.raw.RawSql;
+import com.ibatis.sqlmap.engine.conifg.*;
+import org.w3c.dom.CharacterData;
+import org.w3c.dom.*;
import java.util.Properties;
-public class XMLStatementProcessor implements StatementProcessor {
+public class XMLSqlSource implements SqlSource {
private static final InlineParameterMapParser PARAM_PARSER = new InlineParameterMapParser();
- private ParserState state;
+ private SqlMapConfiguration config;
private Node parentNode;
-
- public XMLStatementProcessor(ParserState state, Node parentNode) {
- this.state = state;
+ public XMLSqlSource(SqlMapConfiguration config, Node parentNode) {
+ this.config = config;
this.parentNode = parentNode;
}
- public void processStatement(GeneralStatement statement) {
- state.errorContext.setActivity("processing an SQL statement");
+ public Sql getSql() {
+ config.getErrorContext().setActivity("processing an SQL statement");
boolean isDynamic = false;
- DynamicSql dynamic = new DynamicSql(state.client.getDelegate());
StringBuffer sqlBuffer = new StringBuffer();
-
+ DynamicSql dynamic = new DynamicSql(config.getClient().getDelegate());
isDynamic = parseDynamicTags(parentNode, dynamic, sqlBuffer, isDynamic, false);
-
- if (statement instanceof InsertStatement) {
- InsertStatement insertStatement = ((InsertStatement) statement);
- SelectKeyStatement selectKeyStatement = findAndParseSelectKeyStatement(parentNode, statement.getId(), statement.getParameterClass());
- insertStatement.setSelectKeyStatement(selectKeyStatement);
- }
-
String sqlStatement = sqlBuffer.toString();
if (isDynamic) {
- statement.setSql(dynamic);
+ return dynamic;
} else {
- state.applyInlineParameterMap(statement, sqlStatement);
+ return new RawSql(sqlStatement);
}
-
}
private boolean parseDynamicTags(Node node, DynamicParent dynamic, StringBuffer sqlBuffer, boolean isDynamic, boolean postParseRequired) {
- state.errorContext.setActivity("parsing dynamic SQL tags");
+ config.getErrorContext().setActivity("parsing dynamic SQL tags");
NodeList children = node.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
@@ -58,7 +50,7 @@
|| child.getNodeType() == Node.TEXT_NODE) {
String data = ((CharacterData) child).getData();
- data = NodeletUtils.parsePropertyTokens(data, state.globalProps);
+ data = NodeletUtils.parsePropertyTokens(data, config.globalProps);
SqlText sqlText;
@@ -67,7 +59,7 @@
sqlText.setPostParseRequired(postParseRequired);
sqlText.setText(data);
} else {
- sqlText = PARAM_PARSER.parseInlineParameterMap(state.client.getDelegate().getTypeHandlerFactory(), data, null);
+ sqlText = PARAM_PARSER.parseInlineParameterMap(config.getClient().getDelegate().getTypeHandlerFactory(), data, null);
sqlText.setPostParseRequired(postParseRequired);
}
@@ -75,19 +67,19 @@
sqlBuffer.append(data);
} else if ("include".equals(nodeName)) {
- Properties attributes = NodeletUtils.parseAttributes(child, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(child, config.globalProps);
String refid = (String) attributes.get("refid");
- Node includeNode = (Node) state.sqlIncludes.get(refid);
+ Node includeNode = (Node) config.sqlIncludes.get(refid);
if (includeNode == null) {
- String nsrefid = state.applyNamespace(refid);
- includeNode = (Node) state.sqlIncludes.get(nsrefid);
+ String nsrefid = config.applyNamespace(refid);
+ includeNode = (Node) config.sqlIncludes.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 {
- state.errorContext.setMoreInfo("Check the dynamic tags.");
+ config.getErrorContext().setMoreInfo("Check the dynamic tags.");
SqlTagHandler handler = SqlTagHandlerFactory.getSqlTagHandler(nodeName);
if (handler != null) {
@@ -97,7 +89,7 @@
tag.setName(nodeName);
tag.setHandler(handler);
- Properties attributes = NodeletUtils.parseAttributes(child, state.globalProps);
+ Properties attributes = NodeletUtils.parseAttributes(child, config.globalProps);
tag.setPrependAttr(attributes.getProperty("prepend"));
tag.setPropertyAttr(attributes.getProperty("property"));
@@ -132,40 +124,8 @@
}
}
}
- state.errorContext.setMoreInfo(null);
+ config.getErrorContext().setMoreInfo(null);
return isDynamic;
}
- private SelectKeyStatement findAndParseSelectKeyStatement(Node n, String statementId, Class parameterClass) {
- state.errorContext.setActivity("parsing select key tags");
-
- SelectKeyStatement selectKeyStatement = null;
-
- boolean foundSQLFirst = false;
-
- NodeList children = n.getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
- Node child = children.item(i);
- if (child.getNodeType() == Node.CDATA_SECTION_NODE
- || child.getNodeType() == Node.TEXT_NODE) {
- String data = ((CharacterData) child).getData();
- if (data.trim().length() > 0) {
- foundSQLFirst = true;
- }
- } else if (child.getNodeType() == Node.ELEMENT_NODE
- && "selectKey".equals(child.getNodeName())) {
-
- // get attributes
- Properties attributes = NodeletUtils.parseAttributes(child, state.globalProps);
- String keyPropName = attributes.getProperty("keyProperty");
- String resultClassName = attributes.getProperty("resultClass");
- String type = attributes.getProperty("type");
-
- selectKeyStatement = state.prepareSelectKeyStatement(new XMLStatementProcessor(state, child), resultClassName, statementId, keyPropName, foundSQLFirst, type, parameterClass);
- break;
- }
- }
- state.errorContext.setMoreInfo(null);
- return selectKeyStatement;
- }
}