Looks close, but you need to give the actual namespace rather than the prefix in the key and the values are the new element names. So like this: <entry key="{http://xxx.com/common/general/2010/1/1/platformServiceResult}id"; value="id"/>

  - Dennis


On 05/11/2012 12:00 PM, Steve Kim wrote:
Dennis, I really appreciate that you direct me to this direction. Would it be the right rule to add to spring.xml?
Thanks,
  <beanid="transformFeature"class="org.apache.cxf.feature.StaxTransformFeature">         
<propertyname="inTransformElements">                  <entrykey="{ns2}id"value="{ns2}id=id"/>
                <entrykey="{ns2}status"value="{ns2}status=status"/>
                <entrykey="{ns2}systemId"value="{ns2}systemId=systemId"/>           </map>       
</property></bean>           <map>
If I want to transform from
  <platformServiceResult>

         <ns2:status>SUCCESS</ns2:status>
         <ns2:systemId>ebilprodapp103</ns2:systemId>
to
          <id>9faa0d0e-1932-4064-95ec-6a0e10da4c60</id>
          <status>SUCCESS</status>
          <systemId>ebilprodapp103</systemId>
  </platformServiceResult>

________________________________
From: Dennis Sosnoski<[email protected]>
To: [email protected]
Sent: Friday, May 11, 2012 8:25 AM
Subject: Re: [javax.xml.bind.UnmarshalException: unexpected element

You should be able to use the Transformation feature to modify the response 
before it's passed to JAXB: 
http://cxf.apache.org/docs/transformationfeature.html

   - Dennis


On 05/11/2012 11:17 AM, Steve Kim wrote:
That's also my findings.  However, this response is from 3rd party.  3rd party 
won't be able to update within a short period of time.  Only options at this 
point is that we have to do something about it.  Someone recommended to 
manually update package-info.java to include as below:
However, this will cause not to put the name space on the request, 3rd party 
can not use the request.  I'm using cxf2.4.6 with jaxb-impl.2.1.7.  Is there 
any workaround so that I can resolve this?
   @
elementFormDefault=XmlNsForm.javax.xml.bind.annotation.XmlSchema(namespace = 
"http://xxx.com/binders/general/2010/1/1";, QUALIFIED)
________________________________
From: Dennis Sosnoski<[email protected]>
To: [email protected]
Sent: Saturday, May 12, 2012 8:02 AM
Subject: Re: [javax.xml.bind.UnmarshalException: unexpected element

Hi Steve,

The schema and message are somewhat garbled, but judging from the error message 
the problem is that the response has a namespace for the id element (and 
presumably others) while your code expects this not to have a namespace. It 
looks like the schema matches your code, since it does not specify 
elementFormDefault='qualified' and without this child elements do not use 
namespaces.

     - Dennis

Dennis M. Sosnoski
Java SOA and Web Services Consulting<http://www.sosnoski.com/consult.html>
CXF and Web Services Security Training<http://www.sosnoski.com/training.html>
Web Services Jump-Start<http://www.sosnoski.com/jumpstart.html>


On 05/11/2012 10:45 AM, Steve Kim wrote:
I'm getting the exception while it's parsing the response from 3rd party as 
below:  Can someone please help as this is very critical failure on our service?
     Thanks for your time
     org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for 
{http://xxx.com/binders/general/2010/1/1}BinderServiceService#{http://xxxx.com/binders/general/2010/1/1}processRequest
 has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element 
(uri:"http://xxx.com/common/general/2010/1/1/platformServiceResult";, local:"id"). Expected elements 
are<{}id>,<{}information>,<{}systemMessageNumber>,<{}status>,<{}newToken>,<{}systemMessage>,<{}systemId>,<{}parameters>
at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(
at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(
at org.apache.cxf.jaxb.io.DataReaderImpl.read(
at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(
at org.apache.cxf.endpoint.ClientImpl.onMessage(
at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(
at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(
at org.apache.cxf.io.CachedOutputStream.close(
at org.apache.cxf.transport.AbstractConduit.close(
at org.apache.cxf.transport.http.HTTPConduit.close(
at 
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(
at org.apache.cxf.endpoint.ClientImpl.doInvoke(
at org.apache.cxf.endpoint.ClientImpl.invoke(
at org.apache.cxf.endpoint.ClientImpl.invoke(
at org.apache.cxf.endpoint.ClientImpl.invoke(
at org.apache.cxf.frontend.ClientProxy.invokeSync(
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(
at $Proxy69.processRequest(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(
at sun.reflect.NativeMethodAccessorImpl.invoke(
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
at java.lang.reflect.Method.invoke(
......
at org.springframework.test.context.junit4.SpringMethodRoadie.runTestMethod(
at 
org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run(
at 
org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(
at org.springframework.test.context.junit4.SpringMethodRoadie.runTest(
at org.springframework.test.context.junit4.SpringMethodRoadie.run(
at 
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(
at org.junit.internal.runners.JUnit4ClassRunner$1.run(
at org.junit.internal.runners.ClassRoadie.runUnprotected(
at org.junit.internal.runners.ClassRoadie.runProtected(
at 
org.junit.internal.runners.JUnit4ClassRunner.run(JAXBEncoderDecoder.java:801)JAXBEncoderDecoder.java:642)DataReaderImpl.java:156)DocLiteralInInterceptor.java:109)PhaseInterceptorChain.java:263)ClientImpl.java:795)HTTPConduit.java:1626)HTTPConduit.java:1493)HTTPConduit.java:1401)CacheAndWriteOutputStream.java:47)CachedOutputStream.java:194)AbstractConduit.java:56)HTTPConduit.java:648)MessageSenderInterceptor.java:62)PhaseInterceptorChain.java:263)ClientImpl.java:531)ClientImpl.java:461)ClientImpl.java:364)ClientImpl.java:317)ClientProxy.java:88)JaxWsClientProxy.java:134)Native
 
Method)NativeMethodAccessorImpl.java:39)DelegatingMethodAccessorImpl.java:25)Method.java:597)at
     
org.springframework.test.context.junit4.SpringTestMethod.invoke(SpringTestMethod.java:160)SpringMethodRoadie.java:233)SpringMethodRoadie.java:333)SpringMethodRoadie.java:217)SpringMethodRoadie.java:197)SpringMethodRoadie.java:143)SpringJUnit4ClassRunner.java:160)JUnit4ClassRunner.java:51)JUnit4ClassRunner.java:44)ClassRoadie.java:27)ClassRoadie.java:37)JUnit4ClassRunner.java:42)Caused
 by: javax.xml.bind.UnmarshalException- with linked exception:
[
at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(
at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(
... 52 more
Caused by:
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(
at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.childElement(
at com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.childElement(
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(
at 
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(
at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(
... 54 more
Caused by:
... 65 morejavax.xml.bind.UnmarshalException: unexpected element (uri:"http://xxxx.com/common/general/2010/1/1/platformServiceResult";, local:"id"). 
Expected elements 
are<{}id>,<{}information>,<{}systemMessageNumber>,<{}status>,<{}newToken>,<{}systemMessage>,<{}systemId>,<{}parameters>]UnmarshallerImpl.java:421)UnmarshallerImpl.java:360)UnmarshallerImpl.java:337)JAXBEncoderDecoder.java:778)javax.xml.bind.UnmarshalException:
 unexpected element (uri:"http://schemas.benefitfocus.com/common/general/2010/1/1/platformServiceResult";, local:"id"). Expected elements are
     
<{}id>,<{}information>,<{}systemMessageNumber>,<{}status>,<{}newToken>,<{}systemMessage>,<{}systemId>,<{}parameters>UnmarshallingContext.java:609)Loader.java:244)Loader.java:239)Loader.java:116)Loader.java:101)StructureLoader.java:245)UnmarshallingContext.java:452)UnmarshallingContext.java:433)StAXStreamConnector.java:275)StAXStreamConnector.java:209)UnmarshallerImpl.java:358)javax.xml.bind.UnmarshalException:
 unexpected element (uri:"http://schemas.benefitfocus.com/common/general/2010/1/1/platformServiceResult";, local:"id"). Expected elements 
are<{}id>,<{}information>,<{}systemMessageNumber>,<{}status>,<{}newToken>,<{}systemMessage>,<{}systemId>,<{}parameters>
             Below is schema def:
-----------------------------
<?xml version='1.0'
     
encoding='UTF-8'?><xs:schemaxmlns:tns=http://xxx.com/binders/general/2010/1/1xmlns:xs="http://www.w3.org/2001/XMLSchema"version="1.0"targetNamespace=http://xxx.com/binders/general/2010/1/1><xs:elementname="processRequestResponse"type="tns:processRequestResponse"/></xs:complexT<xs:complexTypename="processRequestResponse"><xs:sequence><xs:elementname="return"type="tns:binderReturn"minOccurs="0"/></xs:sequence></xs:complexType><xs:complexTypename="binderReturn"><xs:sequence>
   
<xs:elementname="binderResponse"type="tns:binderResponse"minOccurs="0"/><xs:elementname="platformServiceResult"type="tns:platformServiceResult"minOccurs="0"/></xs:sequence></xs:complexType><xs:complexTypename="binderResponse"><xs:sequence><xs:elementname="errorCode"type="xs:string"minOccurs="0"/><xs:elementname="errorMessage"type="xs:string"minOccurs="0"/><xs:elementname="requestId"type="xs:string"minOccurs="0"/><xs:elementname="source"type="xs:string"minOccurs="0"/><xs:elementname="
status"type="xs:string"minOccurs="0"/><xs:elementname="transactionId"type="xs:string"minOccurs="0"/></xs:sequence></xs:complexType><xs:complexTypename="platformServiceResult"><xs:sequence><xs:elementname="id"type="xs:string"minOccurs="0"/><xs:elementname="information"type="xs:string"nillable="true"minOccurs="0"maxOccurs="unbounded"/><xs:elementname="parameters"type="xs:string"nillable="true"minOccurs="0"maxOccurs="unbounded"/><xs:elementname="status"type="tns:platformServiceStatus"minOccurs="0"/><xs:elementname="systemId"type="xs:string"minOccurs="0"/><xs:elementname="systemMessage"type="xs:string"minOccurs="0"/><xs:elementname="systemMessageNumber"type="xs:int"minOccurs="0"/><xs:elementname="newToken"type="xs:string"minOccurs="0"/></xs:sequence><xs:simpleTypename="platformServiceStatus"><xs:restrictionbase="xs:string"><xs:enumerationvalue="SUCCESS"/></xs:restriction></xs:simpleType></
------------------------------------------------
     ------------------------ Below is WSDL 
-------------------------<definitionsxmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://services.benefitfocus.com/binders/general/2010/1/1"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns="http://schemas.xmlsoap.org/wsdl/"name="BinderService"targetNamespace=http://xxx.com/binders/general/2010/1/1><types><xsd:schema><xsd:importnamespace=http://xxx.com/binders/general/2010/1/1schemaLocation="see
     
above"/></xsd:schema></types><messagename="processRequestResponse"><partname="parameters"element="tns:processRequestResponse"/></message><soap:operationsoapAction=""/><input><soap:bodyuse="literal"/></input><output><soap:bodyuse="literal"/></output></operation><operationname="processRequest"><soap:operationsoapAction=""/><input><soap:bodyuse="literal"/></input><output><soap:bodyuse="literal"/></output></operation></binding><servicename="BinderService"><portname="BinderServicePort"binding="tns:BinderServicePortBinding"><soap:addresslocation=https://xxx.com/eProxy/service/Servicexmlns=""/><apwsdl:targetWSDLxmlns:ap=http://yyy.com/amfxmlns:apwsdl="urn:zzz.wsdl"xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";><apwsdl:URL>xxxxxx</apwsdl:URL><apwsdl:agentIDxxxxxx</apwsdl:agentID><apwsdl:uwsID>xxxxxx</apwsdl:uwsID><apwsdl:uwsLocalname>xxxxxx</apwsdl:uwsLocalname></apwsdl:targetWSDL></port></
---------------- end of wsdl ----------------
     --------------- soap response from Oracle Jax-ws server -------<?xml version='1.0' 
encoding='UTF-8'?><S:Envelopexmlns:S="http://schemas.xmlsoap.org/soap/envelope/";><S:Body><ns3:processRequestResponsexmlns:ns2=http://xxxx.com/common/general/2010/1/1/platformServiceResultxmlns:ns3=http://xxxx.com/binders/general/2010/1/1><return><responseDate>2012-05-08-04:00</responseDate><binderResponse><requestId>904356447_201208</requestId><source>eHealth</source><status>succeeded</status></binderResponse><platformServiceResult><ns2:id>9faa0d0e-1932-4064-95ec-6a0e10da4c60</ns2:id><ns2:status>SUCCESS</ns2:status><ns2:systemId>ebilprodapp103</ns2:systemId></platformServiceResult></return></ns3:processRequestResponse></</S:Body>S:Envelope>
     </service>definitions>xs:schema></xs:complexType>



  <platformServiceResult>
  </platformServiceResult><ns2:id>9faa0d0e-1932-4064-95ec-6a0e10da4c60</ns2:id>

Reply via email to