You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Mike Hao (JIRA)" <ax...@ws.apache.org> on 2007/09/12 16:13:32 UTC

[jira] Created: (AXIS-2697) Wrong SOAP message element returned when multiple elements have the same "id" value

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: Critical


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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Updated: (AXIS-2697) Wrong SOAP message element returned when multiple elements have the same "id" value

Posted by "Mike Hao (JIRA)" <ax...@ws.apache.org>.
     [ 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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org