Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 12866 invoked from network); 26 Oct 2006 00:34:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 26 Oct 2006 00:34:08 -0000 Received: (qmail 65845 invoked by uid 500); 26 Oct 2006 00:34:15 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 65752 invoked by uid 500); 26 Oct 2006 00:34:15 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 65679 invoked by uid 99); 26 Oct 2006 00:34:15 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Oct 2006 17:34:15 -0700 X-ASF-Spam-Status: No, hits=0.6 required=10.0 tests=NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: local policy) Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Oct 2006 17:34:03 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id BF8301A9846; Wed, 25 Oct 2006 17:33:42 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r467820 - /cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java Date: Thu, 26 Oct 2006 00:33:42 -0000 To: cvs@cocoon.apache.org From: vgritsenko@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061026003342.BF8301A9846@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: vgritsenko Date: Wed Oct 25 17:33:41 2006 New Revision: 467820 URL: http://svn.apache.org/viewvc?view=rev&rev=467820 Log: http://mail-archives.apache.org/mod_mbox/cocoon-dev/200610.mbox/%3c4533814D.7050306@reverycodes.com%3e Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java URL: http://svn.apache.org/viewvc/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java?view=diff&rev=467820&r1=467819&r2=467820 ============================================================================== --- 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 Wed Oct 25 17:33:41 2006 @@ -17,6 +17,7 @@ package org.apache.cocoon.transformation; import java.io.IOException; +import java.io.InputStream; import java.io.Reader; import java.io.StringReader; import java.lang.reflect.Field; @@ -28,13 +29,13 @@ import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Properties; import java.util.TreeMap; -import java.util.List; -import java.util.ArrayList; import org.apache.avalon.excalibur.datasource.DataSourceComponent; import org.apache.avalon.framework.configuration.Configuration; @@ -44,15 +45,17 @@ import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.ServiceSelector; +import org.apache.excalibur.xml.sax.SAXParser; + import org.apache.cocoon.ProcessingException; import org.apache.cocoon.components.sax.XMLDeserializer; import org.apache.cocoon.components.sax.XMLSerializer; import org.apache.cocoon.environment.SourceResolver; import org.apache.cocoon.transformation.helpers.TextRecorder; import org.apache.cocoon.xml.IncludeXMLConsumer; + import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; -import org.apache.excalibur.xml.sax.SAXParser; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -1205,7 +1208,7 @@ while (i.hasNext()) { Integer counter = (Integer) i.next(); String type = (String) outParameters.get(counter); - + int index = type.lastIndexOf("."); String className, fieldName; if (index == -1) { @@ -1214,7 +1217,7 @@ } className = type.substring(0, index); fieldName = type.substring(index + 1, type.length()); - + try { Class clss = Class.forName(className); Field fld = clss.getField(fieldName); @@ -1659,21 +1662,14 @@ if (object instanceof Clob && this.clobEncoding != null) { Clob clob = (Clob) object; StringBuffer buffer = new StringBuffer(); + InputStream is = clob.getAsciiStream(); try { - int blocksize = BUFFER_SIZE; - long length = clob.length(); - long nMax = length / blocksize; - for (int n = 0; n < nMax; n++) { - String sText = clob.getSubString(n*blocksize+1, blocksize); - buffer.append( sText); - } - //Read the last block - int lastblocksize = (int)length%blocksize; - if (lastblocksize > 0) { - String sText = clob.getSubString(nMax*blocksize+1, lastblocksize); - buffer.append( sText); - } - } catch (Exception e) { + byte[] bytes = new byte[BUFFER_SIZE]; + int n; + while ((n = is.read(bytes)) > -1) { + buffer.append(new String(bytes, 0, n, this.clobEncoding)); + } + } catch (IOException e) { throw new SQLException("Error reading stream from CLOB"); } return buffer.toString();