You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2005/10/14 22:30:58 UTC

svn commit: r321209 - in /cocoon/branches/BRANCH_2_1_X: src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java status.xml

Author: vgritsenko
Date: Fri Oct 14 13:30:47 2005
New Revision: 321209

URL: http://svn.apache.org/viewcvs?rev=321209&view=rev
Log:
    <action dev="VG" type="fix" fixes-bug="30894">
      Databases block: Support stored procedures returning result set in SQLTransformer.
    </action>


Modified:
    cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java
    cocoon/branches/BRANCH_2_1_X/status.xml

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java?rev=321209&r1=321208&r2=321209&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java Fri Oct 14 13:30:47 2005
@@ -1182,17 +1182,19 @@
                     }
                     start(this.rowsetElement, attr);
 
+                    // Serialize stored procedure output parameters
                     if (isStoredProcedure) {
                         serializeStoredProcedure();
-                    } else {
-                        while (next()) {
-                            start(this.rowElement, EMPTY_ATTRIBUTES);
-                            serializeRow();
-                            for (Iterator i = this.nested.iterator(); i.hasNext();) {
-                                ((Query) i.next()).executeQuery();
-                            }
-                            end(this.rowElement);
+                    }
+
+                    // Serialize result set
+                    while (next()) {
+                        start(this.rowElement, EMPTY_ATTRIBUTES);
+                        serializeRow();
+                        for (Iterator i = this.nested.iterator(); i.hasNext();) {
+                            ((Query) i.next()).executeQuery();
                         }
+                        end(this.rowElement);
                     }
 
                     end(this.rowsetElement);
@@ -1444,17 +1446,17 @@
             // make sure output follows order as parameter order in stored procedure
             Iterator itOutKeys = new TreeMap(outParameters).keySet().iterator();
             while (itOutKeys.hasNext()) {
-                Integer counter = (Integer) itOutKeys.next();
+                final Integer counter = (Integer) itOutKeys.next();
                 try {
-                    Object obj = cst.getObject(counter.intValue());
+                    final Object obj = cst.getObject(counter.intValue());
+                    final String name = (String) outParametersNames.get(counter);
+                    start(name, EMPTY_ATTRIBUTES);
+
                     if (!(obj instanceof ResultSet)) {
-                        start((String) outParametersNames.get(counter), EMPTY_ATTRIBUTES);
                         serializeData(getStringValue(obj));
-                        end((String) outParametersNames.get(counter));
                     } else {
-                        ResultSet rs = (ResultSet) obj;
+                        final ResultSet rs = (ResultSet) obj;
                         try {
-                            start((String) outParametersNames.get(counter), EMPTY_ATTRIBUTES);
                             ResultSetMetaData md = rs.getMetaData();
                             while (rs.next()) {
                                 start(this.rowElement, EMPTY_ATTRIBUTES);
@@ -1477,8 +1479,9 @@
                                 /* ignored */
                             }
                         }
-                        end((String) outParametersNames.get(counter));
                     }
+
+                    end(name);
                 } catch (SQLException e) {
                     getLogger().error("Caught a SQLException", e);
                     throw e;

Modified: cocoon/branches/BRANCH_2_1_X/status.xml
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/status.xml?rev=321209&r1=321208&r2=321209&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/status.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/status.xml Fri Oct 14 13:30:47 2005
@@ -174,6 +174,9 @@
 
   <changes>
   <release version="@version@" date="@date@">
+    <action dev="VG" type="fix" fixes-bug="30894">
+      Databases block: Support stored procedures returning result set in SQLTransformer.
+    </action>
     <action dev="BD" type="add">
       Bricks-cms example application created (distributed separately), see http://wiki.apache.org/cocoon/BricksCms
     </action>