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 2009/01/03 23:04:12 UTC
svn commit: r731095 - in /ibatis/trunk/java/ibatis-3:
ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/
ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/impl/
ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/ ibatis-...
Author: cbegin
Date: Sat Jan 3 14:04:11 2009
New Revision: 731095
URL: http://svn.apache.org/viewvc?rev=731095&view=rev
Log:
implemented strict map for result maps
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/impl/SqlMapSessionImpl.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.java
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapParser.java?rev=731095&r1=731094&r2=731095&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapParser.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapParser.java Sat Jan 3 14:04:11 2009
@@ -178,14 +178,10 @@
if (extendedId != null) {
ResultMap extendedResultMap = config.getResultMap(extendedId);
- if (extendedResultMap != null) {
- for (ResultMapping mapping : extendedResultMap.getResultMappings()) {
- resultMappingList.add(mapping);
- }
- resultMapBuilder.discriminator(extendedResultMap.getDiscriminator());
- } else {
- throw new SqlMapException("Could not extend non-existant result map named " + extendedId);
+ for (ResultMapping mapping : extendedResultMap.getResultMappings()) {
+ resultMappingList.add(mapping);
}
+ resultMapBuilder.discriminator(extendedResultMap.getDiscriminator());
}
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/impl/SqlMapSessionImpl.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/impl/SqlMapSessionImpl.java?rev=731095&r1=731094&r2=731095&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/impl/SqlMapSessionImpl.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/impl/SqlMapSessionImpl.java Sat Jan 3 14:04:11 2009
@@ -269,8 +269,15 @@
}
private int getKey(String id, final Object parameterObject) throws SQLException {
- final MappedStatement keyStatement = configuration.getMappedStatement(selectKeyIdFor(id));
int key = Integer.MIN_VALUE;
+ String selectKeyId = selectKeyIdFor(id);
+ final MappedStatement keyStatement;
+
+ if (configuration.getMappedStatementNames().contains(selectKeyId)) {
+ keyStatement = configuration.getMappedStatement(selectKeyId);
+ } else {
+ keyStatement = null;
+ }
if (keyStatement != null) {
List results = (List) transactionManager.doInTransaction(new TransactionScope() {
public Object execute(Transaction transaction) throws SQLException {
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java?rev=731095&r1=731094&r2=731095&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java Sat Jan 3 14:04:11 2009
@@ -90,13 +90,14 @@
// TODO: We need an easy way to unit test this without installing Oracle.
// Mocks are obvious, but will they be effective enough? DBunit?
ResultSet rs = (ResultSet) callableStatement.getObject(i + 1);
- ResultMap resultMap = mappedStatement.getConfiguration().getResultMap(parameterMapping.getResultMapId());
- if (resultMap == null) {
- throw new ExecutorException("Parameter requires ResultMap for output types of java.sql.ResultSet");
- } else {
+ String resultMapId = parameterMapping.getResultMapId();
+ if (resultMapId != null) {
+ ResultMap resultMap = mappedStatement.getConfiguration().getResultMap(resultMapId);
DefaultResultHandler resultHandler = new DefaultResultHandler();
handleResults(rs, resultMap, resultHandler, Executor.NO_ROW_OFFSET, Executor.NO_ROW_LIMIT);
metaParam.setValue(parameterMapping.getProperty(), resultHandler.getResultList());
+ } else {
+ throw new ExecutorException("Parameter requires ResultMap for output types of java.sql.ResultSet");
}
rs.close();
} else {
@@ -275,8 +276,9 @@
if (knownResultObject != null && knownResultObject != NO_VALUE) {
for (ResultMapping resultMapping : resultMappings) {
Configuration configuration = mappedStatement.getConfiguration();
- ResultMap nestedResultMap = configuration.getResultMap(resultMapping.getNestedResultMapId());
- if (nestedResultMap != null) {
+ String nestedResultMapId = resultMapping.getNestedResultMapId();
+ if (nestedResultMapId != null) {
+ ResultMap nestedResultMap = configuration.getResultMap(nestedResultMapId);
try {
// get the discriminated submap if it exists
@@ -369,11 +371,14 @@
ResultMapping resultMapping = discriminator.getResultMapping();
Object value = getPrimitiveResultMappingValue(rs, resultMapping);
String subMapId = discriminator.getMapIdFor(String.valueOf(value));
- subMap = mappedStatement.getConfiguration().getResultMap(subMapId);
- if (subMap == null) {
+ try {
+ subMap = mappedStatement.getConfiguration().getResultMap(subMapId);
+ } catch (Exception e) {
subMap = rm;
- } else if (subMap != rm) {
+ }
+
+ if (subMap != rm) {
subMap = resolveSubMap(rs, subMap);
}
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java?rev=731095&r1=731094&r2=731095&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java Sat Jan 3 14:04:11 2009
@@ -42,7 +42,7 @@
private final TypeAliasRegistry typeAliasRegistry = new TypeAliasRegistry();
private final Map<String, MappedStatement> mappedStatements = new StrictMap<String, MappedStatement>("Mapped Statements collection");
private final Map<String, Cache> caches = new StrictMap<String, Cache>("Caches collection");
- private final Map<String, ResultMap> resultMaps = new HashMap<String, ResultMap>();//("Result Maps collection");
+ private final Map<String, ResultMap> resultMaps = new StrictMap<String, ResultMap>("Result Maps collection");
private final Map<String, ParameterMap> parameterMaps = new StrictMap<String, ParameterMap>("Parameter Maps collection");
public Configuration() {
@@ -193,6 +193,10 @@
caches.put(cache.getId(), cache);
}
+ public Collection<String> getCacheNames() {
+ return caches.keySet();
+ }
+
public Collection<Cache> getCaches() {
return caches.values();
}
@@ -205,6 +209,10 @@
resultMaps.put(rm.getId(), rm);
}
+ public Collection<String> getResultMapNames() {
+ return resultMaps.keySet();
+ }
+
public Collection<ResultMap> getResultMaps() {
return resultMaps.values();
}
@@ -217,6 +225,10 @@
parameterMaps.put(pm.getId(), pm);
}
+ public Collection<String> getParameterMapNames() {
+ return parameterMaps.keySet();
+ }
+
public Collection<ParameterMap> getParameterMaps() {
return parameterMaps.values();
}
@@ -229,6 +241,10 @@
mappedStatements.put(ms.getId(), ms);
}
+ public Collection<String> getMappedStatementNames() {
+ return mappedStatements.keySet();
+ }
+
public Collection<MappedStatement> getMappedStatements() {
return mappedStatements.values();
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.java?rev=731095&r1=731094&r2=731095&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/parser/MapperParser.java Sat Jan 3 14:04:11 2009
@@ -148,9 +148,6 @@
if (extend != null) {
ResultMap resultMap = configuration.getResultMap(extend);
- if (resultMap == null) {
- throw new ParserException("ResultMap named in extends attribute of " + id + "does not exist or is not defined yet.");
- }
resultMappings.addAll(resultMap.getResultMappings());
}
}