[ 
http://issues.apache.org/jira/browse/XERCESJ-1016?page=comments#action_60012 ]
     
Neil Graham commented on XERCESJ-1016:
--------------------------------------

deleted log files as requested by issue reporter.

> SAXParseException when delimiter at end of buffer
> -------------------------------------------------
>
>          Key: XERCESJ-1016
>          URL: http://issues.apache.org/jira/browse/XERCESJ-1016
>      Project: Xerces2-J
>         Type: Bug
>   Components: SAX
>     Versions: 2.6.2
>  Environment: AIX 5.2 and Windows XP
>     Reporter: Karen Owen
>  Attachments: Foo.java
>
> XML documents which parse successfully with a Xerces1 parser will not parse 
> with Xerces 2.3.0 and Xerces 2.6.2 unless the DEFAULT_BUFFER_SIZE in the 
> org.apache.xerces.impl.XMLEntityManager is increased.  A SAXParseException 
> "XML document structures must start and end within the same entity" is 
> thrown.  The row and column in the exception always point to the end of the 
> document.
> The problem can be recreated with the following Foo class.  If a character is 
> removed (e.g. the last '\n' in the XML document in 
> constructDocumentString()), the document will parse successfully.  If the 
> last processing instruction fits into the 2048K buffer with the exception of 
> (1) the delimiter "?>" or (2) part of the delimiter ">", a SAXParseException 
> is thrown.  Here are excerpts from the 'debug buffer' traces:
> (1) the delimiter "?>" not included in the 2048 buffer
> (scanName: 
> )scanName:  -> sanchez
> (skipSpaces: 
> )skipSpaces:  -> true
> (scanData: 
> )scanData:  -> false
> (scanData: 
> (load, 0: 
>   length to try to read: 2048
>   length actually read:  2
> )load, 0: 
> (load, 2: 
>   length to try to read: 2046
>   length actually read:  -1
> )load, 2: 
> (load, 0: 
>   length to try to read: 2048
>   length actually read:  -1
> [Fatal Error] :99:46: XML document structures must start and end within the 
> same entity.
> (2) part of the delimiter ">" not included in the 2048 buffer
> (scanName: 
> )scanName:  -> sanchez
> (skipSpaces: 
> )skipSpaces:  -> true
> (scanData: 
> )scanData:  -> false
> (scanData: 
> (load, 1: 
>   length to try to read: 2047
>   length actually read:  1
> )load, 1: 
> (load, 2: 
>   length to try to read: 2046
>   length actually read:  -1
> )load, 2: 
> (load, 0: 
>   length to try to read: 2048
>   length actually read:  -1
> [Fatal Error] :55:46: XML document structures must start and end within the 
> same entity.
> Changing the following code in the scanData method in the 
> org.apache.xerces.impl.XMLEntityScanner class FROM:
>            if (fCurrentEntity.position >= fCurrentEntity.count - delimLen) {
> TO:
>            if (fCurrentEntity.position >= fCurrentEntity.count - delimLen 
>            && fCurrentEntity.ch[fCurrentEntity.position] != charAt0 && 
> fCurrentEntity.count != delimLen) {
> seemed to have resolved this problem.
> Foo class:
> import java.io.*;
> import javax.xml.parsers.*;
> import java.net.*;
> import org.w3c.dom.*;
> import org.xml.sax.*;
> import org.apache.xml.serialize.*;
> Foo Class:
> /**
>  * @author KOwen
>  *
>  * To change this generated comment edit the template variable "typecomment":
>  * Window>Preferences>Java>Templates.
>  * To enable and disable the creation of type comments go to
>  * Window>Preferences>Java>Code Generation.
>  */
> public class Foo {
>       public static void main(String[] args) {
>               Foo foo = new Foo();    
>               
>               try {
>                       foo.parseDocumentString();
>               } catch (Throwable t) {
>                       t.toString();
>               }
>       }
>       
>       private void parseDocumentString() throws Exception {
>               // get the document string
>               String response = constructDocumentString();
>               // convert to bytes
>               byte[] byteArray = response.getBytes();
>               // convert to input stream
>               ByteArrayInputStream is = new ByteArrayInputStream(byteArray);
>               // parse document
>               Document doc = parse(new InputSource(is));
>               System.out.println("Size of response:  " + byteArray.length);
>               System.out.println(format(doc));
>       }
>       
>     public String format(Document document) throws IOException {
>               StringWriter stringWriter = new StringWriter(2000);
>               OutputFormat apacheOutputFormat = new OutputFormat();
>               apacheOutputFormat.setIndenting( true );
>       
>               Serializer serializer = SerializerFactory.getSerializerFactory( 
> Method.XML ).makeSerializer(stringWriter, apacheOutputFormat );
>               
>               serializer.asDOMSerializer().serialize( document );
>               
>       
>               return stringWriter.toString();
>       }
>       
>       public Document parse(InputSource inputSource) throws SAXException, 
> IOException {
>               DocumentBuilderFactory docBuilderFactory = 
> DocumentBuilderFactory.newInstance();
>               docBuilderFactory.setValidating( false );
>               DocumentBuilder docBuilder = null;
>               try {
>                       docBuilder = docBuilderFactory.newDocumentBuilder();
>               }
>               catch (ParserConfigurationException excp) {
>                       throw new SAXException( "JAXP Parser Configuration 
> Error", excp );
>               }
>               return docBuilder.parse( inputSource );
>       }       
>       
>       
>       public static String constructDocumentString() {
>               StringBuffer buffer = new StringBuffer("<?xml version=\"1.0\" 
> encoding=\"UTF-8\"?>")
>               .append("\r\n<?bns version=\"2.0\" msgid=\"2004-10-04 
> 14:31:20.332UO\"?>")
>               .append("<COMServiceReply>")
>               .append("<ReplyValue type=\"ResultSet\">")
>               .append("<ResultSet>\n")
>             .append("<Item name=\"Account\" value=\"1105016\">\n")
>             .append("<Status>8</Status>\n")
>             .append("<Account>\n")
>             .append("<FUNDEDSTATUS>N</FUNDEDSTATUS>\n")
>             .append("<STATUS>330</STATUS>\n")
>             .append("<COMPLETESTATUS>N</COMPLETESTATUS>\n")
>             .append("<PAYMENTFREQUENCY>MONTHLY 1</PAYMENTFREQUENCY>\n")
>             .append("<INTERESTRATE>5.82876</INTERESTRATE>\n")
>             .append("<CUSTOMERCODE>99</CUSTOMERCODE>\n")
>             .append("<COMMERCIALFLAG>N</COMMERCIALFLAG>\n")
>             .append("<CLASSTYPE>61</CLASSTYPE>\n")
>             .append("<PRODUCTTYPE>904</PRODUCTTYPE>\n")
>             .append("<TERM>24M</TERM>\n")
>             .append("<AMORTIZATION>300M</AMORTIZATION>\n")
>             .append("<FIRSTPAYMENTDATE>01-Aug-2004 
> 00:00:00</FIRSTPAYMENTDATE>\n")
>             .append("<LOANAMOUNT>225000.00</LOANAMOUNT>\n")
>             .append("<MATURITYDATE>03-May-2006 00:00:00</MATURITYDATE>\n")
>             .append("<CLOSINGORPOSESSIONDATE>01-May-2004 
> 00:00:00</CLOSINGORPOSESSIONDATE>\n")
>             
> .append("<CLOSINGORPOSESSIONDATEINDICATOR>N</CLOSINGORPOSESSIONDATEINDICATOR>\n")
>             
> .append("<SERVICINGBRANCHTRANSIT>80002</SERVICINGBRANCHTRANSIT>\n")
>             .append("<PAYMENTESCROWAMOUNT>0.00</PAYMENTESCROWAMOUNT>\n")
>             .append("<PAYMENTCURRENTAMOUNT>750.00</PAYMENTCURRENTAMOUNT>\n")
>             .append("<TOTALESCROWBALANCE>0.00</TOTALESCROWBALANCE>\n")
>             .append("<PRINCIPALANDINTEREST>1426.22</PRINCIPALANDINTEREST>\n")
>             .append("<SWITCHCODE>1</SWITCHCODE>\n")
>             .append("<REMAININGAMORTIZATION>300M</REMAININGAMORTIZATION>\n")
>             
> .append("<EFFECTIVEINTERESTRATE>5.90000</EFFECTIVEINTERESTRATE>\n")
>             .append("<DATELOANAUTHORIZED>12-Apr-2004 
> 00:00:00</DATELOANAUTHORIZED>\n")
>             .append("<REPAYMENTSTARTDATE>03-May-2004 
> 00:00:00</REPAYMENTSTARTDATE>\n")
>             .append("<VRMINDICATOR>N</VRMINDICATOR>\n")
>             
> .append("<PROCESSINGBRANCHTRANSIT>80002</PROCESSINGBRANCHTRANSIT>\n")
>             .append("<DUEONSALE>1</DUEONSALE>\n")
>             .append("<REPAYMENTTYPE>B</REPAYMENTTYPE>\n")
>             .append("<MORTGAGENUMBER>1105016</MORTGAGENUMBER>\n")
>             .append("<IPLINDICATOR>N</IPLINDICATOR>\n")
>             .append("<FIXEDRATEINDICATOR>Y</FIXEDRATEINDICATOR>\n")
>             .append("<SPRMINDICATOR>N</SPRMINDICATOR>\n")
>             
> .append("<AUTHORIZEDINPUTTRANSIT>80002</AUTHORIZEDINPUTTRANSIT>\n")
>             .append("<MORTGAGERATETYPE>F</MORTGAGERATETYPE>\n")
>             .append("<VRMBASERATE>5.82876</VRMBASERATE>\n")
>             .append("<DATEOFAPPLICATION>10-Apr-2004 
> 00:00:00</DATEOFAPPLICATION>\n")
>             .append("<Address>\n")
>             .append("<ADDRESSLINE1>231 SANDHURST</ADDRESSLINE1>\n")
>             .append("<CITY>SCARBOROUGH</CITY>\n")
>             .append("<STATE>9</STATE>\n")
>             .append("<POSTALCODE>M1B 2B2</POSTALCODE>\n")
>             .append("<COUNTRY>37</COUNTRY>\n")
>             .append("</Address>\n")
>             .append("<FeePlan FEEPLANDESC=\"Appraisal Fee\" 
> FEETYP=\"APPRFEE\">\n")
>             
> .append("<FEEASSESSEDTOCUSTOMERPRIORYEAR>0.00</FEEASSESSEDTOCUSTOMERPRIORYEAR>\n")
>             
> .append("<FEEASSESSEDTOCUSTOMERLIFE>225.00</FEEASSESSEDTOCUSTOMERLIFE>\n")
>             
> .append("<FEEASSESSEDTOCUSTOMERYTD>225.00</FEEASSESSEDTOCUSTOMERYTD>\n")
>             .append("<FEEPAIDYTD>0.00</FEEPAIDYTD>\n")
>             .append("<FEEPAIDPRIORYEAR>0.00</FEEPAIDPRIORYEAR>\n")
>             .append("<FEEWAIVEDLIFE>0.00</FEEWAIVEDLIFE>\n")
>             .append("<FEEPAIDLIFE>0.00</FEEPAIDLIFE>\n")
>             .append("</FeePlan>\n")
>             .append("<FeePlan FEEPLANDESC=\"BC Discharge Fee\" 
> FEETYP=\"BCDISCH\">\n")
>             
> .append("<FEEASSESSEDTOCUSTOMERPRIORYEAR>0.00</FEEASSESSEDTOCUSTOMERPRIORYEAR>\n")
>             
> .append("<FEEASSESSEDTOCUSTOMERLIFE>325.00</FEEASSESSEDTOCUSTOMERLIFE>\n")
>             
> .append("<FEEASSESSEDTOCUSTOMERYTD>325.00</FEEASSESSEDTOCUSTOMERYTD>\n")
>             .append("<FEEPAIDYTD>0.00</FEEPAIDYTD>\n")
>             .append("<FEEPAIDPRIORYEAR>0.00</FEEPAIDPRIORYEAR>\n")
>             .append("<FEEWAIVEDLIFE>0.00</FEEWAIVEDLIFE>\n")
>             .append("<FEEPAIDLIFE>0.00</FEEPAIDLIFE>\n")
>             .append("</FeePlan>\n")
>             .append("<FeePlan FEEPLANDESC=\"CMHC Application Fee\" 
> FEETYP=\"NHAAPP\">\n")
>             
> .append("<FEEASSESSEDTOCUSTOMERPRIORYEAR>0.00</FEEASSESSEDTOCUSTOMERPRIORYEAR>\n")
>             
> .append("<FEEASSESSEDTOCUSTOMERLIFE>275.00</FEEASSESSEDTOCUSTOMERLIFE>\n")
>             
> .append("<FEEASSESSEDTOCUSTOMERYTD>275.00</FEEASSESSEDTOCUSTOMERYTD>\n")
>             .append("<FEEPAIDYTD>0.00</FEEPAIDYTD>\n")
>             .append("<FEEPAIDPRIORYEAR>0.00</FEEPAIDPRIORYEAR>\n")
>             .append("<FEEWAIVEDLIFE>0.00</FEEWAIVEDLIFE>\n")
>             .append("<FEEPAIDLIFE>0.00</FEEPAIDLIFE>\n")
>             .append("</FeePlan>\n")
>             .append("<Collateral COLLATERALCODE=\"10\">\n")
>             .append("<PROPERTYDESCRIPTIONLINE1>222 Main 
> street</PROPERTYDESCRIPTIONLINE1>\n")
>             .append("<PROPERTYADDRESSLINE3>Burneby</PROPERTYADDRESSLINE3>\n")
>             .append("<PROPERTYADDRESSSTATE>2</PROPERTYADDRESSSTATE>\n")
>             .append("<PROPERTYADDRESSCOUNTRY>37</PROPERTYADDRESSCOUNTRY>\n")
>             .append("<DATEBUILDINGAPPRAISEDANDDATELANDAPPRAISED>2004-04-08 
> 00:00:00.0</DATEBUILDINGAPPRAISEDANDDATELANDAPPRAISED>\n")
>             
> .append("<BUILDINGLENDINGVALUE>125000.00</BUILDINGLENDINGVALUE>\n")
>             .append("<COLDESC>BC</COLDESC>\n")
>             .append("<LANDLENDINGVALUE>125000.00</LANDLENDINGVALUE>\n")
>             .append("<TYPEOFSECURITY>1</TYPEOFSECURITY>\n")
>             
> .append("<APPRAISEDBUILDINGVALUE>125000.00</APPRAISEDBUILDINGVALUE>\n")
>             .append("<APPRAISEDLANDVALUE>125000.00</APPRAISEDLANDVALUE>\n")
>             .append("<LENDINGVALUE>250000.00</LENDINGVALUE>\n")
>             .append("</Collateral>\n")
>             .append("<Phone>\n")
>             .append("<HOMEPHONENUMBER>4166155465</HOMEPHONENUMBER>\n")
>             .append("<WORKPHONENUMBER>4166455465</WORKPHONENUMBER>\n")
>             .append("</Phone>\n")
>             .append("</Account>\n")
>             .append("</Item>\n")
>             .append("</ResultSet>\n")
>             .append("</ReplyValue>")
>             .append("</COMServiceReply>")
>             .append("<?sanchez msgid=\"2004-10-04 14:31:20.332UO\"?>");
>             
>               return buffer.toString();
>       }
> }
> Thank you!

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to