I'm attaching 2 debug logs:   
   - soap.log: processing of the getPrice request using the ADBClient from 
samples.quickstartadb (modified only to set the required currency attribute 
using StockQuoteService.setCurrency). This returns the expected result.
   - json.log: processing of the getPrice request using a post of the json 
message string {"getPrice":{"@currency":"USD","symbol":"IBM"}} with 
content-type application/json and url 
http://localhost:8080/axis2/services/StockQuoteService/getPrice. This results 
in internal server error due to missing required attribute.

For your reference, I'm also attaching the modified StockQuoteService.wsdl from 
the samples.quickstartadb (adding required attribute 'currency' to the getPrice 
data type).
I also played with various variations of the json message (using "currency" 
instead of "@currency", changing order, or using "_attributes" : 
{"currency":"USD"}. This trial-and-error approach does not work.
I also tried what happens if I change the wsdl to require an attribute in the 
getPriceResponse (instead of in the request), as this will use the 
moshi.JsonFormatter to write the output JSON (I hoped to see what convention 
would be used by moshi when producing the json string). However the attribute 
is simply ignored and not included in the response json.
    Am Dienstag, 18. Februar 2025 um 16:38:57 MEZ hat robertlazarski 
<robertlazar...@gmail.com> Folgendes geschrieben:  
 
 Could you please paste or attach your logs? That may help me understand the 
problem better. I don't have use cases combining XML and JSON in my own 
projects but I know the code pretty well and I can probably help. 

On Mon, Feb 17, 2025 at 5:23 AM Stefan Traud <stefan_tr...@yahoo.com> wrote:

Hi RobertUsing contract first with ADB, I continue to check feasibility to 
amend our existing service with JSON support (based on XML Stream API with 
moshi).
I'm currently struggling with xml types that include attributes. To reproduce 
the issue I have amended the wsdl in the samples.quickstartadb to include an 
attribute in the getPrice element:

 <xs:element name="getPrice">

     <xs:complexType>

         <xs:sequence>
            <xs:element name="symbol"                 nillable="true" 
type="xs:string" />
         </xs:sequence>
        <xs:attribute name="currency"             type="xs:string" 
use="required"/>
     </xs:complexType>

 </xs:element>

My corresponding JSON message should then be something like:
{ "getPrice" : {"@currency": "USD", "symbol": "IBM" }}
However the parse method in the GetPrice ADBBean keeps complaining "Required 
attribute currency is missing"; specifically this call returns null:
reader.getAttributeValue("http://quickstart.samples/xsd";, "currency");
(However it works when using SOAP).
Do I need to define attributes differently in the JSON message?


  

Attachment: json.log
Description: Binary data

Attachment: soap.log
Description: Binary data

Attachment: StockQuoteService.wsdl
Description: Binary data

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@axis.apache.org
For additional commands, e-mail: java-user-h...@axis.apache.org

Reply via email to