adri...@apache.org wrote:
Author: adrianc
Date: Sat Jan 23 05:38:09 2010
New Revision: 902341

URL: http://svn.apache.org/viewvc?rev=902341&view=rev
Log:
Small improvement to ClobToString converter.

Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java

Modified: 
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java?rev=902341&r1=902340&r2=902341&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java 
(original)
+++ 
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/MiscConverters.java 
Sat Jan 23 05:38:09 2010
@@ -108,15 +108,13 @@
         }
public String convert(Clob obj) throws ConversionException {
-            StringBuilder strBuf = new StringBuilder();
-            char[] inCharBuffer = new char[CHAR_BUFFER_SIZE];
-            int charsRead = 0;
+            char[] charBuffer = null;
             Reader clobReader = null;
             try {
-                clobReader =  obj.getCharacterStream();
-                while ((charsRead = clobReader.read(inCharBuffer, 0, 
CHAR_BUFFER_SIZE)) > 0) {
-                    strBuf.append(inCharBuffer, 0, charsRead);
-                }
+                int clobLength = (int) obj.length();
+                charBuffer = new char[clobLength];
+                clobReader = obj.getCharacterStream();
+                clobReader.read(charBuffer, 0, clobLength);
             } catch (Exception e) {
                 throw new ConversionException(e);
             }
@@ -127,7 +125,7 @@
                     } catch (IOException e) {}
                 }
             }
-            return strBuf.toString();
+            return new String(charBuffer);
         }
     }

Adrian, there is a problem with this improvement:

the following line

clobReader.read(charBuffer, 0, clobLength);

can't read more than 8192 chars when used with derby database (I didn't check 
with other databases).
The bug appeared when I tried to read big xml file stored in ElectronicText 
entity and got the xml truncated.
Also I think this is the cause for 
https://issues.apache.org/jira/browse/OFBIZ-3529

Bilgin

Reply via email to