Hi Sergey, Dan,

I got it working successfully using 2.2.7-SNAPSHOT!  I appreciate the
continuing support!

Now, I'm going to build the client to parse this data.

best regards,
Allan
http://old.nabble.com/file/p27279908/fastinfoset2.png fastinfoset2.png 


Sergey Beryozkin-2 wrote:
> 
> Actually, it is not finished yet, should be ready shortly
> 
> ----- Original Message ----- 
> From: "Sergey Beryozkin" <[email protected]>
> To: <[email protected]>
> Sent: Friday, January 22, 2010 4:42 PM
> Subject: Re: CXF 2.2.5 and Fastinfoset
> 
> 
>> Hi Allan
>> 
>> I can see the trunk build is done [1]
>> 
>> I did not know 2.2.x had fastinfoset interceptors. Will merge there
>> now...
>> 
>> cheers, Sergey
>> 
>> [1]
>> http://hudson.zones.apache.org/hudson/view/CXF/job/CXF-Trunk-JDK15/lastBuild/changes
>> 
>> 
>> 
>>> 
>>> 
>>> Hi Sergey,
>>> 
>>> Thank you! What version did you check in the fix? 2.2.5 or 2.3? Am I
>>> going
>>> to download the snapshot version? 
>>> 
>>> Please advice. 
>>> 
>>> Best regards,
>>> Allan
>>> 
>>> 
>>> Sergey Beryozkin-2 wrote:
>>>> 
>>>> 
>>>> Hi Allan
>>>> 
>>>> Sorry for a delay, I just fixed it. JAXBElementProvider was not
>>>> checking
>>>> for stax in/out factories, it was only checking for already 
>>>> created readers/writers. There also was a minor issue to do with
>>>> reading
>>>> the fastinfoset on the client side
>>>> 
>>>> One thing I observed is that on the client side you do not need to
>>>> @Consume fastinfoset explicitly given that a fastinfoset in 
>>>> interceptor replaces it with text/xml.
>>>> 
>>>> thanks, Sergey
>>>> 
>>>>>
>>>>>
>>>>>
>>>>> Hi Dan, Sergey,
>>>>>
>>>>> I added the Interceptors, but it's still not working. Here's my
>>>>> implementation:
>>>>>
>>>>> first I added the interceptors:
>>>>> <bean id="fastInfosetOutInterceptor"
>>>>> class="org.apache.cxf.interceptor.FIStaxOutInterceptor" />
>>>>> <bean id="fastInfosetInInterceptor"
>>>>> class="org.apache.cxf.interceptor.FIStaxInInterceptor" />
>>>>>
>>>>> I applied it in my endpoint config:
>>>>>
>>>>> <jaxrs:server id="sampleService" address="/">
>>>>> <jaxrs:serviceBeans>
>>>>> <ref bean="sampleServiceBean" />
>>>>> </jaxrs:serviceBeans>
>>>>> <jaxrs:providers>
>>>>> <ref bean="jaxbProvider" />
>>>>> </jaxrs:providers>
>>>>> <jaxrs:outInterceptors>
>>>>> <ref bean="fastInfosetOutInterceptor" />
>>>>> </jaxrs:outInterceptors>
>>>>> <jaxrs:inInterceptors>
>>>>> <ref bean="fastInfosetInInterceptor" />
>>>>> </jaxrs:inInterceptors>
>>>>> </jaxrs:server>
>>>>>
>>>>>
>>>>> At first, threw an exception because "Content-Type" is not define. So
>>>>> I
>>>>> added it in the request header. Then It went through
>>>>> FIStaxOutInterceptor::handleMessage() fine, but the returned xml is
>>>>> still
>>>>> not fastinfoset encoded.
>>>>>
>>>>> Did I miss something?
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Allan
>>>>>
>>>>>
>>>>>
>>>>> dkulp wrote:
>>>>>>
>>>>>> On Tue January 19 2010 3:34:53 pm Sergey Beryozkin wrote:
>>>>>>> Yes, that is probably it. Allan, can you try it ? I thought naively
>>>>>>> @FastInfoset was handled at the runtime core level, but I will try
>>>>>>> to
>>>>>>> update the JAXRS runtime to check for @FastInfoset and other newly
>>>>>>> introduced annotations in time for 2.3
>>>>>>
>>>>>> The new annotations are handled by new listeners that listen for
>>>>>> various
>>>>>> events.   I have the ReflectionServiceFactoryBean producing those
>>>>>> events.
>>>>>> I
>>>>>> haven't gone through the JAX-RS equivalent stuff yet to get those
>>>>>> working.
>>>>>> It
>>>>>> shouldn't be hard, just needs to be done.
>>>>>>
>>>>>> Dan
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Cheers, Sergey
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Daniel Kulp [mailto:[email protected]]
>>>>>>> Sent: 19 January 2010 20:00
>>>>>>> To: [email protected]
>>>>>>> Cc: AllanSLim
>>>>>>> Subject: Re: CXF 2.2.5 and Fastinfoset
>>>>>>>
>>>>>>>
>>>>>>> Try configuring in the Fastinfoset interceptors directly.   I'm not
>>>>>>> sure
>>>>>>> if
>>>>>>> the JAX-RS stuff will pickup the @FastInfoset annotation on 2.3 yet.
>>>>>>>
>>>>>>> Dan
>>>>>>>
>>>>>>> On Tue January 19 2010 1:19:45 pm AllanSLim wrote:
>>>>>>> > Hi Sergey, Dan,
>>>>>>> >
>>>>>>> > I have tried it and it accepted it!  However, the xml output
>>>>>>> doesn't
>>>>>>>
>>>>>>> look
>>>>>>>
>>>>>>> > fastinfoset encoded. The xml output that I have is not big.
>>>>>>> Probably
>>>>>>>
>>>>>>> just
>>>>>>>
>>>>>>> >  10 lines.
>>>>>>> >
>>>>>>> >  To recap, here's what I have done (For other readers ):
>>>>>>> >
>>>>>>> > in my applicationContext.xml I added:
>>>>>>> >
>>>>>>> > <util:list id="customTypes">
>>>>>>> > <value>application/xml</value>
>>>>>>> > <value>application/fastinfoset</value>
>>>>>>> > </util:list>
>>>>>>> >
>>>>>>> > <bean id="jaxbProvider"
>>>>>>> > class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
>>>>>>> > <property name="produceMediaTypes" ref="customTypes" />
>>>>>>> > <property name="consumeMediaTypes" ref="customTypes" />
>>>>>>> > </bean>
>>>>>>> >
>>>>>>> > and added a provider in my service:
>>>>>>> >
>>>>>>> > <!-- JAX-RS endpoint configuration -->
>>>>>>> >   <jaxrs:server id="sampleService" address="/">
>>>>>>> >     <jaxrs:serviceBeans>
>>>>>>> >       <ref bean="sampleServiceBean" />
>>>>>>> >     </jaxrs:serviceBeans>
>>>>>>> >     <jaxrs:providers>
>>>>>>> >     <ref bean="jaxbProvider" />
>>>>>>> >     </jaxrs:providers>
>>>>>>> >   </jaxrs:server>
>>>>>>> >
>>>>>>> >
>>>>>>> > NOTE: The name space for util:list is needed. (
>>>>>>> > xmlns:util="http://www.springframework.org/schema/util"; )
>>>>>>> >
>>>>>>> > Since I am using 2.3, I added the annotation in my service impl.
>>>>>>> >
>>>>>>> > @FastInfoset
>>>>>>> > public class SampleServiceImpl implements SampleService {
>>>>>>> >
>>>>>>> >
>>>>>>> >     @Path("/getSample")
>>>>>>> >     @Produces({"application/xml","application/fastinfoset"})
>>>>>>> >     public SampleResponse getSampleWithParams(@QueryParam("id")
>>>>>>> Long
>>>>>>>
>>>>>>> id)
>>>>>>>
>>>>>>> > throws SampleServiceException,
>>>>>>> SampleServiceIllegalArgumentException
>>>>>>> {
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>> > Thank you guys for the help!
>>>>>>> >
>>>>>>> >
>>>>>>> > regards,
>>>>>>> > Allan
>>>>>>> >
>>>>>>> > Sergey Beryozkin wrote:
>>>>>>> > > Hi
>>>>>>> > >
>>>>>>> > > Sorry for a delay.
>>>>>>> > > CXF JAXRS JaxbElementProvider is already checking for a custom
>>>>>>> > > XMLStreamReader/XMLStreamWriter on a message, and if it is
>>>>>>> available
>>>>>>>
>>>>>>> then
>>>>>>>
>>>>>>> > > will read from/write to it.
>>>>>>> > > The current problem is that a JAXB  provider is not recognizing
>>>>>>> > > "application/fastinfoset", so you just need to explicitly
>>>>>>> configure
>>>>>>> > > JaxbElementProvider to accept
>>>>>>> > >
>>>>>>> > > "application/xml" and "application/fastinfoset", please see
>>>>>>>
>>>>>>> http://svn.apache.org/repos/asf/cxf/trunk/systests/jaxrs/src/test/resour
>>>>>>> c
>>>>>>>
>>>>>>> > >es/jaxrs/WEB-INF/beans.xml
>>>>>>> > >
>>>>>>> > > ex, do something like
>>>>>>> > >
>>>>>>> > > <util:list id="customTypes">
>>>>>>> > > <value>application/xml</value>
>>>>>>> > > <value>application/fastinfoset</value>
>>>>>>> > > </util:list>
>>>>>>> > >
>>>>>>> > > and then
>>>>>>> > >
>>>>>>> > > <bean id="jaxbProvider"
>>>>>>> > > class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
>>>>>>> > > <property name="produceMediaTypes" ref="customTypes"/>
>>>>>>> > > <property name="consumeMediaTypes" ref="customTypes"/>
>>>>>>> > > </bean>
>>>>>>> > >
>>>>>>> > > Can you try it please ? I hope this will work for you
>>>>>>> > > Sergey
>>>>>>> > >
>>>>>>> > > AllanSLim wrote:
>>>>>>> > >> Hi Dan,
>>>>>>> > >>
>>>>>>> > >> Thanks a lot! Any feedback from Sergey is also appreciated.
>>>>>>> > >>
>>>>>>> > >>
>>>>>>> > >> We also have SOAP endpoints, I will experiment on that as well.
>>>>>>> > >>
>>>>>>> > >> regards,
>>>>>>> > >> Allan
>>>>>>> > >>
>>>>>>> > >> dkulp wrote:
>>>>>>> > >>> May need to wait till Sergey is back from his holidays for
>>>>>>> this.
>>>>>>> > >>>
>>>>>>> > >>> I don't think the FastInfosetFeature thing will work for
>>>>>>> JAX-RS
>>>>>>> as
>>>>>>>
>>>>>>> that
>>>>>>>
>>>>>>> > >>> really
>>>>>>> > >>> interacts with the StaxOutInterceptors that are used for the
>>>>>>>
>>>>>>> normal
>>>>>>>
>>>>>>> > >>> webservice
>>>>>>> > >>> things.   What may be needed is a FI Provider thing for JAXRS.
>>>>>>>
>>>>>>> Not
>>>>>>>
>>>>>>> > >>> really
>>>>>>> > >>> sure though.   Or maybe have the existing providers that use
>>>>>>> Stax
>>>>>>> > >>> double check
>>>>>>> > >>> the message for an XMLStreamReader or similar.      If I get a
>>>>>>>
>>>>>>> chance a
>>>>>>>
>>>>>>> > >>> bit
>>>>>>> > >>> later, I'll try and take a look, but this is defintely closer
>>>>>>> to
>>>>>>> > >>> Sergey's
>>>>>>> > >>> area.
>>>>>>> > >>>
>>>>>>> > >>> Dan
>>>>>>> > >>>
>>>>>>> > >>> On Thu January 7 2010 11:32:34 am AllanSLim wrote:
>>>>>>> > >>>> Hi Guys,
>>>>>>> > >>>>
>>>>>>> > >>>> We're trying to implementing  the fastInfoset feature of CXF
>>>>>>>
>>>>>>> (2.2.5)
>>>>>>>
>>>>>>> > >>>> in our
>>>>>>> > >>>> REST service, but it's returning a 500 internal server error
>>>>>>> (
>>>>>>> No
>>>>>>> > >>>> message
>>>>>>> > >>>> body writer has been found for response class Person ).
>>>>>>> > >>>>
>>>>>>> > >>>>  wget:
>>>>>>> > >>>>
>>>>>>> > >>>> wget -S --header="Accept: application/fastinfoset"
>>>>>>> > >>>> http://localhost:8080/services/samples/getSample?id=9
>>>>>>> > >>>>
>>>>>>> > >>>> No message body writer has been found for response class
>>>>>>> Person
>>>>>>> > >>>>
>>>>>>> > >>>>
>>>>>>> > >>>> Our rest service is:
>>>>>>> > >>>>
>>>>>>> > >>>> @Path("/samples")
>>>>>>> > >>>> @Features(features = {
>>>>>>>
>>>>>>> "org.apache.cxf.feature.FastInfosetFeature" })
>>>>>>>
>>>>>>> > >>>> @Produces({"application/xml","application/fastinfoset",
>>>>>>>
>>>>>>> "text/plain"})
>>>>>>>
>>>>>>> > >>>> public class SampleServiceImpl implements SampleService {
>>>>>>> > >>>>
>>>>>>> > >>>>     @GET
>>>>>>> > >>>>     @Path("/getPerson")
>>>>>>> > >>>>     public Response getPerson() {
>>>>>>> > >>>>         Person person = new Person();
>>>>>>> > >>>>         person.setAge("99");
>>>>>>> > >>>>         person.setName("Homer Simpson");
>>>>>>> > >>>>         // trying the Response.ok()
>>>>>>> > >>>>         return Response.ok(person).build();
>>>>>>> > >>>>        // return person;
>>>>>>> > >>>>     }
>>>>>>> > >>>>
>>>>>>> > >>>>
>>>>>>> > >>>>
>>>>>>> > >>>> Our class person is properly annotated with:
>>>>>>> > >>>>
>>>>>>> > >>>> @XmlRootElement(name = "Person")
>>>>>>> > >>>> public class Person { .. }
>>>>>>> > >>>>
>>>>>>> > >>>>
>>>>>>> > >>>>
>>>>>>> > >>>> Our project is maven base.
>>>>>>> > >>>>
>>>>>>> > >>>> Any help will be greatly appreciated!
>>>>>>> > >>>>
>>>>>>> > >>>> Thank you very much!
>>>>>>> > >>>>
>>>>>>> > >>>> regards,
>>>>>>> > >>>> Allan
>>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> Daniel Kulp
>>>>>> [email protected]
>>>>>> http://www.dankulp.com/blog
>>>>>>
>>>>>>
>>>>>
>>>>> -- 
>>>>> View this message in context:
>>>>> http://old.nabble.com/CXF-2.2.5-and-Fastinfoset-tp27062753p27247240.html
>>>>> Sent from the cxf-user mailing list archive at Nabble.com.
>>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>>> -- 
>>> View this message in context:
>>> http://old.nabble.com/CXF-2.2.5-and-Fastinfoset-tp27062753p27276089.html
>>> Sent from the cxf-user mailing list archive at Nabble.com.
>>>
> 
> 

-- 
View this message in context: 
http://old.nabble.com/CXF-2.2.5-and-Fastinfoset-tp27062753p27279908.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to