Author |
Message
|
raghubegur |
Posted: Mon Aug 08, 2005 11:16 pm Post subject: TDS General Error |
|
|
Apprentice
Joined: 15 Jul 2002 Posts: 45
|
I have the following TDS Msg Set :
<xsd:complexType name="ApplicationData">
<xsd:annotation>
<xsd:appinfo source="WMQI_APPINFO">
<tdsStructRep
dataElementSeparation="AllElementsDelimited"
delimiter="~" groupIndicator="" groupTerminator="" messageSetDefaultRep="TDS1"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element ref="Group_BU"/>
<xsd:element ref="Group_Id"/>
<xsd:element ref="Origin_Id"/>
<xsd:element ref="Control_Amt"/>
<xsd:element ref="Control_Currency"/>
<xsd:element ref="Control_Cnt"/>
<xsd:element ref="Group_Type"/>
<xsd:element ref="Grp_Post_Now"/>
<xsd:sequence>
<xsd:annotation>
<xsd:appinfo source="WMQI_APPINFO">
<tdsStructRep
dataElementSeparation="AllElementsDelimited"
delimiter="~" groupIndicator="["
groupTerminator="]"
messageSetDefaultRep="TDS1" suppressAbsentElementDelimiters="EndOfType"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:element maxOccurs="100" name="Pending_Item" type="Pending_Item"/>
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Pending_Item">
<xsd:annotation>
<xsd:appinfo source="WMQI_APPINFO">
<tdsStructRep
dataElementSeparation="AllElementsDelimited"
delimiter="~" messageSetDefaultRep="TDS1"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element ref="Cust_Id"/>
<xsd:element ref="Entry_Amt"/>
<xsd:element minOccurs="1" ref="Entry_Currency"/>
<xsd:element ref="Entry_Type"/>
<xsd:element ref="Entry_Reason"/>
<xsd:element ref="Item"/>
<xsd:sequence>
<xsd:annotation>
<xsd:appinfo source="WMQI_APPINFO">
<tdsStructRep
dataElementSeparation="AllElementsDelimited"
delimiter="~" groupIndicator="{"
groupTerminator="}" messageSetDefaultRep="TDS1"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:element maxOccurs="100" name="Pending_Tax" type="Pending_Tax">
<xsd:annotation>
<xsd:appinfo source="WMQI_APPINFO">
<tdsElemRep messageSetDefaultRep="TDS1" precision="-1"/>
<tdsInclRep messageSetDefaultRep="TDS1" repeatingElementDelimiter="~"/>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
When my input message is ( the outer group occurs only once ) :
PACCRE~NA~PORT~~~Extra1~Extra2~Extra3~1234567890~TKMQL~NEXT~OBILL~2000~INR~1~B~Y~[DL01A~2000~INR~SDQUA~INV~TESTTEST~{2000~1000~}]
The message is parsed successfully.
When my input message is ( the outer group occurs 2 times ) :
PACCRE~NA~PORT~~~Extra1~Extra2~Extra3~1234567890~TKMQL~NEXT~OBILL~2000~INR~1~B~Y~[DL01A~2000~INR~SDQUA~INV~TESTTEST~{2000~1000~}~DL01A~2000~INR~SDQUA~INV~TESTTEST~{2000~1000~}~]
the following exception is thown :
<ParserException>
<File>/build/S500_P/src/cpi/pwf/tds/tdsworker.cpp</File>
<Line>318</Line>
<Function>CTDSWorker::hasNext</Function>
<Type></Type>
<Name></Name>
<Label></Label>
<Text>TDS General Error</Text>
<Catalog>BIPv500</Catalog>
<Severity>1</Severity>
<Number>5421</Number>
<Insert>
<Type>5</Type>
<Text>POR_ACC_RCVBLS_PS</Text>
</Insert>
<Insert>
<Type>5</Type>
<Text>/POR_ACC_RCVBLS_PS</Text>
</Insert>
<Insert>
<Type>2</Type>
<Text>129</Text>
</Insert>
<ParserException>
<File>/build/S500_P/src/MTI/MTIforBroker/MtiImbParser2/MtiImbFIHandler.cpp</File>
<Line>597</Line>
<Function>MtiImbFIHandler::endMessageContent</Function>
<Type></Type>
<Name></Name>
<Label></Label>
<Text>MTI. Not all the buffer was used when reading message</Text>
<Catalog>BIPv500</Catalog>
<Severity>3</Severity>
<Number>5288</Number>
<Insert>
<Type>5</Type>
<Text></Text>
</Insert>
</ParserException>
</ParserException>
</RecoverableException>
</RecoverableException>
</RecoverableException>
</ExceptionList>
</Error>
While debugging, I found that the first outer group is parsed completely and the second outer group parsing is failing.
From some of the earlier posts, I understand that 'MTI. Not all the buffer was used when reading message' happens when the message is parsed successfully but the bitstream has somemore information.
Can someone tell me the why second occurrence of the outer group is getting treated as extra info after parsing ?
It should have been parsed as a repeating group. _________________ Cheers
Raghu |
|
Back to top |
|
 |
elvis_gn |
Posted: Tue Aug 09, 2005 12:42 am Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Hi raghu,
I'm finding it very difficult to understand ur message set...If you could simply explain what ur message is,its complex types and the group indicator,terminator and delimiter for each, it would be easier to help you.
Also should you have a "~" at the end of sample 2....Why dont you use some different delimiters for each group....Just a suggestion
Regards. |
|
Back to top |
|
 |
raghubegur |
Posted: Tue Aug 09, 2005 1:16 am Post subject: |
|
|
Apprentice
Joined: 15 Jul 2002 Posts: 45
|
My msg set has this structure :
data1~data2~data3~[data4~data5~data6~{data7}]
The outer group has the group indicator = '[' and group terminator = ']' and all the elements within the group are delimited by '~'
The inner group has the group indicator = '{' and group terminator = '}' and it has only one data element. ( this element can repeat )
Both the groups have min occurence = 1 and max occurrence = 100
All the data elements in both the groups are mandatory( min = 1, max = 1 ).
Assuming the outer group occurs only once and within this the inner group also occurs only once then a sample msg would be :
data1~data2~data3~[Outer1a~Outer1b~Outer1c~{Inner1}]
This is getting successfully parsed.
Assuming the outer group occurs TWICE and within this the inner group occurs only once then a sample msg would be :
data1~data2~data3~[Outer1a~Outer1b~Outer1c~{Inner1}Outer2a~Outer2b~Outer2c~{Inner1}]]
This is failing with the following error :
<ParserException>
<File>/build/S500_P/src/cpi/pwf/tds/tdsworker.cpp</File>
<Line>318</Line>
<Function>CTDSWorker::hasNext</Function>
<Type></Type>
<Name></Name>
<Label></Label>
<Text>TDS General Error</Text>
<Catalog>BIPv500</Catalog>
<Severity>1</Severity>
<Number>5421</Number>
<Insert>
<Type>5</Type>
<Text>POR_ACC_RCVBLS_PS</Text>
</Insert>
<Insert>
<Type>5</Type>
<Text>/POR_ACC_RCVBLS_PS</Text>
</Insert>
<Insert>
<Type>2</Type>
<Text>128</Text>
</Insert>
<ParserException>
<File>/build/S500_P/src/MTI/MTIforBroker/MtiImbParser2/MtiImbFIHandler.cpp</File>
<Line>597</Line>
<Function>MtiImbFIHandler::endMessageContent</Function>
<Type></Type>
<Name></Name>
<Label></Label>
<Text>MTI. Not all the buffer was used when reading message</Text>
<Catalog>BIPv500</Catalog>
<Severity>3</Severity>
<Number>5288</Number>
<Insert>
<Type>5</Type>
<Text></Text>
</Insert>
</ParserException>
</ParserException>
</RecoverableException>
</ExceptionList>
</Error> _________________ Cheers
Raghu |
|
Back to top |
|
 |
elvis_gn |
Posted: Tue Aug 09, 2005 1:54 am Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
What is POR_ACC_RCVBLS_PS in your message...Is it a field...if it is then you should check coz the problem is most probably with it.
Have you forgotten to add the "~" between Inner1}Outer2a......???
U should not be having two "]" at the end of the message.......
The Inner group has repeating element, so U should be having a delimiter for it also ..... |
|
Back to top |
|
 |
raghubegur |
Posted: Tue Aug 09, 2005 2:38 am Post subject: |
|
|
Apprentice
Joined: 15 Jul 2002 Posts: 45
|
Elvis,
I am sorry that I did not post correct data earlier.
I used the following message
data1~data2~data3~[Outer1a~Outer1b~Outer1c~{Inner1~}~Outer2a~Outer2b~Outer2c~{Inner1~}]
Only the first outer group is getting parsed completely and the second group is getting lost. When I ran the flow in debug mode, I saw the following error attached as the last element of the message.
" ImbRecoverableException caught from worker->parseNext. "
No exception was actually thrown. The message went to the output node with only the first outer group information. _________________ Cheers
Raghu |
|
Back to top |
|
 |
elvis_gn |
Posted: Tue Aug 09, 2005 2:47 am Post subject: |
|
|
 Padawan
Joined: 08 Oct 2004 Posts: 1905 Location: Dubai
|
Let me guess, your getting the field Inner1 and then u get the error u mentioned....
The error is becoz the parser could not map the input correctly...I think there should not be a "~" after the Inner1.....
Try running the data without that and check....
If it still does not work you can send me the set at elvis.ninan@patni.com and i'll have a look if you want....
Regards. |
|
Back to top |
|
 |
raghubegur |
Posted: Tue Aug 09, 2005 3:42 am Post subject: |
|
|
Apprentice
Joined: 15 Jul 2002 Posts: 45
|
Elvis,
I changed the inner group's max occurrence to 1 ( it was earlier 100 ).
Then I submitted this message with 2 outer groups.
data1~data2~data3~[Outer1a~Outer1b~Outer1c~{Inner1}~Outer2a~Outer2b~Outer2c~{Inner1}]
It works for any number of outer groups.
But my requirement is that the inner group should have a max occurrence = 100. _________________ Cheers
Raghu |
|
Back to top |
|
 |
kimbert |
Posted: Tue Aug 09, 2005 5:30 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Why the ~? Is it the Repeating Element Delimiter for the inner group?
Whatever, the TDS parser should not need this trailing delimiter. Try removing it and see whether the parsing starts to work. |
|
Back to top |
|
 |
|