Yes I know. It needs to be fixed in Axis2. Can you please open a JIRA report?
Andreas On Mon, Jun 22, 2009 at 20:57, Boris Klug<bo...@klg.de> wrote: > Hi! > > Its not my code, its the code generated by wsdl2java - so what can I do? > > Am 22.06.2009 um 16:51 schrieb Andreas Veithen: > >> Anyway, the code is wrong and should use getElementText instead of >> getText to make sure that it gives the expected result even if the >> underlying parser is not coalescing. This would also solve the problem >> with empty text (getElementText returns an empty string in that case) >> and I think that is what the generated code does. Note that your last >> comment implies that anyType handling uses totally different code than >> the processing of typed elements. This is really strange! >> >> Andreas >> >> On Mon, Jun 22, 2009 at 14:14, Boris Klug<bo...@klg.de> wrote: >>> >>> Hi! >>> >>> I created a wsdl which contains a attribute/value pair where the >>> value is definied as xsd:anyType: >>> >>> <xs:complexType name="ZAttributeValue"> >>> <xs:sequence> >>> <xs:element name="name" type="xs:string" /> >>> <xs:element name="displayName" nillable="true" type="xs:string" /> >>> <xs:element name="value" nillable="true" type="xs:anyType" /> >>> <xs:element name="className" nillable="true" type="xs:string" /> >>> </xs:sequence> >>> </xs:complexType> >>> >>> Now I used wsdl2java to create client and server code using adb data >>> binding. >>> >>> When value is "" (=empty string), the client throws this exception: >>> >>> Exception in thread "main" org.apache.axis2.AxisFault: Current state >>> END_ELEMENT is not among the statesCHARACTERS, COMMENT, CDATA, SPACE, >>> ENTITY_REFERENCE, DTD valid for getText() >>> at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) >>> at >>> de.mypackage.ZederbasicServiceStub.fromOM(ZederbasicServiceStub.java:8846) >>> at >>> de.mypackage.ZederbasicServiceStub.getZEDERObjects(ZederbasicServiceStub.java:1028) >>> at ZederBasicClientTest.main(ZederBasicClientTest.java:36) >>> Caused by: java.lang.IllegalStateException: Current state END_ELEMENT is >>> not among the statesCHARACTERS, COMMENT, CDATA, SPACE, ENTITY_REFERENCE, DTD >>> valid for getText() >>> at >>> com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getText(XMLStreamReaderImpl.java:1052) >>> at >>> org.apache.axiom.om.impl.llom.OMStAXWrapper.getText(OMStAXWrapper.java:418) >>> at >>> org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(ConverterUtil.java:1528) >>> at de.debeka.repository.zws >>> >>> In this case, the soap message looks like this: >>> >>> <attributes xmlns="http://model.zws2.boq.debeka.gen/xsd"> >>> <name>HINWEIS</name> >>> <displayName>Hinweis</displayName> >>> <value xmlns:s45="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns:s46="http://www.w3.org/2001/XMLSchema" s45:type="s46:string"> >>> </value> >>> <className>java.lang.String</className> >>> </attributes> >>> >>> When value is set to null, I get this exception: >>> >>> Exception in thread "main" org.apache.axis2.AxisFault: >>> org.apache.axis2.databinding.ADBException: Unexpected subelement value >>> at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) >>> at >>> de.mypackage.ZederbasicServiceStub.fromOM(ZederbasicServiceStub.java:8846) >>> at >>> de.mypackage.ZederbasicServiceStub.getZEDERObjects(ZederbasicServiceStub.java:1028) >>> at ZederBasicClientTest.main(ZederBasicClientTest.java:36) >>> Caused by: java.lang.Exception: >>> org.apache.axis2.databinding.ADBException: Unexpected subelement value >>> at >>> de.mypackage.ZederbasicServiceStub$ZAttributeValue$Factory.parse(ZederbasicServiceStub.java:2583) >>> at >>> de.mypackage.ZederbasicServiceStub$ZDataObject$Factory.parse(ZederbasicServiceStub.java:7596) >>> at >>> de.mypackage.ZederbasicServiceStub$GetZEDERObjectsResponse$Factory.parse(ZederbasicServiceStub.java:4833) >>> at >>> de.mypackage.ZederbasicServiceStub.fromOM(ZederbasicServiceStub.java:8833) >>> ... 2 more >>> Caused by: org.apache.axis2.databinding.ADBException: Unexpected >>> subelement value >>> at >>> de.mypackage.ZederbasicServiceStub$ZAttributeValue$Factory.parse(ZederbasicServiceStub.java:2569) >>> ... 5 more >>> >>> The soap message is: >>> >>> <attributes xmlns="http://model.zws2.boq.debeka.gen/xsd"> >>> <name>KLASSE</name> >>> <displayName xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xsi:nil="1" /> >>> <value xmlns:s29="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns:s30="http://www.w3.org/2001/XMLSchema" >>> s29:type="s30:string">C_Jobplan</value> >>> <className>java.lang.Integer</className> >>> </attributes> >>> >>> >>> I tried Axis2 1.4.1 and the new 1.5 version. The whole problem with nil >>> and >>> empty string values only exists with anyType, not if the element is >>> declared >>> as string or something else. >>> >>> I really need anyType here. >>> >>> Thank you for your help in advance. >>> >>> >>> -- >>> Boris Klug, Koblenz, bo...@klg.de, Fax: 0261-1334249 >>> > > -- > Boris Klug, bo...@klg.de > > > >