[ 
http://jira.codehaus.org/browse/JIBX-172?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dennis Sosnoski resolved JIBX-172.
----------------------------------

         Assignee: Dennis Sosnoski
       Resolution: Fixed
    Fix Version/s: JiBX 1.1.6

Corrected ISO88591StreamWriter to use the same multiples of character length as 
UTF8StreamWriter when sizing the buffer for output text.

> ArrayIndexOutOfBoundsException during marshalling a element contains large 
> XML-data
> -----------------------------------------------------------------------------------
>
>                 Key: JIBX-172
>                 URL: http://jira.codehaus.org/browse/JIBX-172
>             Project: JiBX
>          Issue Type: Bug
>          Components: core
>    Affects Versions: JiBX 1.0.1
>         Environment: JDK  1.4.2_03-b02
> WinXP pro / Unix
>            Reporter: André Sudhoff
>            Assignee: Dennis Sosnoski
>             Fix For: JiBX 1.1.6
>
>
> An exception is thrown when marshalling an element contains a XML-String and 
> the encoded size exceeds 4K.
> if I replace all following characters "<", ">" for example with "#", "*" the 
> marshalling works fine.
> Example which throws Exception:
>         String wert = "<imp id=\"get_current_alarms\">\n" +
>                         
> "<alarm_op_result><![CDATA[CS_ALARM_RETRIEVED]]></alarm_op_result>\n" + 
>                         "<imp id=\"alarms\">\n" + 
>                         "<imp id=\"alarm_message\">\n" + 
>                         
> "<alarm_condition><![CDATA[CS_LOSS_OF_SYNC]]></alarm_condition>\n" + 
>                         "<event_time><![CDATA[0]]></event_time>\n" + 
>                         
> "<layer1_data><![CDATA[CS_ALM_NO_LAYER1_ADDITIONAL_DATA]]></layer1_data>\n" + 
>                         
> "<sync_loss_data><![CDATA[CS_LFA_AIS_OR_LIS_AT_NT]]></sync_loss_data>\n" + 
>                         
> "<bit_error_data><![CDATA[CS_BIT_ERR_DIRECTION_IN]]></bit_error_data>\n" + 
>                         "<nrt_alm_err_mesg/>\n" + 
>                         "<imp id=\"line\">\n" + 
>                         
> "<switch_short_name><![CDATA[0000-T7---D]]></switch_short_name>\n" + 
>                         "<equipment_number/>\n" + 
>                         
> "<directory_number><![CDATA[00000000]]></directory_number>\n" + 
>                         "<stroke_number><![CDATA[0]]></stroke_number>\n" + 
>                         "</imp>\n" + 
>                         "</imp>\n" + 
>                         "<imp id=\"alarm_message\">\n" + 
>                         
> "<alarm_condition><![CDATA[CS_BER_EXCEEDED_10_6]]></alarm_condition>\n" + 
>                         "<event_time><![CDATA[0000000000]]></event_time>\n" + 
>                         
> "<layer1_data><![CDATA[CS_ALM_NO_LAYER1_ADDITIONAL_DATA]]></layer1_data>\n" + 
>                         
> "<sync_loss_data><![CDATA[CS_NO_SYNC_LOSS_ADDITIONAL_DATA]]></sync_loss_data>\n"
>  + 
>                         
> "<bit_error_data><![CDATA[CS_BIT_ERR_DIRECTION_IN]]></bit_error_data>\n" + 
>                         "<nrt_alm_err_mesg/>\n" + 
>                         "<imp id=\"line\">\n" + 
>                         
> "<switch_short_name><![CDATA[0000-T7---D]]></switch_short_name>\n" + 
>                         "<equipment_number/>\n" + 
>                         
> "<directory_number><![CDATA[0000000000]]></directory_number>\n" + 
>                         "<stroke_number><![CDATA[0]]></stroke_number>\n" + 
>                         "</imp>\n" + 
>                         "</imp>\n" + 
>                         
>                         "<imp id=\"alarm_message\">\n" + 
>                         
> "<alarm_condition><![CDATA[CS_LAYER2_DEACTIVATION]]></alarm_condition>\n" + 
>                         "<event_time><![CDATA[0]]></event_time>\n" + 
>                         
> "<layer1_data><![CDATA[CS_ALM_NO_LAYER1_ADDITIONAL_DATA]]></layer1_data>\n" + 
>                         
> "<sync_loss_data><![CDATA[CS_NO_SYNC_LOSS_ADDITIONAL_DATA]]></sync_loss_data>\n"
>  + 
>                         
> "<bit_error_data><![CDATA[CS_BIT_ERR_DIRECTION_IN]]></bit_error_data>\n" + 
>                         "<nrt_alm_err_mesg/>\n" + 
>                         "<imp id=\"line\">\n" + 
>                         
> "<switch_short_name><![CDATA[0000-T7---D]]></switch_short_name>\n" + 
>                         "<equipment_number/>\n" + 
>                         
> "<directory_number><![CDATA[0000000000]]></directory_number>\n" + 
>                         "<stroke_number><![CDATA[0]]></stroke_number>\n" + 
>                         "</imp>\n" + 
>                         "</imp>\n" + 
>                         
>                         "<imp id=\"alarm_message\">\n" + 
>                         
> "<alarm_condition><![CDATA[CS_LAYER1_INTERRUPT]]></alarm_condition>\n" + 
>                         "<event_time><![CDATA[0000000000]]></event_time>\n" + 
>                         
> "<layer1_data><![CDATA[CS_ALM_NO_LAYER1_ADDITIONAL_DATA]]></layer1_data>\n" + 
>                         
> "<sync_loss_data><![CDATA[CS_NO_SYNC_LOSS_ADDITIONAL_DATA]]></sync_loss_data>\n"
>  + 
>                         
> "<bit_error_data><![CDATA[CS_BIT_ERR_DIRECTION_IN]]></bit_error_data>\n" + 
>                         "<nrt_alm_err_mesg/>\n" + 
>                         "<imp id=\"line\">\n" + 
>                         
> "<switch_short_name><![CDATA[0000-T7---D]]></switch_short_name>\n" + 
>                         "<equipment_number/>\n" + 
>                         
> "<directory_number><![CDATA[00000000000]]></directory_number>\n" + 
>                         "<stroke_number><![CDATA[0]]></stroke_number>\n" + 
>                         "</imp>\n" + 
>                         "</imp>\n" + 
>                         
>                         "<imp id=\"alarm_message\">\n" + 
>                         
> "<alarm_condition><![CDATA[CS_TRANS_QUALITY_CAUSE_DEAC]]></alarm_condition>\n"
>  + 
>                         "<event_time><![CDATA[0]]></event_time>\n" + 
>                         
> "<layer1_data><![CDATA[CS_ALM_NO_LAYER1_ADDITIONAL_DATA]]></layer1_data>\n" + 
>                         
> "<sync_loss_data><![CDATA[CS_NO_SYNC_LOSS_ADDITIONAL_DATA]]></sync_loss_data>\n"
>  + 
>                         
> "<bit_error_data><![CDATA[CS_BIT_ERR_DIRECTION_IN]]></bit_error_data>\n" + 
>                         "<nrt_alm_err_mesg/>\n" + 
>                         "<imp id=\"line\">\n" + 
>                         
> "<switch_short_name><![CDATA[0000000000-T7---D]]></switch_short_name>\n" + 
>                         "<equipment_number/>\n" + 
>                         
> "<directory_number><![CDATA[0000000000]]></directory_number>\n" + 
>                         "<stroke_number><![CDATA[0]]></stroke_number>\n" + 
>                         "</imp>\n" + 
>                         "</imp>\n" +
>                         
>                         "<imp id=\"alarm_message\">\n" + 
>                         
> "<alarm_condition><![CDATA[CS_POWER_FAILURE_IN_TERMINAL]]></alarm_condition>\n"
>  + 
>                         "<event_time><![CDATA[0]]></event_time>\n" + 
>                         
> "<layer1_data><![CDATA[CS_ALM_NO_LAYER1_ADDITIONAL_DATA]]></layer1_data>\n" + 
>                         
> "<sync_loss_data><![CDATA[CS_NO_SYNC_LOSS_ADDITIONAL_DATA]]></sync_loss_data>\n"
>  + 
>                         
> "<bit_error_data><![CDATA[CS_BIT_ERR_DIRECTION_IN]]></bit_error_data>\n" + 
>                         "<nrt_alm_err_mesg/>\n" + 
>                         "<imp id=\"line\">\n" +
>                         
> "<switch_short_name><![CDATA[00000-T7---D]]></switch_short_name>\n" + 
>                         "<equipment_number/>\n" + 
>                         
> "<directory_number><![CDATA[0000000000]]></directory_number>\n" + 
>                         "<stroke_number><![CDATA[0]]></stroke_number>\n" + 
>                         "</imp>\n" + 
>                         "</imp>\n" + 
>                         "</imp>\n" + 
>                         "</imp>\n";                 
>         OfflinediagnoseauftragVO auftrag = new OfflinediagnoseauftragVO();
>         auftrag.setAuftragValue(wert);
>         ByteArrayOutputStream byteArrayOutputStream = new 
> ByteArrayOutputStream();
>         IBindingFactory bindingFactory = 
> BindingDirectory.getFactory(OfflinediagnoseauftragVO.class);
>         IMarshallingContext marshallingContext = 
> bindingFactory.createMarshallingContext();
>         marshallingContext.marshalDocument(auftrag, "ISO-8859-1", 
> Boolean.TRUE, byteArrayOutputStream);
>        String resutl = byteArrayOutputStream.toString();
> >>>>>>>>>>>>>> EXCEPTION >>>>>>>>>>>>>>>>>
> Exception while marshalling element "Wert"
> java.lang.ArrayIndexOutOfBoundsException: 4096
>       at org.jibx.runtime.impl.ISO88591StreamWriter.writeTextContent(Unknown 
> Source)
>       at org.jibx.runtime.impl.MarshallingContext.element(Unknown Source)
>       at 
> de.test.es.vo.MesswertVO.JiBX_Es_diagnose_binding_marshal_1_0(MesswertVO.java)
>       at de.test.es.vo.JiBX_Es_diagnose_bindingMesswertVO_access.marshal()
>       at 
> de.test.bdb.vo.JiBX_MungeAdapter.JiBX_Es_diagnose_binding_marshal_1_22()
>       at 
> de.test.es.vo.MesssystemVO.JiBX_Es_diagnose_binding_marshal_1_0(MesssystemVO.java)
>       at de.test.es.vo.JiBX_Es_diagnose_bindingMesssystemVO_access.marshal()
>       at 
> de.test.bdb.vo.JiBX_MungeAdapter.JiBX_Es_diagnose_binding_marshal_1_25()
>       at 
> de.test.es.vo.DiagnoseVO.JiBX_Es_diagnose_binding_marshal_1_0(DiagnoseVO.java)
>       at 
> de.test.es.vo.OfflinediagnoseauftragVO.JiBX_Es_diagnose_binding_marshal_1_0(OfflinediagnoseauftragVO.java)
>       at 
> de.test.es.vo.JiBX_Es_diagnose_bindingOfflinediagnoseauftragVO_access.marshal()
>       at 
> de.test.es.vo.OfflinediagnoseauftragVO.marshal(OfflinediagnoseauftragVO.java)
>       at org.jibx.runtime.impl.MarshallingContext.marshalRoot(Unknown Source)
>       at org.jibx.runtime.impl.MarshallingContext.marshalDocument(Unknown 
> Source)
>       at 
> de.test.shared.utils.TkpUtils.marshalOfflinediagnoseauftrag(TkpUtils.java:86)
> If you add the following lines before marshalling all works fine:
>         ...
>         OfflinediagnoseauftragVO auftrag = new OfflinediagnoseauftragVO();
>         auftrag.setAuftragValue(wert);
>         wert = wert.replaceAll("<", "#lt;");
>         wert = wert.replaceAll(">", "#gt;");
>         ...

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
jibx-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-devs

Reply via email to