You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Abhishek Sharma <Ab...@makemytrip.com> on 2012/04/04 12:56:10 UTC

Unmarshalling interceptor

Hi,

I've a requirement when writing a CXF client. In my webservice response I am getting a list of myData object.

Now I want some group data by iterating over the entire list. The problem is size of the list is high so I don't want to iterate again.

I know the unmarshaller used by the client is doig the same when converting XML to object. If somehow I can intercept while unmarshal and calculate group data then I don't have to iterate.

I want to see some example code using Unmarshal or Pre_Logical or Post_Logical filter.

Thanks,
Abhishek Sharma |  -

  |  MakeMyTrip.com, 243 SP Infocity, Udyog Vihar Phase 1, Gurgaon, Haryana - 122 016, India


[http://www.mailmktg.makemytrip.com/signature/images/bulb.gif]What's new? My Trip Rewards - An exclusive loyalty program for MakeMyTrip customers.<https://rewards.makemytrip.com/MTR>

[http://www.mailmktg.makemytrip.com/signature/images/MMT-signature-footer-V4.gif]<http://www.makemytrip.com/>

[http://www.mailmktg.makemytrip.com/signature/images/map-icon.gif]<http://www.makemytrip.com/support/gurgaon-travel-agent-office.php>
Office Map

[http://www.mailmktg.makemytrip.com/signature/images/facebook-icon.gif]<http://www.facebook.com/pages/MakeMyTrip-Deals/120740541030?ref=search&sid=100000077980239.1422657277..1>
Facebook

[http://www.mailmktg.makemytrip.com/signature/images/twitter-icon.gif]<http://twitter.com/makemytripdeals>
Twitter




RE: Unmarshalling interceptor

Posted by Abhishek Sharma <Ab...@makemytrip.com>.
Thanks Marko. It worked... :)

Regards,
Abhishek

-----Original Message-----
From: Voß, Marko [mailto:Marko.Voss@fiz-Karlsruhe.de] 
Sent: Wednesday, April 04, 2012 5:21 PM
To: users@cxf.apache.org
Subject: Re: Unmarshalling interceptor

Hello Abhishek,

you can use the setProviders()-method on the JAXRSClientFactoryBean if you are doing this programmatically.

If you are using the JAXRSClientFactory, there are also create()-methods including the providers parameter.

Here is a good site about how to deal with this in any other way:

cxf.apache.org/docs/jax-rs-client-api.html


Hello Sergey,

no problem. :-)


Best regards,

Marko

Am 04.04.2012 13:41, schrieb Abhishek Sharma:
> Hi Marko,
>
> Thanks for the help, but I am doing this unmarshalling in webservice client created using JAXRSClientFactoryBean.
>
> How can I add providers in the webservice client.
>
> Thanks,
> Abhishek
>
> -----Original Message-----
> From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
> Sent: Wednesday, April 04, 2012 4:50 PM
> To: users@cxf.apache.org
> Subject: Re: Unmarshalling interceptor
>
> Hi Marko,
>
> thanks for this tip, it could be an issue to deal with in scope of WS
> requests, and CXF JAXB DataBinding used by JAX-WS may already offer such
> an option,
> however, it's definitely worth updating JAXBElementProvider with the
> Listener property :-). it is possibele to set a ValidationEventHandler
> on it, but not the Listener
>
> Thanks, Sergey
> On 04/04/12 14:12, Voß, Marko wrote:
>> Hello Abhishek Sharma,
>>
>> I think this is a JAXB issue. You can register a Listener to the Unmarshaller.
>>
>> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.html
>> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html
>>
>> There are also some examples in the Javadoc of the possibilities.
>>
>> In order to get this working with CXF, you need to extend the JAXBElementProvider:
>>
>> (org.apache.cxf.jaxrs.provider.JAXBElementProvider)
>>
>> Example:
>>
>> public class MyJAXBElementProvider extends JAXBElementProvider {
>>
>>      // override the methods here like:
>>      protected Unmarshaller createUnmarshaller(Class<?>   cls, Type genericType, boolean isCollection) {
>>        Unmarshaller u = super.createUnmarshaller(cls, genericType, isCollection);
>>        u.setListener(MY_LISTENER);
>>        return u;
>>      }
>> }
>>
>> Now, register the provider:
>>
>> <jaxrs:server id="RestServices" address="">
>>        <jaxrs:providers>
>>          <ref bean="MyJaxbProvider"/>
>>        </jaxrs:providers>
>> </jaxrs:server>
>>
>>
>> Best regards,
>>
>> Marko
>>
>> Am 04.04.2012 12:56, schrieb Abhishek Sharma:
>>> Hi,
>>>
>>> I've a requirement when writing a CXF client. In my webservice response I am getting a list of myData object.
>>>
>>> Now I want some group data by iterating over the entire list. The problem is size of the list is high so I don't want to
>>> iterate again.
>>>
>>> I know the unmarshaller used by the client is doig the same when converting XML to object. If somehow I can intercept
>>> while unmarshal and calculate group data then I don't have to iterate.
>>>
>>> I want to see some example code using Unmarshal or Pre_Logical or Post_Logical filter.
>>>
>>> Thanks,
>>>
>>> *Abhishek Sharma**|* -
>>>
>>> | MakeMyTrip.com, 243 SP Infocity, Udyog Vihar Phase 1, Gurgaon, Haryana - 122 016, India
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/bulb.gif*What's new?*My Trip Rewards - An exclusive loyalty program
>>> for MakeMyTrip customers.<https://rewards.makemytrip.com/MTR>
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/MMT-signature-footer-V4.gif<http://www.makemytrip.com/>
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/map-icon.gif
>>> <http://www.makemytrip.com/support/gurgaon-travel-agent-office.php>
>>> *Office Map*
>>>
>>> 	
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/facebook-icon.gif
>>> <http://www.facebook.com/pages/MakeMyTrip-Deals/120740541030?ref=search&sid=100000077980239.1422657277..1>
>>> *Facebook*
>>>
>>> 	
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/twitter-icon.gif<http://twitter.com/makemytripdeals>
>>> *Twitter*
>>>
>>
>>
>> -------------------------------------------------------
>>
>> Fachinformationszentrum Karlsruhe, Gesellschaft für wissenschaftlich-technische Information mbH.
>> Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 101892.
>> Geschäftsführerin: Sabine Brünger-Weilandt.
>> Vorsitzender des Aufsichtsrats: MinDirig Dr. Thomas Greiner.
>>
>>
>
>


-------------------------------------------------------

Fachinformationszentrum Karlsruhe, Gesellschaft für wissenschaftlich-technische Information mbH. 
Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 101892. 
Geschäftsführerin: Sabine Brünger-Weilandt. 
Vorsitzender des Aufsichtsrats: MinDirig Dr. Thomas Greiner.



Re: Unmarshalling interceptor

Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Marko,

I added those Marshaller & Unmarshaller Listener properties, was not a 
rocket science to do :-), but simplifies things a bit

Cheers, Sergey
On 04/04/12 14:51, Voß, Marko wrote:
> Hello Abhishek,
>
> you can use the setProviders()-method on the JAXRSClientFactoryBean if you are doing this programmatically.
>
> If you are using the JAXRSClientFactory, there are also create()-methods including the providers parameter.
>
> Here is a good site about how to deal with this in any other way:
>
> cxf.apache.org/docs/jax-rs-client-api.html
>
>
> Hello Sergey,
>
> no problem. :-)
>
>
> Best regards,
>
> Marko
>
> Am 04.04.2012 13:41, schrieb Abhishek Sharma:
>> Hi Marko,
>>
>> Thanks for the help, but I am doing this unmarshalling in webservice client created using JAXRSClientFactoryBean.
>>
>> How can I add providers in the webservice client.
>>
>> Thanks,
>> Abhishek
>>
>> -----Original Message-----
>> From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
>> Sent: Wednesday, April 04, 2012 4:50 PM
>> To: users@cxf.apache.org
>> Subject: Re: Unmarshalling interceptor
>>
>> Hi Marko,
>>
>> thanks for this tip, it could be an issue to deal with in scope of WS
>> requests, and CXF JAXB DataBinding used by JAX-WS may already offer such
>> an option,
>> however, it's definitely worth updating JAXBElementProvider with the
>> Listener property :-). it is possibele to set a ValidationEventHandler
>> on it, but not the Listener
>>
>> Thanks, Sergey
>> On 04/04/12 14:12, Voß, Marko wrote:
>>> Hello Abhishek Sharma,
>>>
>>> I think this is a JAXB issue. You can register a Listener to the Unmarshaller.
>>>
>>> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.html
>>> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html
>>>
>>> There are also some examples in the Javadoc of the possibilities.
>>>
>>> In order to get this working with CXF, you need to extend the JAXBElementProvider:
>>>
>>> (org.apache.cxf.jaxrs.provider.JAXBElementProvider)
>>>
>>> Example:
>>>
>>> public class MyJAXBElementProvider extends JAXBElementProvider {
>>>
>>>       // override the methods here like:
>>>       protected Unmarshaller createUnmarshaller(Class<?>    cls, Type genericType, boolean isCollection) {
>>>         Unmarshaller u = super.createUnmarshaller(cls, genericType, isCollection);
>>>         u.setListener(MY_LISTENER);
>>>         return u;
>>>       }
>>> }
>>>
>>> Now, register the provider:
>>>
>>> <jaxrs:server id="RestServices" address="">
>>>         <jaxrs:providers>
>>>           <ref bean="MyJaxbProvider"/>
>>>         </jaxrs:providers>
>>> </jaxrs:server>
>>>
>>>
>>> Best regards,
>>>
>>> Marko
>>>
>>> Am 04.04.2012 12:56, schrieb Abhishek Sharma:
>>>> Hi,
>>>>
>>>> I've a requirement when writing a CXF client. In my webservice response I am getting a list of myData object.
>>>>
>>>> Now I want some group data by iterating over the entire list. The problem is size of the list is high so I don't want to
>>>> iterate again.
>>>>
>>>> I know the unmarshaller used by the client is doig the same when converting XML to object. If somehow I can intercept
>>>> while unmarshal and calculate group data then I don't have to iterate.
>>>>
>>>> I want to see some example code using Unmarshal or Pre_Logical or Post_Logical filter.
>>>>
>>>> Thanks,
>>>>
>>>> *Abhishek Sharma**|* -
>>>>
>>>> | MakeMyTrip.com, 243 SP Infocity, Udyog Vihar Phase 1, Gurgaon, Haryana - 122 016, India
>>>>
>>>> http://www.mailmktg.makemytrip.com/signature/images/bulb.gif*What's new?*My Trip Rewards - An exclusive loyalty program
>>>> for MakeMyTrip customers.<https://rewards.makemytrip.com/MTR>
>>>>
>>>> http://www.mailmktg.makemytrip.com/signature/images/MMT-signature-footer-V4.gif<http://www.makemytrip.com/>
>>>>
>>>> http://www.mailmktg.makemytrip.com/signature/images/map-icon.gif
>>>> <http://www.makemytrip.com/support/gurgaon-travel-agent-office.php>
>>>> *Office Map*
>>>>
>>>> 	
>>>>
>>>> http://www.mailmktg.makemytrip.com/signature/images/facebook-icon.gif
>>>> <http://www.facebook.com/pages/MakeMyTrip-Deals/120740541030?ref=search&sid=100000077980239.1422657277..1>
>>>> *Facebook*
>>>>
>>>> 	
>>>>
>>>> http://www.mailmktg.makemytrip.com/signature/images/twitter-icon.gif<http://twitter.com/makemytripdeals>
>>>> *Twitter*
>>>>
>>>
>>>
>>> -------------------------------------------------------
>>>
>>> Fachinformationszentrum Karlsruhe, Gesellschaft für wissenschaftlich-technische Information mbH.
>>> Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 101892.
>>> Geschäftsführerin: Sabine Brünger-Weilandt.
>>> Vorsitzender des Aufsichtsrats: MinDirig Dr. Thomas Greiner.
>>>
>>>
>>
>>
>
>
> -------------------------------------------------------
>
> Fachinformationszentrum Karlsruhe, Gesellschaft für wissenschaftlich-technische Information mbH.
> Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 101892.
> Geschäftsführerin: Sabine Brünger-Weilandt.
> Vorsitzender des Aufsichtsrats: MinDirig Dr. Thomas Greiner.
>
>


-- 
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Re: Unmarshalling interceptor

Posted by Voß, Marko <Ma...@fiz-Karlsruhe.de>.
Hello Abhishek,

you can use the setProviders()-method on the JAXRSClientFactoryBean if you are doing this programmatically.

If you are using the JAXRSClientFactory, there are also create()-methods including the providers parameter.

Here is a good site about how to deal with this in any other way:

cxf.apache.org/docs/jax-rs-client-api.html


Hello Sergey,

no problem. :-)


Best regards,

Marko

Am 04.04.2012 13:41, schrieb Abhishek Sharma:
> Hi Marko,
>
> Thanks for the help, but I am doing this unmarshalling in webservice client created using JAXRSClientFactoryBean.
>
> How can I add providers in the webservice client.
>
> Thanks,
> Abhishek
>
> -----Original Message-----
> From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
> Sent: Wednesday, April 04, 2012 4:50 PM
> To: users@cxf.apache.org
> Subject: Re: Unmarshalling interceptor
>
> Hi Marko,
>
> thanks for this tip, it could be an issue to deal with in scope of WS
> requests, and CXF JAXB DataBinding used by JAX-WS may already offer such
> an option,
> however, it's definitely worth updating JAXBElementProvider with the
> Listener property :-). it is possibele to set a ValidationEventHandler
> on it, but not the Listener
>
> Thanks, Sergey
> On 04/04/12 14:12, Voß, Marko wrote:
>> Hello Abhishek Sharma,
>>
>> I think this is a JAXB issue. You can register a Listener to the Unmarshaller.
>>
>> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.html
>> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html
>>
>> There are also some examples in the Javadoc of the possibilities.
>>
>> In order to get this working with CXF, you need to extend the JAXBElementProvider:
>>
>> (org.apache.cxf.jaxrs.provider.JAXBElementProvider)
>>
>> Example:
>>
>> public class MyJAXBElementProvider extends JAXBElementProvider {
>>
>>      // override the methods here like:
>>      protected Unmarshaller createUnmarshaller(Class<?>   cls, Type genericType, boolean isCollection) {
>>        Unmarshaller u = super.createUnmarshaller(cls, genericType, isCollection);
>>        u.setListener(MY_LISTENER);
>>        return u;
>>      }
>> }
>>
>> Now, register the provider:
>>
>> <jaxrs:server id="RestServices" address="">
>>        <jaxrs:providers>
>>          <ref bean="MyJaxbProvider"/>
>>        </jaxrs:providers>
>> </jaxrs:server>
>>
>>
>> Best regards,
>>
>> Marko
>>
>> Am 04.04.2012 12:56, schrieb Abhishek Sharma:
>>> Hi,
>>>
>>> I've a requirement when writing a CXF client. In my webservice response I am getting a list of myData object.
>>>
>>> Now I want some group data by iterating over the entire list. The problem is size of the list is high so I don't want to
>>> iterate again.
>>>
>>> I know the unmarshaller used by the client is doig the same when converting XML to object. If somehow I can intercept
>>> while unmarshal and calculate group data then I don't have to iterate.
>>>
>>> I want to see some example code using Unmarshal or Pre_Logical or Post_Logical filter.
>>>
>>> Thanks,
>>>
>>> *Abhishek Sharma**|* -
>>>
>>> | MakeMyTrip.com, 243 SP Infocity, Udyog Vihar Phase 1, Gurgaon, Haryana - 122 016, India
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/bulb.gif*What's new?*My Trip Rewards - An exclusive loyalty program
>>> for MakeMyTrip customers.<https://rewards.makemytrip.com/MTR>
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/MMT-signature-footer-V4.gif<http://www.makemytrip.com/>
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/map-icon.gif
>>> <http://www.makemytrip.com/support/gurgaon-travel-agent-office.php>
>>> *Office Map*
>>>
>>> 	
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/facebook-icon.gif
>>> <http://www.facebook.com/pages/MakeMyTrip-Deals/120740541030?ref=search&sid=100000077980239.1422657277..1>
>>> *Facebook*
>>>
>>> 	
>>>
>>> http://www.mailmktg.makemytrip.com/signature/images/twitter-icon.gif<http://twitter.com/makemytripdeals>
>>> *Twitter*
>>>
>>
>>
>> -------------------------------------------------------
>>
>> Fachinformationszentrum Karlsruhe, Gesellschaft für wissenschaftlich-technische Information mbH.
>> Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 101892.
>> Geschäftsführerin: Sabine Brünger-Weilandt.
>> Vorsitzender des Aufsichtsrats: MinDirig Dr. Thomas Greiner.
>>
>>
>
>


-------------------------------------------------------

Fachinformationszentrum Karlsruhe, Gesellschaft für wissenschaftlich-technische Information mbH. 
Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 101892. 
Geschäftsführerin: Sabine Brünger-Weilandt. 
Vorsitzender des Aufsichtsrats: MinDirig Dr. Thomas Greiner.



RE: Unmarshalling interceptor

Posted by Abhishek Sharma <Ab...@makemytrip.com>.
Hi Marko,

Thanks for the help, but I am doing this unmarshalling in webservice client created using JAXRSClientFactoryBean.

How can I add providers in the webservice client.

Thanks,
Abhishek

-----Original Message-----
From: Sergey Beryozkin [mailto:sberyozkin@gmail.com] 
Sent: Wednesday, April 04, 2012 4:50 PM
To: users@cxf.apache.org
Subject: Re: Unmarshalling interceptor

Hi Marko,

thanks for this tip, it could be an issue to deal with in scope of WS 
requests, and CXF JAXB DataBinding used by JAX-WS may already offer such 
an option,
however, it's definitely worth updating JAXBElementProvider with the 
Listener property :-). it is possibele to set a ValidationEventHandler 
on it, but not the Listener

Thanks, Sergey
On 04/04/12 14:12, Voß, Marko wrote:
> Hello Abhishek Sharma,
>
> I think this is a JAXB issue. You can register a Listener to the Unmarshaller.
>
> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.html
> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html
>
> There are also some examples in the Javadoc of the possibilities.
>
> In order to get this working with CXF, you need to extend the JAXBElementProvider:
>
> (org.apache.cxf.jaxrs.provider.JAXBElementProvider)
>
> Example:
>
> public class MyJAXBElementProvider extends JAXBElementProvider {
>
>     // override the methods here like:
>     protected Unmarshaller createUnmarshaller(Class<?>  cls, Type genericType, boolean isCollection) {
>       Unmarshaller u = super.createUnmarshaller(cls, genericType, isCollection);
>       u.setListener(MY_LISTENER);
>       return u;
>     }
> }
>
> Now, register the provider:
>
> <jaxrs:server id="RestServices" address="">
>       <jaxrs:providers>
>         <ref bean="MyJaxbProvider"/>
>       </jaxrs:providers>
> </jaxrs:server>
>
>
> Best regards,
>
> Marko
>
> Am 04.04.2012 12:56, schrieb Abhishek Sharma:
>> Hi,
>>
>> I've a requirement when writing a CXF client. In my webservice response I am getting a list of myData object.
>>
>> Now I want some group data by iterating over the entire list. The problem is size of the list is high so I don't want to
>> iterate again.
>>
>> I know the unmarshaller used by the client is doig the same when converting XML to object. If somehow I can intercept
>> while unmarshal and calculate group data then I don't have to iterate.
>>
>> I want to see some example code using Unmarshal or Pre_Logical or Post_Logical filter.
>>
>> Thanks,
>>
>> *Abhishek Sharma**|* -
>>
>> | MakeMyTrip.com, 243 SP Infocity, Udyog Vihar Phase 1, Gurgaon, Haryana - 122 016, India
>>
>> http://www.mailmktg.makemytrip.com/signature/images/bulb.gif*What's new?*My Trip Rewards - An exclusive loyalty program
>> for MakeMyTrip customers.<https://rewards.makemytrip.com/MTR>
>>
>> http://www.mailmktg.makemytrip.com/signature/images/MMT-signature-footer-V4.gif<http://www.makemytrip.com/>
>>
>> http://www.mailmktg.makemytrip.com/signature/images/map-icon.gif
>> <http://www.makemytrip.com/support/gurgaon-travel-agent-office.php>
>> *Office Map*
>>
>> 	
>>
>> http://www.mailmktg.makemytrip.com/signature/images/facebook-icon.gif
>> <http://www.facebook.com/pages/MakeMyTrip-Deals/120740541030?ref=search&sid=100000077980239.1422657277..1>
>> *Facebook*
>>
>> 	
>>
>> http://www.mailmktg.makemytrip.com/signature/images/twitter-icon.gif<http://twitter.com/makemytripdeals>
>> *Twitter*
>>
>
>
> -------------------------------------------------------
>
> Fachinformationszentrum Karlsruhe, Gesellschaft für wissenschaftlich-technische Information mbH.
> Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 101892.
> Geschäftsführerin: Sabine Brünger-Weilandt.
> Vorsitzender des Aufsichtsrats: MinDirig Dr. Thomas Greiner.
>
>



Re: Unmarshalling interceptor

Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Marko,

thanks for this tip, it could be an issue to deal with in scope of WS 
requests, and CXF JAXB DataBinding used by JAX-WS may already offer such 
an option,
however, it's definitely worth updating JAXBElementProvider with the 
Listener property :-). it is possibele to set a ValidationEventHandler 
on it, but not the Listener

Thanks, Sergey
On 04/04/12 14:12, Voß, Marko wrote:
> Hello Abhishek Sharma,
>
> I think this is a JAXB issue. You can register a Listener to the Unmarshaller.
>
> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.html
> http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html
>
> There are also some examples in the Javadoc of the possibilities.
>
> In order to get this working with CXF, you need to extend the JAXBElementProvider:
>
> (org.apache.cxf.jaxrs.provider.JAXBElementProvider)
>
> Example:
>
> public class MyJAXBElementProvider extends JAXBElementProvider {
>
>     // override the methods here like:
>     protected Unmarshaller createUnmarshaller(Class<?>  cls, Type genericType, boolean isCollection) {
>       Unmarshaller u = super.createUnmarshaller(cls, genericType, isCollection);
>       u.setListener(MY_LISTENER);
>       return u;
>     }
> }
>
> Now, register the provider:
>
> <jaxrs:server id="RestServices" address="">
>       <jaxrs:providers>
>         <ref bean="MyJaxbProvider"/>
>       </jaxrs:providers>
> </jaxrs:server>
>
>
> Best regards,
>
> Marko
>
> Am 04.04.2012 12:56, schrieb Abhishek Sharma:
>> Hi,
>>
>> I’ve a requirement when writing a CXF client. In my webservice response I am getting a list of myData object.
>>
>> Now I want some group data by iterating over the entire list. The problem is size of the list is high so I don’t want to
>> iterate again.
>>
>> I know the unmarshaller used by the client is doig the same when converting XML to object. If somehow I can intercept
>> while unmarshal and calculate group data then I don’t have to iterate.
>>
>> I want to see some example code using Unmarshal or Pre_Logical or Post_Logical filter.
>>
>> Thanks,
>>
>> *Abhishek Sharma**|* -
>>
>> | MakeMyTrip.com, 243 SP Infocity, Udyog Vihar Phase 1, Gurgaon, Haryana - 122 016, India
>>
>> http://www.mailmktg.makemytrip.com/signature/images/bulb.gif*What's new?*My Trip Rewards - An exclusive loyalty program
>> for MakeMyTrip customers.<https://rewards.makemytrip.com/MTR>
>>
>> http://www.mailmktg.makemytrip.com/signature/images/MMT-signature-footer-V4.gif<http://www.makemytrip.com/>
>>
>> http://www.mailmktg.makemytrip.com/signature/images/map-icon.gif
>> <http://www.makemytrip.com/support/gurgaon-travel-agent-office.php>
>> *Office Map*
>>
>> 	
>>
>> http://www.mailmktg.makemytrip.com/signature/images/facebook-icon.gif
>> <http://www.facebook.com/pages/MakeMyTrip-Deals/120740541030?ref=search&sid=100000077980239.1422657277..1>
>> *Facebook*
>>
>> 	
>>
>> http://www.mailmktg.makemytrip.com/signature/images/twitter-icon.gif<http://twitter.com/makemytripdeals>
>> *Twitter*
>>
>
>
> -------------------------------------------------------
>
> Fachinformationszentrum Karlsruhe, Gesellschaft für wissenschaftlich-technische Information mbH.
> Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 101892.
> Geschäftsführerin: Sabine Brünger-Weilandt.
> Vorsitzender des Aufsichtsrats: MinDirig Dr. Thomas Greiner.
>
>



Re: Unmarshalling interceptor

Posted by Voß, Marko <Ma...@fiz-Karlsruhe.de>.
Hello Abhishek Sharma,

I think this is a JAXB issue. You can register a Listener to the Unmarshaller.

http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.html
http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html

There are also some examples in the Javadoc of the possibilities.

In order to get this working with CXF, you need to extend the JAXBElementProvider:

(org.apache.cxf.jaxrs.provider.JAXBElementProvider)

Example:

public class MyJAXBElementProvider extends JAXBElementProvider {

   // override the methods here like:
   protected Unmarshaller createUnmarshaller(Class<?> cls, Type genericType, boolean isCollection) {
     Unmarshaller u = super.createUnmarshaller(cls, genericType, isCollection);
     u.setListener(MY_LISTENER);
     return u;
   }
}

Now, register the provider:

<jaxrs:server id="RestServices" address="">
     <jaxrs:providers>
       <ref bean="MyJaxbProvider"/>
     </jaxrs:providers>
</jaxrs:server>


Best regards,

Marko

Am 04.04.2012 12:56, schrieb Abhishek Sharma:
> Hi,
>
> I’ve a requirement when writing a CXF client. In my webservice response I am getting a list of myData object.
>
> Now I want some group data by iterating over the entire list. The problem is size of the list is high so I don’t want to
> iterate again.
>
> I know the unmarshaller used by the client is doig the same when converting XML to object. If somehow I can intercept
> while unmarshal and calculate group data then I don’t have to iterate.
>
> I want to see some example code using Unmarshal or Pre_Logical or Post_Logical filter.
>
> Thanks,
>
> *Abhishek Sharma**|* -
>
> | MakeMyTrip.com, 243 SP Infocity, Udyog Vihar Phase 1, Gurgaon, Haryana - 122 016, India
>
> http://www.mailmktg.makemytrip.com/signature/images/bulb.gif*What's new?*My Trip Rewards - An exclusive loyalty program
> for MakeMyTrip customers. <https://rewards.makemytrip.com/MTR>
>
> http://www.mailmktg.makemytrip.com/signature/images/MMT-signature-footer-V4.gif <http://www.makemytrip.com/>
>
> http://www.mailmktg.makemytrip.com/signature/images/map-icon.gif
> <http://www.makemytrip.com/support/gurgaon-travel-agent-office.php>
> *Office Map*
>
> 	
>
> http://www.mailmktg.makemytrip.com/signature/images/facebook-icon.gif
> <http://www.facebook.com/pages/MakeMyTrip-Deals/120740541030?ref=search&sid=100000077980239.1422657277..1>
> *Facebook*
>
> 	
>
> http://www.mailmktg.makemytrip.com/signature/images/twitter-icon.gif <http://twitter.com/makemytripdeals>
> *Twitter*
>


-------------------------------------------------------

Fachinformationszentrum Karlsruhe, Gesellschaft für wissenschaftlich-technische Information mbH. 
Sitz der Gesellschaft: Eggenstein-Leopoldshafen, Amtsgericht Mannheim HRB 101892. 
Geschäftsführerin: Sabine Brünger-Weilandt. 
Vorsitzender des Aufsichtsrats: MinDirig Dr. Thomas Greiner.