I was able to follow your examples with the currency attribute and get some results but it seems like you have some service.xml and axis2.xml configurations I am unsure about - could you please post them?
With the service.xml and axis2.xml largely from the spring boot demo I conjured up with the current state of git master - the one difference is you are using RequestURIBasedDispatcher instead of the new class JSONBasedDefaultDispatcher which works, so I used that too - I am sending this: {"getPrice":[{"arg0":{"currency":USD,"symbol":IBM}}]} And getting this response: {"response":{"local_return":42.0}} The problem is the skeleton is receiving null values for the currency and symbol for some reason. About the MoshiXMLStreamReader question - I don't see that condition being entered during my debugging. On Fri, Feb 21, 2025 at 12:52 AM Stefan Traud <stefan_tr...@yahoo.com> wrote: > In between I have also looked into the source of > org.apache.axis2.json.moshi.MoshiXMLStreamReader and I find > > public int getAttributeCount() { > > if (isStartElement()) { > > return 0; *//* *don't support attributes on tags in JSON convention* > > } else { > > throw new IllegalStateException("Only valid on START_ELEMENT state"); > > } > > } > > > public QName getAttributeName(int index) { > > throw new UnsupportedOperationException("Method is not implemented"); > } > > Attributes get ignored (attribute count will be returned as 0). It appears > that I cannot use the current XML Stream API based approach togehter with > ADB in my case, at least not without substantial changes in the used > xml-schemas. > > > Am Mittwoch, 19. Februar 2025 um 09:26:07 MEZ hat Stefan Traud < > stefan_tr...@yahoo.com> Folgendes geschrieben: > > > 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 Robert > Using 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? > > >