| Author | Message | 
		
		  | raghubegur | 
			  
				|  Posted: Mon Aug 08, 2005 11:16 pm    Post subject: TDS General Error |   |  | 
		
		  | Apprentice
 
 
 Joined: 15 Jul 2002Posts: 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 2004Posts: 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 2002Posts: 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 2004Posts: 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 2002Posts: 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 2004Posts: 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 2002Posts: 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 2003Posts: 5543
 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 |  | 
		
		  |  | 
		
		  |  |