Ibator - generatedKey: attribute "type" is not checked when attribute 
"sqlStatement" has a value
------------------------------------------------------------------------------------------------

                 Key: IBATIS-601
                 URL: https://issues.apache.org/jira/browse/IBATIS-601
             Project: iBatis for Java
          Issue Type: Bug
          Components: Tools
            Reporter: Karel Rank


With current SVN code, this configuration for table passes validation:

        <table schema="adnot" tableName="sites" domainObjectName="Site">
            <property name="useActualColumnNames" value="false"/>
            <generatedKey column="site_id" sqlStatement="SELECT 
nextval('adnot.sites_site_id_seq')" type="foobar"/>
            <columnRenamingRule searchString="site_" replaceString=""/>
        </table>

This configuration is not valid. Generated insert statements in SqlMap then 
contains in "selectKey" attribute type="foobar". The problem is in 
org.apache.ibatis.ibator.config.TableConfiguration, method validate. Here is 
the fix.

Index: src/org/apache/ibatis/ibator/config/TableConfiguration.java
===================================================================
--- src/org/apache/ibatis/ibator/config/TableConfiguration.java (revision 
774012)
+++ src/org/apache/ibatis/ibator/config/TableConfiguration.java (working copy)
@@ -474,12 +474,13 @@
         String fqTableName = StringUtility.composeFullyQualifiedTableName(
                 catalog, schema, tableName, '.');
         
-        if (generatedKey != null
-                && 
!StringUtility.stringHasValue(generatedKey.getRuntimeSqlStatement())) {
-            errors
-                .add(Messages.getString("ValidationError.7",  //$NON-NLS-1$
-                        fqTableName));
-            
+        if (generatedKey != null) {
+            if 
(!StringUtility.stringHasValue(generatedKey.getRuntimeSqlStatement())) {
+                errors
+                    .add(Messages.getString("ValidationError.7",  //$NON-NLS-1$
+                            fqTableName));
+            }
+ 
             String type = generatedKey.getType();
             if (StringUtility.stringHasValue(type)) {
                 if (!"pre".equals(type) && !"post".equals(type)) { 
//$NON-NLS-1$ //$NON-NLS-2$


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to