Unparse Error: Expected element end event for {}ift, but received element start event for (invalid) {}com.travelport.car.at.cdcp.model.edifact.availrule.onep.response.Ift.

27 views
Skip to first unread message

Serena Angelucci

unread,
Jan 15, 2025, 3:27:59 AMJan 15
to Smooks Users
Hi all, 
I'm trying to define an array list to bind a collection, but I receive this error:
Caused by: org.apache.daffodil.japi.DaffodilUnparseErrorSAXException: Unparse Error: Expected element end event for {}EDIFACTCarAvailRuleResponse1P, but received element start event for (invalid) {}iftList.

This is part of my smooks-config.xml file: 

<jb:bean beanId="EDIFACTCarAvailRuleResponse1P" class="com.travelport.car.at.cdcp.model.edifact.availrule.onep.response.EDIFACTCarAvailRuleResponse1P" createOnElement="EDIFACTCarAvailRuleResponse1P">

<jb:wiring property="uib" beanIdRef="uib" />

<jb:wiring property="uih" beanIdRef="uih" />

<jb:wiring property="iftList" beanIdRef="iftList" />


<jb:bean beanId="iftList" class="java.util.ArrayList" createOnElement="EDIFACTCarAvailRuleResponse1P">

<jb:wiring beanIdRef="ift" />

</jb:bean>


<jb:bean beanId="ift" class="com.travelport.car.at.cdcp.model.edifact.availrule.onep.response.Ift" createOnElement="ift">

<jb:value property="freeText" data="#/freeText" default="null"/>

</jb:bean>


where I defined:

public class EDIFACTCarAvailRuleResponse1P {


private Uib uib;

private Uih uih;

private List<Ift> iftList;


the xml file part that I'm trying to parse is:


<EDIFACTCarAvailRuleResponse1P>

<uib>

<syntaxIdentifier>

<syntaxIdentifier>UNOA</syntaxIdentifier>

<syntaxVersionNumber>4</syntaxVersionNumber>

</syntaxIdentifier>

<uibDialogueReference>

<initiatorControlReference>020605</initiatorControlReference>

<responderControlReference>020605</responderControlReference>

</uibDialogueReference>

<interchangeRecipient>

<interchangeRecipientIdentification>FX

</interchangeRecipientIdentification>

</interchangeRecipient>

<interchangeSender>

<interchangeSenderIdentification>1P</interchangeSenderIdentification>

</interchangeSender>

<dateTimeOfInitiationResponse>

<eventDate>241206</eventDate>

<eventTime>1447</eventTime>

</dateTimeOfInitiationResponse>

</uib>

<uih>

<interactiveMessageIdentifier>

<messageType>AVLRSP</messageType>

<messageVersionNumber>D</messageVersionNumber>

<messageReleaseNumber>AVLRSP</messageReleaseNumber>

<controllingAgency>UN</controllingAgency>

</interactiveMessageIdentifier>

<uihDialogueReference>

<initiatorControlReference>020605</initiatorControlReference>

<responderControlReference>020605</responderControlReference>

</uihDialogueReference>

<statusOfTransfer>

<senderSequenceNumber>1</senderSequenceNumber>

</statusOfTransfer>

<dateTimeOfInitiation />

</uih>

<iftList>

<ift>

<freeTextQualification>

<textSubjectQualifier>2</textSubjectQualifier>

<informationTypeIdentification>4</informationTypeIdentification>

</freeTextQualification>

<freeText>THE REQUESTED RATE (FRC31) DOES NOT EXIST OR CAN NOT BE APPLIED</freeText>

</ift>

</iftList>

</EDIFACTCarAvailRuleResponse1P>


and the dfdl file is:


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:ibmEdiFmt="http://www.ibm.com/dfdl/EDI/Format">

    <xsd:import namespace="http://www.ibm.com/dfdl/EDI/Format" schemaLocation="/EDIFACT-Common/IBM_EDI_Format.dfdl.xsd"/>

    <xsd:annotation>
        <xsd:appinfo source="http://www.ogf.org/dfdl/">
            <dfdl:format ref="ibmEdiFmt:EDIFormat"/>
        </xsd:appinfo>
    </xsd:annotation>

    <xsd:element name="EDIFACTCarAvailRuleResponse1P">
        <xsd:complexType>
            <xsd:sequence dfdl:initiatedContent="yes">
                <xsd:element dfdl:initiator="UIB" name="uib" minOccurs="1" maxOccurs="1" dfdl:ref="ibmEdiFmt:EDISegmentFormat">
                    <xsd:complexType>
                        <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                            <xsd:element name="syntaxIdentifier" minOccurs="1" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
                                        <xsd:element name="syntaxIdentifier" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                        <xsd:element name="syntaxVersionNumber" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>

                            <xsd:element name="uibDialogueReference" minOccurs="0" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
                                        <xsd:element name="initiatorControlReference" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                        <xsd:element name="initiatorReferenceIdentification" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                        <xsd:element name="controllingAgencyCoded" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                        <xsd:element name="responderControlReference" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>

                            <xsd:element name="transactionReference" type="xsd:string" minOccurs="0" maxOccurs="1"/>

                            <xsd:element name="scenarioIdentification" type="xsd:string" minOccurs="0" maxOccurs="1"/>

                            <xsd:element name="dialogueIdentification" type="xsd:string" minOccurs="0" maxOccurs="1"/>

                            <xsd:element name="interchangeRecipient" minOccurs="0" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
                                        <xsd:element name="interchangeRecipientIdentification" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>

                            <xsd:element name="interchangeSender" minOccurs="0" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
                                        <xsd:element name="interchangeSenderIdentification" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>

                            <xsd:element name="dateTimeOfInitiationResponse" minOccurs="0" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
                                        <xsd:element name="eventDate" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                        <xsd:element name="eventTime" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>


                <xsd:element dfdl:initiator="UIH" name="uih" minOccurs="1" maxOccurs="1" dfdl:ref="ibmEdiFmt:EDISegmentFormat">
                    <xsd:complexType>
                        <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">

                            <xsd:element name="interactiveMessageIdentifier" minOccurs="1" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
                                        <xsd:element name="messageType" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                        <xsd:element name="messageVersionNumber" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                        <xsd:element name="messageReleaseNumber" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                        <xsd:element name="messageTypeSubFunctionIdentification" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                        <xsd:element name="controllingAgency" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>

                            <xsd:element name="interactiveMessageReferenceNumber" type="xsd:string" minOccurs="0" maxOccurs="1"/>

                            <xsd:element name="uihDialogueReference" minOccurs="0" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
                                        <xsd:element name="initiatorControlReference" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                                        <xsd:element name="initiatorReferenceIdentification" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                        <xsd:element name="controllingAgencyCode" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                        <xsd:element name="responderControlReference" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>

                            <xsd:element name="statusOfTransfer" minOccurs="0" maxOccurs="1" >
                                <xsd:complexType>
                                    <xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
                                        <xsd:element name="senderSequenceNumber" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                        <xsd:element name="transferPositionCode" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>

                            <xsd:element name="dateTimeOfInitiation" minOccurs="0" maxOccurs="1">
                                <xsd:complexType>
                                    <xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">
                                        <xsd:element name="eventDate" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                        <xsd:element name="eventTime" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>


                              <xsd:element dfdl:initiator="IFT" name="ift" minOccurs="0" maxOccurs="9" dfdl:ref="ibmEdiFmt:EDISegmentFormat">
                    <xsd:complexType>
                        <xsd:sequence dfdl:ref="ibmEdiFmt:EDISegmentSequenceFormat">
                            <xsd:element name="freeText" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>


Could you please help me to understand where is the error?

I suppose that is related to the smooks-config.xml file, is that correct?

When I got this error, I didn't yet invoke the .dfdl file, right?


Thanks in advance for your help,

Serena

Claude Mamo

unread,
Jan 15, 2025, 3:40:01 AMJan 15
to smook...@googlegroups.com
the xml file part that I'm trying to parse is:


Do you mean unparse?

 
When I got this error, I didn't yet invoke the .dfdl file, right?

It's Daffodil exception so definitely it's happening while DFDL unparsing. The latest version of Smooks improves exception reporting such that you should have an easier time pinpointing which visitor is throwing the exception. Have you tried troubleshooting it with the HtmlReportGenertor?

Claude

--
You received this message because you are subscribed to the Google Groups "Smooks Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smooks-user...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/smooks-user/dc099a9d-3ff3-42c0-9693-9bbc83a95967n%40googlegroups.com.

Serena Angelucci

unread,
Jan 16, 2025, 1:31:22 PMJan 16
to smook...@googlegroups.com
Hi Claude, 

yes I was referring to unparse...finally I was able to solve the issue, but now I have another problem...

I should map a list of String, this is my root object:

public class RuleText {


private String conditionCoded;

private String informationType;

@XStreamAlias("freeTextForRule")

private List<String> freeTextForRule;

this is my dfdl file:

<xsd:element name="ruleText" minOccurs="0" maxOccurs="1">

<xsd:complexType>

<xsd:sequence dfdl:ref="ibmEdiFmt:EDICompositeSequenceFormat">

<xsd:element name="conditionCoded" type="xsd:string" minOccurs="1" maxOccurs="1"/>

<xsd:element name="informationType" type="xsd:string" minOccurs="0" maxOccurs="1"/>

<xsd:element name="freeTextForRule" type="xsd:string" minOccurs="0" maxOccurs="20"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>


and this is my smooks-config.xml:

<jb:bean beanId="ruleText" class="com.travelport.car.at.cdcp.model.edifact.availrule.onep.response.field.RuleText" createOnElement="rul/ruleText">

<jb:value property="conditionCoded" data="#/conditionCoded"/>

<jb:value property="informationType" data="#/informationType" />

<jb:wiring property="freeTextForRule" beanIdRef="freeTextForRule_List" />

</jb:bean>



<jb:bean beanId="freeTextForRule_List" class="java.util.ArrayList" createOnElement="ruleText">

<jb:wiring beanIdRef="freeTextForRuleValue" />

</jb:bean>

<jb:bean beanId="freeTextForRuleValue" class="java.lang.String" createOnElement="ruleText">

<jb:value property="value" data="#/value" />

</jb:bean>


how should I define my bean freeTextForRuleValue?


Thanks in advance for your help,


Serena

Claude Mamo

unread,
Jan 17, 2025, 3:54:12 AMJan 17
to smook...@googlegroups.com

Mantra

unread,
Jan 17, 2025, 4:02:33 AMJan 17
to smook...@googlegroups.com
Hi Claude,

This is an unparsing, do you think the JavaBean cartridge mapping will help? I thought the JavaBean Mapping is for parsing but dont work for unparsing. Please correct me if I'm wrong. I think it know issue to unparse a java class model object to EDI for any List. 


Regards,
Mantra

Claude

unread,
Jan 20, 2025, 3:41:56 AMJan 20
to Smooks Users
Oh yeah, now I'm not sure. One cannot "unparse" a Java bean to EDI, well, not directly at least.

Serena, could you clarify what the problem is?
Reply all
Reply to author
Forward
0 new messages