[
https://issues.apache.org/jira/browse/AXIS-2697?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mike Hao updated AXIS-2697:
---------------------------
Priority: Blocker (was: Critical)
Update to a blocker, since with this problem, the client code generated using
Axis can only work partially.
> Wrong SOAP message element returned when multiple elements have the same "id"
> value
> -----------------------------------------------------------------------------------
>
> Key: AXIS-2697
> URL: https://issues.apache.org/jira/browse/AXIS-2697
> Project: Axis
> Issue Type: Bug
> Components: Serialization/Deserialization
> Affects Versions: 1.4
> Environment: Window XP, JDK1.5
> Reporter: Mike Hao
> Priority: Blocker
>
> Below is a response SOAP message returned from a third party web service.
> This message was caught by using TCPMon, and it looks pretty good based on
> WSDL. The Java code was generated using WSDL2Java Ant task against Axis 1.4.
> The request was sent to web service using the generated stub code.
> The expected result is Axis should return an object of type ResponseRecord,
> but what I got is ClassCastException. It complains the casting from
> StreetData to ResponseRecord.
> After doing some debugging against the Axis 1.4 source code, I found that the
> reason for this problem is there are three elements with "id" attributes:
> 1. ResponseRecord: id = 1
> 2. StreetData: id = 1
> 3. StreetData: id = 2
> Somehow, Axis uses this id" as the key to Map. After finishing processing,
> the StreetData record with id = 1 overwrite the ResponseRecord data, which
> also has id = 1. Therefore, the actual returned object is StreetData, not the
> expected ResponseRecord.
> There is no any problem with the seconde SOAP message below.
> Thanks,
> Mike
> <?xml version="1.0" encoding="utf-8"?>
> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <soap:Body>
> <doSingleRecordResponse xmlns="urn:mdWebService">
> <doSingleRecordResult xsi:type="ResponseRecord" id="1"
> version="2.10" action="Response" timeout="10" timestamp="09-12-2007"
> transmissionReference="9df70e57-208b-4324-88e1-34bd7a979f5c"
> TimeToProcess="62.4948">
> <CustomerCredentials>
> <CustomerID>114004255</CustomerID>
> </CustomerCredentials>
> <ServiceResult>
> <ErrorCode> </ErrorCode>
> <ErrorDesc>OK;</ErrorDesc>
> </ServiceResult>
> <Address version="2.10">
> <Faults count="0" />
> <Result>
> <ErrorCode> </ErrorCode>
> <ErrorDesc>OK</ErrorDesc>
> <StatusCode>9</StatusCode>
> <StatusDesc>(U.S.) The address was fully
> coded.</StatusDesc>
> </Result>
> <Company />
> <Urbanization>
> <Name />
> </Urbanization>
> <Type>
> <String>Street</String>
> <Code>S</Code>
> </Type>
> <Street>1675 Ursula St</Street>
> <Street2 />
> <Suite />
> <PrivateMailBox />
> <CarrierRoute>C001</CarrierRoute>
> <Lacs> </Lacs>
> <DeliveryPointCode>75</DeliveryPointCode>
> <DeliveryPointCheckDigit>8</DeliveryPointCheckDigit>
> <City>
> <Name>Aurora</Name>
> <Abbreviation>Aurora</Abbreviation>
> </City>
> <County>
> <Name>Adams</Name>
> <Fips>08001</Fips>
> </County>
> <State>
> <Name>Colorado</Name>
> <Abbreviation>CO</Abbreviation>
> </State>
> <Zip>
> <Type> </Type>
> <Zip5>80045</Zip5>
> <Plus4>7402</Plus4>
> </Zip>
> <Parsed>
> <StreetName>Ursula</StreetName>
> <AddressRange>1675</AddressRange>
> <Suffix>St</Suffix>
> <Direction>
> <Post />
> <Pre />
> </Direction>
> <Suite>
> <Name />
> <Range />
> </Suite>
> <PrivateMailBox>
> <Name />
> <Range />
> </PrivateMailBox>
> <Garbage />
> </Parsed>
> <Country>
> <Abbreviation>US</Abbreviation>
> <Name>United States of America</Name>
> </Country>
> </Address>
> <StreetData count="2" version="2.10">
> <Faults />
> <Result>
> <ErrorCode> </ErrorCode>
> <ErrorDesc>OK</ErrorDesc>
> </Result>
> <Record id="1">
> <Company />
> <Urbanization>
> <Code />
> </Urbanization>
> <AddressType>S</AddressType>
> <BaseAlternateIndicator>B</BaseAlternateIndicator>
> <Street>
> <Name>URSULA</Name>
> <Suffix>CT</Suffix>
> <Suite>
> <Name />
> <High />
> <Low />
> <OddEven> </OddEven>
> </Suite>
> </Street>
> <CarrierRoute>C034</CarrierRoute>
> <CongressionalDistrict>
> <Code>07</Code>
> </CongressionalDistrict>
> <County>
> <Fips>08005</Fips>
> </County>
> <Lacs> </Lacs>
> <LastLineNumber>Z11053</LastLineNumber>
> <Direction>
> <Post />
> <Pre>S</Pre>
> </Direction>
> <PrimaryRange>
> <High>0000001699</High>
> <Low>0000001600</Low>
> <OddEven>B</OddEven>
> </PrimaryRange>
> <Zip>
> <Zip5>80012</Zip5>
> <Plus4>
> <High>5347</High>
> <Low>5347</Low>
> </Plus4>
> </Zip>
> </Record>
> <Record id="2">
> <Company />
> <Urbanization>
> <Code />
> </Urbanization>
> <AddressType>S</AddressType>
> <BaseAlternateIndicator>B</BaseAlternateIndicator>
> <Street>
> <Name>URSULA</Name>
> <Suffix>ST</Suffix>
> <Suite>
> <Name />
> <High />
> <Low />
> <OddEven> </OddEven>
> </Suite>
> </Street>
> <CarrierRoute>C001</CarrierRoute>
> <CongressionalDistrict>
> <Code>07</Code>
> </CongressionalDistrict>
> <County>
> <Fips>08001</Fips>
> </County>
> <Lacs> </Lacs>
> <LastLineNumber>Z11053</LastLineNumber>
> <Direction>
> <Post />
> <Pre />
> </Direction>
> <PrimaryRange>
> <High>0000001699</High>
> <Low>0000001601</Low>
> <OddEven>O</OddEven>
> </PrimaryRange>
> <Zip>
> <Zip5>80045</Zip5>
> <Plus4>
> <High>7402</High>
> <Low>7402</Low>
> </Plus4>
> </Zip>
> </Record>
> </StreetData>
> <Telephone>
> <Result />
> </Telephone>
> <Name>
> <Result />
> </Name>
> </doSingleRecordResult>
> </doSingleRecordResponse>
> </soap:Body>
> </soap:Envelope>
> Axis working fine with this response SOAP message:
> ?xml version="1.0" encoding="utf-8"?>
> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <soap:Body>
> <doSingleRecordResponse xmlns="urn:mdWebService">
> <doSingleRecordResult xsi:type="ResponseRecord" id="1"
> version="2.10" action="Response" timeout="10" timestamp="09-12-2007"
> transmissionReference="c1bf430e-614f-4404-851e-fa01902a0a65"
> TimeToProcess="15.6248">
> <CustomerCredentials>
> <CustomerID>114004255</CustomerID>
> </CustomerCredentials>
> <ServiceResult>
> <ErrorCode>900</ErrorCode>
> <ErrorDesc>OK;GENERAL_ERROR::Address was not coded.
> #1;</ErrorDesc>
> </ServiceResult>
> <Address version="2.10">
> <Faults count="0" />
> <Result>
> <ErrorCode>R</ErrorCode>
> <ErrorDesc>Range Error</ErrorDesc>
> <StatusCode>X</StatusCode>
> <StatusDesc>Address was not coded.</StatusDesc>
> </Result>
> <Company />
> <Urbanization>
> <Name />
> </Urbanization>
> <Type>
> <String />
> <Code> </Code>
> </Type>
> <Street>RIVER ROAD</Street>
> <Street2 />
> <Suite />
> <PrivateMailBox />
> <CarrierRoute />
> <Lacs> </Lacs>
> <DeliveryPointCode />
> <DeliveryPointCheckDigit> </DeliveryPointCheckDigit>
> <City>
> <Name>North Bergen</Name>
> <Abbreviation>North Bergen</Abbreviation>
> </City>
> <County>
> <Name>Hudson</Name>
> <Fips>34017</Fips>
> </County>
> <State>
> <Name>New Jersey</Name>
> <Abbreviation>NJ</Abbreviation>
> </State>
> <Zip>
> <Type> </Type>
> <Zip5>07047</Zip5>
> <Plus4 />
> </Zip>
> <Parsed>
> <StreetName>River</StreetName>
> <AddressRange />
> <Suffix>Rd</Suffix>
> <Direction>
> <Post />
> <Pre />
> </Direction>
> <Suite>
> <Name />
> <Range />
> </Suite>
> <PrivateMailBox>
> <Name />
> <Range />
> </PrivateMailBox>
> <Garbage />
> </Parsed>
> <Country>
> <Abbreviation>US</Abbreviation>
> <Name>United States of America</Name>
> </Country>
> </Address>
> <Telephone>
> <Result />
> </Telephone>
> <Name>
> <Result />
> </Name>
> </doSingleRecordResult>
> </doSingleRecordResponse>
> </soap:Body>
> </soap:Envelope>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]