You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Ganesh <so...@gmail.com> on 2012/03/24 12:10:06 UTC
Not able to receive inline JSON response for Multipart API
Hi All,
We have a two issues related to receiving *"application/json"* response from
CXF REST API.
1) When we do a file upload from ajax form submit we are receiving the
inline XML response for successful uploads. But actually we need it as JSON
response to handle in AJAX/JQUERY.
In the server side api we used *@Consumes("multipart/form-data")* which can
accept file upload along with form data.
We tried to add *@Produces("application/json")* in the server side API.
After adding this we are able to get JSON response, But it's opening in the
popup and asking users to download it. Which is a bad experience to the
user.
We are looking for the solution to retrieve it as inline rather than asking
download.
2) The second issue is we have an API to download CSV file from server side.
In the API we used *@Produces("text/csv", "application/json")* and the
response class is *javax.ws.rs.core.Response*
Everything is working fine for the happy flows. But we have a use case to
handle the error scenario and customized error message needs to be displayed
to the user. For this we need to receive the JSON response as inline rather
than asking for download in the popup window.
Is there any possible solutions to achieve this ?
Could any one please tell us the approach to resolve these issues?
Regards,
Ganesh.
--
View this message in context: http://cxf.547215.n5.nabble.com/Not-able-to-receive-inline-JSON-response-for-Multipart-API-tp5591532p5591532.html
Sent from the cxf-dev mailing list archive at Nabble.com.
Re: CXF and optional entity parameters
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Anthony
On 18/04/12 12:32, Muller, Anthony wrote:
> Hello Sergey,
>
> In my usecase, the header I send is 'Content-Length', but header names are not casesentive I think?
>
> Result of logging interceptor:
> Headers: {Accept=[application/xml], connection=[keep-alive], Content-Length=[63], content-type=[application/xml], host=[localhost:9080], user-agent=[Java/1.6.0_25],...
>
I think the headers can be lower-case internally, I recall it was there
for a long time, but as far as JAX-RS HttpHeaders is concerned (and
which is used to retrieve Content-Length), it's case-insensitive.
I suspect my original code checking for the empty content was a bit
primitive, I really hope it has been fixed in the latest 2.3.10
maintenance release
Cheers, Sergey
> Anthony
>
> -----Original Message-----
> From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
> Sent: jeudi 29 mars 2012 17:23
> To: users@cxf.apache.org
> Subject: Re: CXF and optional entity parameters
>
> Hi Anthony
> On 29/03/12 15:27, Muller, Anthony wrote:
>> Thanks Sergey, your tip is working perfectly.
>>
> nice, thanks, by the way, I wonder how does HttpServletRequest determine
> the length<= 0, right now JAXBElementProvider checks 'Content-Length',
> do you have it in the lower case format coming in ?
>
> Can you please add the org.apache.cxf.interceptor.LoggingInInterceptor,
> using the "jaxrs.inInterceptors" servlet parameter if using
> CXFNonSpringJaxrsServlet ?
> I was a bit cautious about using InputStream.available() - it does not
> seem to guarantee the data are not actually available if if it returns 0.
>
> Re Nillable - I guess that can be done - it is the default for all the
> providers (if no body is available) except JAXB
>
> Thanks, Sergey
>
>
>
>> Cheers,
>> Anthony
>>
>> import java.io.IOException;
>> import java.io.InputStream;
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.Type;
>>
>> import javax.ws.rs.core.MediaType;
>> import javax.ws.rs.core.MultivaluedMap;
>>
>> import org.apache.cxf.jaxrs.provider.JAXBElementProvider;
>>
>> public class ExtendedJAXBElementProvider extends JAXBElementProvider {
>>
>> @Override
>> public Object readFrom(Class<Object> type, Type genericType, Annotation[] anns, MediaType mt, MultivaluedMap<String, String> headers, InputStream is) throws IOException {
>> if (getContext().getHttpServletRequest().getContentLength()<= 0) {
>> return null;
>> }
>> return super.readFrom(type, genericType, anns, mt, headers, is);
>> }
>> }
>>
>>
>> -----Original Message-----
>> From: Muller, Anthony [mailto:anthony.muller@sap.com]
>> Sent: jeudi 29 mars 2012 16:19
>> To: users@cxf.apache.org
>> Subject: RE: CXF and optional entity parameters
>>
>> Hey Sergey,
>>
>> I'm using the version 2.3.8.
>>
>> I'm going to check what I can do with JAXBElementProvider.
>>
>> Note: if I could add something like @Nullable on my parameter, it will be perfect :)
>>
>> Cheers,
>> Anthony
>>
>> -----Original Message-----
>> From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
>> Sent: mardi 27 mars 2012 17:11
>> To: users@cxf.apache.org
>> Subject: Re: CXF and optional entity parameters
>>
>> Hi
>> On 27/03/12 15:09, Muller, Anthony wrote:
>>> Hello,
>>>
>>> I did not find the answer of this issue.
>>>
>>> Everything works perfectly when "entity" (a JAXB pojo) is not null.
>>>
>>> @Path("/")
>>> public class myClass {
>>>
>>> @PUT
>>> @Path("/{p1}/something/{p2}/something/{p3}/something/{p4}")
>>> @Consumes(MediaType.APPLICATION_XML)
>>> Response updateStuff(
>>> @PathParam("p1") String p1,
>>> @PathParam("p2") Long p2,
>>> @PathParam("p3") String p3,
>>> @PathParam("p4") Long p4,
>>> MyEntity entity);
>>> }
>>>
>>> But if I do not send anything about "entity" (because it is optional), I received the bellow error.
>>
>> JAX-RS 1.1 requires 400 returned in cases where an empty payload is
>> presented to JAXB providers, which CXF version are you working with ?
>> Is it 2.3.7 ? I'm seeing JAXBElementProvider checking on Content-Length
>> header, can you please register a LoggingInInterceptor or capture the
>> request with the tcp trace utility and let me know if Content-Length is
>> available ?
>>
>>>
>>> Please can you help me to fix?
>>>
>>
>> If you do expect 'null' then the best thing to do is to register a
>> custom JAXBElementProvider which overrides readFrom(...) and return null
>> if the request is empty, the protected getContext() returning CXF
>> MessageContext will help...
>>
>> Let me know please if you need more info...
>>
>> Sergey
>>
>>> Regards,
>>> Anthony
>>>
>>>
>>> 27 mars 2012 16:03:47 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException
>>> ATTENTION: javax.xml.bind.UnmarshalException
>>> - with linked exception:
>>> [com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
>>> at [row,col {unknown-source}]: [1,0]]
>>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)
>>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
>>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
>>> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:223)
>>> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:189)
>>> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:160)
>>> at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:990)
>>> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:589)
>>> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:554)
>>> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:230)
>>> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
>>> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
>>> at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
>>> at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
>>> at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
>>> at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
>>> at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
>>> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
>>> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
>>> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
>>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
>>> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
>>> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
>>> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
>>> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
>>> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
>>> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
>>> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
>>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>> at java.lang.Thread.run(Thread.java:662)
>>> Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
>>> at [row,col {unknown-source}]: [1,0]
>>> at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:682)
>>> at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2090)
>>> at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1996)
>>> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1100)
>>> at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:160)
>>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
>>> ... 35 more
>>>
>>>
>>>
>>
>>
>
>
RE: CXF and optional entity parameters
Posted by "Muller, Anthony" <an...@sap.com>.
Hello Sergey,
In my usecase, the header I send is 'Content-Length', but header names are not casesentive I think?
Result of logging interceptor:
Headers: {Accept=[application/xml], connection=[keep-alive], Content-Length=[63], content-type=[application/xml], host=[localhost:9080], user-agent=[Java/1.6.0_25],...
Anthony
-----Original Message-----
From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
Sent: jeudi 29 mars 2012 17:23
To: users@cxf.apache.org
Subject: Re: CXF and optional entity parameters
Hi Anthony
On 29/03/12 15:27, Muller, Anthony wrote:
> Thanks Sergey, your tip is working perfectly.
>
nice, thanks, by the way, I wonder how does HttpServletRequest determine
the length <= 0, right now JAXBElementProvider checks 'Content-Length',
do you have it in the lower case format coming in ?
Can you please add the org.apache.cxf.interceptor.LoggingInInterceptor,
using the "jaxrs.inInterceptors" servlet parameter if using
CXFNonSpringJaxrsServlet ?
I was a bit cautious about using InputStream.available() - it does not
seem to guarantee the data are not actually available if if it returns 0.
Re Nillable - I guess that can be done - it is the default for all the
providers (if no body is available) except JAXB
Thanks, Sergey
> Cheers,
> Anthony
>
> import java.io.IOException;
> import java.io.InputStream;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.Type;
>
> import javax.ws.rs.core.MediaType;
> import javax.ws.rs.core.MultivaluedMap;
>
> import org.apache.cxf.jaxrs.provider.JAXBElementProvider;
>
> public class ExtendedJAXBElementProvider extends JAXBElementProvider {
>
> @Override
> public Object readFrom(Class<Object> type, Type genericType, Annotation[] anns, MediaType mt, MultivaluedMap<String, String> headers, InputStream is) throws IOException {
> if (getContext().getHttpServletRequest().getContentLength()<= 0) {
> return null;
> }
> return super.readFrom(type, genericType, anns, mt, headers, is);
> }
> }
>
>
> -----Original Message-----
> From: Muller, Anthony [mailto:anthony.muller@sap.com]
> Sent: jeudi 29 mars 2012 16:19
> To: users@cxf.apache.org
> Subject: RE: CXF and optional entity parameters
>
> Hey Sergey,
>
> I'm using the version 2.3.8.
>
> I'm going to check what I can do with JAXBElementProvider.
>
> Note: if I could add something like @Nullable on my parameter, it will be perfect :)
>
> Cheers,
> Anthony
>
> -----Original Message-----
> From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
> Sent: mardi 27 mars 2012 17:11
> To: users@cxf.apache.org
> Subject: Re: CXF and optional entity parameters
>
> Hi
> On 27/03/12 15:09, Muller, Anthony wrote:
>> Hello,
>>
>> I did not find the answer of this issue.
>>
>> Everything works perfectly when "entity" (a JAXB pojo) is not null.
>>
>> @Path("/")
>> public class myClass {
>>
>> @PUT
>> @Path("/{p1}/something/{p2}/something/{p3}/something/{p4}")
>> @Consumes(MediaType.APPLICATION_XML)
>> Response updateStuff(
>> @PathParam("p1") String p1,
>> @PathParam("p2") Long p2,
>> @PathParam("p3") String p3,
>> @PathParam("p4") Long p4,
>> MyEntity entity);
>> }
>>
>> But if I do not send anything about "entity" (because it is optional), I received the bellow error.
>
> JAX-RS 1.1 requires 400 returned in cases where an empty payload is
> presented to JAXB providers, which CXF version are you working with ?
> Is it 2.3.7 ? I'm seeing JAXBElementProvider checking on Content-Length
> header, can you please register a LoggingInInterceptor or capture the
> request with the tcp trace utility and let me know if Content-Length is
> available ?
>
>>
>> Please can you help me to fix?
>>
>
> If you do expect 'null' then the best thing to do is to register a
> custom JAXBElementProvider which overrides readFrom(...) and return null
> if the request is empty, the protected getContext() returning CXF
> MessageContext will help...
>
> Let me know please if you need more info...
>
> Sergey
>
>> Regards,
>> Anthony
>>
>>
>> 27 mars 2012 16:03:47 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException
>> ATTENTION: javax.xml.bind.UnmarshalException
>> - with linked exception:
>> [com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
>> at [row,col {unknown-source}]: [1,0]]
>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)
>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
>> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:223)
>> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:189)
>> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:160)
>> at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:990)
>> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:589)
>> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:554)
>> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:230)
>> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
>> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
>> at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
>> at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
>> at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
>> at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
>> at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
>> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
>> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
>> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
>> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
>> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
>> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
>> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
>> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
>> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
>> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> at java.lang.Thread.run(Thread.java:662)
>> Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
>> at [row,col {unknown-source}]: [1,0]
>> at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:682)
>> at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2090)
>> at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1996)
>> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1100)
>> at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:160)
>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
>> ... 35 more
>>
>>
>>
>
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
Re: CXF and optional entity parameters
Posted by Sergey Beryozkin <sb...@gmail.com>.
On 29/03/12 16:23, Sergey Beryozkin wrote:
> Hi Anthony
> On 29/03/12 15:27, Muller, Anthony wrote:
>> Thanks Sergey, your tip is working perfectly.
>>
> nice, thanks, by the way, I wonder how does HttpServletRequest determine
> the length <= 0, right now JAXBElementProvider checks 'Content-Length',
> do you have it in the lower case format coming in ?
>
> Can you please add the org.apache.cxf.interceptor.LoggingInInterceptor,
> using the "jaxrs.inInterceptors" servlet parameter if using
> CXFNonSpringJaxrsServlet ?
> I was a bit cautious about using InputStream.available() - it does not
> seem to guarantee the data are not actually available if if it returns 0.
>
> Re Nillable - I guess that can be done - it is the default for all the
> providers (if no body is available) except JAXB
That is done - we merged it to 2.3.10-SNAPSHOT too, it's not exactly a
bug fix, this new annotation :-), but it went along with the possible
bug fix to do with the Content-Length check, now an explicit conversion
to Long is done and negative values are also checked...
https://issues.apache.org/jira/browse/CXF-4217
Cheers, Sergey
>
>
>
>> Cheers,
>> Anthony
>>
>> import java.io.IOException;
>> import java.io.InputStream;
>> import java.lang.annotation.Annotation;
>> import java.lang.reflect.Type;
>>
>> import javax.ws.rs.core.MediaType;
>> import javax.ws.rs.core.MultivaluedMap;
>>
>> import org.apache.cxf.jaxrs.provider.JAXBElementProvider;
>>
>> public class ExtendedJAXBElementProvider extends JAXBElementProvider {
>>
>> @Override
>> public Object readFrom(Class<Object> type, Type genericType,
>> Annotation[] anns, MediaType mt, MultivaluedMap<String, String>
>> headers, InputStream is) throws IOException {
>> if (getContext().getHttpServletRequest().getContentLength()<= 0) {
>> return null;
>> }
>> return super.readFrom(type, genericType, anns, mt, headers, is);
>> }
>> }
>>
>>
>> -----Original Message-----
>> From: Muller, Anthony [mailto:anthony.muller@sap.com]
>> Sent: jeudi 29 mars 2012 16:19
>> To: users@cxf.apache.org
>> Subject: RE: CXF and optional entity parameters
>>
>> Hey Sergey,
>>
>> I'm using the version 2.3.8.
>>
>> I'm going to check what I can do with JAXBElementProvider.
>>
>> Note: if I could add something like @Nullable on my parameter, it will
>> be perfect :)
>>
>> Cheers,
>> Anthony
>>
>> -----Original Message-----
>> From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
>> Sent: mardi 27 mars 2012 17:11
>> To: users@cxf.apache.org
>> Subject: Re: CXF and optional entity parameters
>>
>> Hi
>> On 27/03/12 15:09, Muller, Anthony wrote:
>>> Hello,
>>>
>>> I did not find the answer of this issue.
>>>
>>> Everything works perfectly when "entity" (a JAXB pojo) is not null.
>>>
>>> @Path("/")
>>> public class myClass {
>>>
>>> @PUT
>>> @Path("/{p1}/something/{p2}/something/{p3}/something/{p4}")
>>> @Consumes(MediaType.APPLICATION_XML)
>>> Response updateStuff(
>>> @PathParam("p1") String p1,
>>> @PathParam("p2") Long p2,
>>> @PathParam("p3") String p3,
>>> @PathParam("p4") Long p4,
>>> MyEntity entity);
>>> }
>>>
>>> But if I do not send anything about "entity" (because it is
>>> optional), I received the bellow error.
>>
>> JAX-RS 1.1 requires 400 returned in cases where an empty payload is
>> presented to JAXB providers, which CXF version are you working with ?
>> Is it 2.3.7 ? I'm seeing JAXBElementProvider checking on Content-Length
>> header, can you please register a LoggingInInterceptor or capture the
>> request with the tcp trace utility and let me know if Content-Length is
>> available ?
>>
>>>
>>> Please can you help me to fix?
>>>
>>
>> If you do expect 'null' then the best thing to do is to register a
>> custom JAXBElementProvider which overrides readFrom(...) and return null
>> if the request is empty, the protected getContext() returning CXF
>> MessageContext will help...
>>
>> Let me know please if you need more info...
>>
>> Sergey
>>
>>> Regards,
>>> Anthony
>>>
>>>
>>> 27 mars 2012 16:03:47
>>> org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException
>>> ATTENTION: javax.xml.bind.UnmarshalException
>>> - with linked exception:
>>> [com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
>>> at [row,col {unknown-source}]: [1,0]]
>>> at
>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)
>>>
>>> at
>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
>>>
>>> at
>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
>>>
>>> at
>>> org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:223)
>>>
>>> at
>>> org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:189)
>>>
>>> at
>>> org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:160)
>>>
>>> at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:990)
>>>
>>> at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:589)
>>>
>>> at
>>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:554)
>>>
>>> at
>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:230)
>>>
>>> at
>>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
>>>
>>> at
>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
>>>
>>> at
>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
>>>
>>> at
>>> org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
>>>
>>> at
>>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
>>>
>>> at
>>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
>>>
>>> at
>>> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
>>>
>>> at
>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
>>>
>>> at
>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
>>>
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
>>> at
>>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
>>>
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>>>
>>> at
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>
>>> at
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
>>>
>>> at
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
>>>
>>> at
>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>>>
>>> at
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
>>>
>>> at
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>>
>>> at
>>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
>>>
>>> at
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>
>>> at
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
>>>
>>> at
>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
>>>
>>> at
>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
>>>
>>> at
>>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
>>>
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>
>>> at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>
>>> at java.lang.Thread.run(Thread.java:662)
>>> Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
>>> at [row,col {unknown-source}]: [1,0]
>>> at
>>> com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:682)
>>> at
>>> com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2090)
>>> at
>>> com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1996)
>>>
>>> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1100)
>>> at
>>> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:160)
>>>
>>> at
>>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
>>>
>>> ... 35 more
>>>
>>>
>>>
>>
>>
>
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
Re: CXF and optional entity parameters
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Anthony
On 29/03/12 15:27, Muller, Anthony wrote:
> Thanks Sergey, your tip is working perfectly.
>
nice, thanks, by the way, I wonder how does HttpServletRequest determine
the length <= 0, right now JAXBElementProvider checks 'Content-Length',
do you have it in the lower case format coming in ?
Can you please add the org.apache.cxf.interceptor.LoggingInInterceptor,
using the "jaxrs.inInterceptors" servlet parameter if using
CXFNonSpringJaxrsServlet ?
I was a bit cautious about using InputStream.available() - it does not
seem to guarantee the data are not actually available if if it returns 0.
Re Nillable - I guess that can be done - it is the default for all the
providers (if no body is available) except JAXB
Thanks, Sergey
> Cheers,
> Anthony
>
> import java.io.IOException;
> import java.io.InputStream;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.Type;
>
> import javax.ws.rs.core.MediaType;
> import javax.ws.rs.core.MultivaluedMap;
>
> import org.apache.cxf.jaxrs.provider.JAXBElementProvider;
>
> public class ExtendedJAXBElementProvider extends JAXBElementProvider {
>
> @Override
> public Object readFrom(Class<Object> type, Type genericType, Annotation[] anns, MediaType mt, MultivaluedMap<String, String> headers, InputStream is) throws IOException {
> if (getContext().getHttpServletRequest().getContentLength()<= 0) {
> return null;
> }
> return super.readFrom(type, genericType, anns, mt, headers, is);
> }
> }
>
>
> -----Original Message-----
> From: Muller, Anthony [mailto:anthony.muller@sap.com]
> Sent: jeudi 29 mars 2012 16:19
> To: users@cxf.apache.org
> Subject: RE: CXF and optional entity parameters
>
> Hey Sergey,
>
> I'm using the version 2.3.8.
>
> I'm going to check what I can do with JAXBElementProvider.
>
> Note: if I could add something like @Nullable on my parameter, it will be perfect :)
>
> Cheers,
> Anthony
>
> -----Original Message-----
> From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
> Sent: mardi 27 mars 2012 17:11
> To: users@cxf.apache.org
> Subject: Re: CXF and optional entity parameters
>
> Hi
> On 27/03/12 15:09, Muller, Anthony wrote:
>> Hello,
>>
>> I did not find the answer of this issue.
>>
>> Everything works perfectly when "entity" (a JAXB pojo) is not null.
>>
>> @Path("/")
>> public class myClass {
>>
>> @PUT
>> @Path("/{p1}/something/{p2}/something/{p3}/something/{p4}")
>> @Consumes(MediaType.APPLICATION_XML)
>> Response updateStuff(
>> @PathParam("p1") String p1,
>> @PathParam("p2") Long p2,
>> @PathParam("p3") String p3,
>> @PathParam("p4") Long p4,
>> MyEntity entity);
>> }
>>
>> But if I do not send anything about "entity" (because it is optional), I received the bellow error.
>
> JAX-RS 1.1 requires 400 returned in cases where an empty payload is
> presented to JAXB providers, which CXF version are you working with ?
> Is it 2.3.7 ? I'm seeing JAXBElementProvider checking on Content-Length
> header, can you please register a LoggingInInterceptor or capture the
> request with the tcp trace utility and let me know if Content-Length is
> available ?
>
>>
>> Please can you help me to fix?
>>
>
> If you do expect 'null' then the best thing to do is to register a
> custom JAXBElementProvider which overrides readFrom(...) and return null
> if the request is empty, the protected getContext() returning CXF
> MessageContext will help...
>
> Let me know please if you need more info...
>
> Sergey
>
>> Regards,
>> Anthony
>>
>>
>> 27 mars 2012 16:03:47 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException
>> ATTENTION: javax.xml.bind.UnmarshalException
>> - with linked exception:
>> [com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
>> at [row,col {unknown-source}]: [1,0]]
>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)
>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
>> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:223)
>> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:189)
>> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:160)
>> at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:990)
>> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:589)
>> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:554)
>> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:230)
>> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
>> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
>> at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
>> at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
>> at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
>> at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
>> at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
>> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
>> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
>> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
>> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
>> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
>> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
>> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
>> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
>> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
>> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> at java.lang.Thread.run(Thread.java:662)
>> Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
>> at [row,col {unknown-source}]: [1,0]
>> at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:682)
>> at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2090)
>> at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1996)
>> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1100)
>> at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:160)
>> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
>> ... 35 more
>>
>>
>>
>
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
RE: CXF and optional entity parameters
Posted by "Muller, Anthony" <an...@sap.com>.
Thanks Sergey, your tip is working perfectly.
Cheers,
Anthony
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import org.apache.cxf.jaxrs.provider.JAXBElementProvider;
public class ExtendedJAXBElementProvider extends JAXBElementProvider {
@Override
public Object readFrom(Class<Object> type, Type genericType, Annotation[] anns, MediaType mt, MultivaluedMap<String, String> headers, InputStream is) throws IOException {
if (getContext().getHttpServletRequest().getContentLength() <= 0) {
return null;
}
return super.readFrom(type, genericType, anns, mt, headers, is);
}
}
-----Original Message-----
From: Muller, Anthony [mailto:anthony.muller@sap.com]
Sent: jeudi 29 mars 2012 16:19
To: users@cxf.apache.org
Subject: RE: CXF and optional entity parameters
Hey Sergey,
I'm using the version 2.3.8.
I'm going to check what I can do with JAXBElementProvider.
Note: if I could add something like @Nullable on my parameter, it will be perfect :)
Cheers,
Anthony
-----Original Message-----
From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
Sent: mardi 27 mars 2012 17:11
To: users@cxf.apache.org
Subject: Re: CXF and optional entity parameters
Hi
On 27/03/12 15:09, Muller, Anthony wrote:
> Hello,
>
> I did not find the answer of this issue.
>
> Everything works perfectly when "entity" (a JAXB pojo) is not null.
>
> @Path("/")
> public class myClass {
>
> @PUT
> @Path("/{p1}/something/{p2}/something/{p3}/something/{p4}")
> @Consumes(MediaType.APPLICATION_XML)
> Response updateStuff(
> @PathParam("p1") String p1,
> @PathParam("p2") Long p2,
> @PathParam("p3") String p3,
> @PathParam("p4") Long p4,
> MyEntity entity);
> }
>
> But if I do not send anything about "entity" (because it is optional), I received the bellow error.
JAX-RS 1.1 requires 400 returned in cases where an empty payload is
presented to JAXB providers, which CXF version are you working with ?
Is it 2.3.7 ? I'm seeing JAXBElementProvider checking on Content-Length
header, can you please register a LoggingInInterceptor or capture the
request with the tcp trace utility and let me know if Content-Length is
available ?
>
> Please can you help me to fix?
>
If you do expect 'null' then the best thing to do is to register a
custom JAXBElementProvider which overrides readFrom(...) and return null
if the request is empty, the protected getContext() returning CXF
MessageContext will help...
Let me know please if you need more info...
Sergey
> Regards,
> Anthony
>
>
> 27 mars 2012 16:03:47 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException
> ATTENTION: javax.xml.bind.UnmarshalException
> - with linked exception:
> [com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
> at [row,col {unknown-source}]: [1,0]]
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:223)
> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:189)
> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:160)
> at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:990)
> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:589)
> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:554)
> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:230)
> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
> at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
> at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
> at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
> at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
> at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
> at [row,col {unknown-source}]: [1,0]
> at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:682)
> at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2090)
> at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1996)
> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1100)
> at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:160)
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
> ... 35 more
>
>
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
RE: CXF and optional entity parameters
Posted by "Muller, Anthony" <an...@sap.com>.
Hey Sergey,
I'm using the version 2.3.8.
I'm going to check what I can do with JAXBElementProvider.
Note: if I could add something like @Nullable on my parameter, it will be perfect :)
Cheers,
Anthony
-----Original Message-----
From: Sergey Beryozkin [mailto:sberyozkin@gmail.com]
Sent: mardi 27 mars 2012 17:11
To: users@cxf.apache.org
Subject: Re: CXF and optional entity parameters
Hi
On 27/03/12 15:09, Muller, Anthony wrote:
> Hello,
>
> I did not find the answer of this issue.
>
> Everything works perfectly when "entity" (a JAXB pojo) is not null.
>
> @Path("/")
> public class myClass {
>
> @PUT
> @Path("/{p1}/something/{p2}/something/{p3}/something/{p4}")
> @Consumes(MediaType.APPLICATION_XML)
> Response updateStuff(
> @PathParam("p1") String p1,
> @PathParam("p2") Long p2,
> @PathParam("p3") String p3,
> @PathParam("p4") Long p4,
> MyEntity entity);
> }
>
> But if I do not send anything about "entity" (because it is optional), I received the bellow error.
JAX-RS 1.1 requires 400 returned in cases where an empty payload is
presented to JAXB providers, which CXF version are you working with ?
Is it 2.3.7 ? I'm seeing JAXBElementProvider checking on Content-Length
header, can you please register a LoggingInInterceptor or capture the
request with the tcp trace utility and let me know if Content-Length is
available ?
>
> Please can you help me to fix?
>
If you do expect 'null' then the best thing to do is to register a
custom JAXBElementProvider which overrides readFrom(...) and return null
if the request is empty, the protected getContext() returning CXF
MessageContext will help...
Let me know please if you need more info...
Sergey
> Regards,
> Anthony
>
>
> 27 mars 2012 16:03:47 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException
> ATTENTION: javax.xml.bind.UnmarshalException
> - with linked exception:
> [com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
> at [row,col {unknown-source}]: [1,0]]
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:223)
> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:189)
> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:160)
> at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:990)
> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:589)
> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:554)
> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:230)
> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
> at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
> at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
> at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
> at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
> at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
> at [row,col {unknown-source}]: [1,0]
> at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:682)
> at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2090)
> at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1996)
> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1100)
> at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:160)
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
> ... 35 more
>
>
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
Re: CXF and optional entity parameters
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi
On 27/03/12 15:09, Muller, Anthony wrote:
> Hello,
>
> I did not find the answer of this issue.
>
> Everything works perfectly when "entity" (a JAXB pojo) is not null.
>
> @Path("/")
> public class myClass {
>
> @PUT
> @Path("/{p1}/something/{p2}/something/{p3}/something/{p4}")
> @Consumes(MediaType.APPLICATION_XML)
> Response updateStuff(
> @PathParam("p1") String p1,
> @PathParam("p2") Long p2,
> @PathParam("p3") String p3,
> @PathParam("p4") Long p4,
> MyEntity entity);
> }
>
> But if I do not send anything about "entity" (because it is optional), I received the bellow error.
JAX-RS 1.1 requires 400 returned in cases where an empty payload is
presented to JAXB providers, which CXF version are you working with ?
Is it 2.3.7 ? I'm seeing JAXBElementProvider checking on Content-Length
header, can you please register a LoggingInInterceptor or capture the
request with the tcp trace utility and let me know if Content-Length is
available ?
>
> Please can you help me to fix?
>
If you do expect 'null' then the best thing to do is to register a
custom JAXBElementProvider which overrides readFrom(...) and return null
if the request is empty, the protected getContext() returning CXF
MessageContext will help...
Let me know please if you need more info...
Sergey
> Regards,
> Anthony
>
>
> 27 mars 2012 16:03:47 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException
> ATTENTION: javax.xml.bind.UnmarshalException
> - with linked exception:
> [com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
> at [row,col {unknown-source}]: [1,0]]
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:223)
> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:189)
> at org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:160)
> at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:990)
> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:589)
> at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:554)
> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:230)
> at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
> at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
> at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
> at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
> at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
> at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
> at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
> at [row,col {unknown-source}]: [1,0]
> at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:682)
> at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2090)
> at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1996)
> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1100)
> at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:160)
> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
> ... 35 more
>
>
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
CXF and optional entity parameters
Posted by "Muller, Anthony" <an...@sap.com>.
Hello,
I did not find the answer of this issue.
Everything works perfectly when "entity" (a JAXB pojo) is not null.
@Path("/")
public class myClass {
@PUT
@Path("/{p1}/something/{p2}/something/{p3}/something/{p4}")
@Consumes(MediaType.APPLICATION_XML)
Response updateStuff(
@PathParam("p1") String p1,
@PathParam("p2") Long p2,
@PathParam("p3") String p3,
@PathParam("p4") Long p4,
MyEntity entity);
}
But if I do not send anything about "entity" (because it is optional), I received the bellow error.
Please can you help me to fix?
Regards,
Anthony
27 mars 2012 16:03:47 org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException
ATTENTION: javax.xml.bind.UnmarshalException
- with linked exception:
[com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]]
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:426)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:332)
at org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:223)
at org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:189)
at org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:160)
at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:990)
at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:589)
at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:554)
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:230)
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:88)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]
at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:682)
at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2090)
at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1996)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1100)
at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:160)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
... 35 more
Re: Not able to receive inline JSON response for Multipart API
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Ganesh
I'm forwarding it to the users list
I wonder if you are looking for JSONP or similar approaches ?
Have a look at this documentation:
http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-JSONWithPadding
Cheers, Sergey
On 24/03/12 11:10, Ganesh wrote:
> Hi All,
>
> We have a two issues related to receiving *"application/json"* response from
> CXF REST API.
>
> 1) When we do a file upload from ajax form submit we are receiving the
> inline XML response for successful uploads. But actually we need it as JSON
> response to handle in AJAX/JQUERY.
> In the server side api we used *@Consumes("multipart/form-data")* which can
> accept file upload along with form data.
>
> We tried to add *@Produces("application/json")* in the server side API.
> After adding this we are able to get JSON response, But it's opening in the
> popup and asking users to download it. Which is a bad experience to the
> user.
>
> We are looking for the solution to retrieve it as inline rather than asking
> download.
>
>
> 2) The second issue is we have an API to download CSV file from server side.
>
> In the API we used *@Produces("text/csv", "application/json")* and the
> response class is *javax.ws.rs.core.Response*
>
> Everything is working fine for the happy flows. But we have a use case to
> handle the error scenario and customized error message needs to be displayed
> to the user. For this we need to receive the JSON response as inline rather
> than asking for download in the popup window.
>
> Is there any possible solutions to achieve this ?
>
>
> Could any one please tell us the approach to resolve these issues?
>
>
> Regards,
> Ganesh.
>
> --
> View this message in context: http://cxf.547215.n5.nabble.com/Not-able-to-receive-inline-JSON-response-for-Multipart-API-tp5591532p5591532.html
> Sent from the cxf-dev mailing list archive at Nabble.com.
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
Re: Not able to receive inline JSON response for Multipart API
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Ganesh
I'm forwarding it to the users list
I wonder if you are looking for JSONP or similar approaches ?
Have a look at this documentation:
http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-JSONWithPadding
Cheers, Sergey
On 24/03/12 11:10, Ganesh wrote:
> Hi All,
>
> We have a two issues related to receiving *"application/json"* response from
> CXF REST API.
>
> 1) When we do a file upload from ajax form submit we are receiving the
> inline XML response for successful uploads. But actually we need it as JSON
> response to handle in AJAX/JQUERY.
> In the server side api we used *@Consumes("multipart/form-data")* which can
> accept file upload along with form data.
>
> We tried to add *@Produces("application/json")* in the server side API.
> After adding this we are able to get JSON response, But it's opening in the
> popup and asking users to download it. Which is a bad experience to the
> user.
>
> We are looking for the solution to retrieve it as inline rather than asking
> download.
>
>
> 2) The second issue is we have an API to download CSV file from server side.
>
> In the API we used *@Produces("text/csv", "application/json")* and the
> response class is *javax.ws.rs.core.Response*
>
> Everything is working fine for the happy flows. But we have a use case to
> handle the error scenario and customized error message needs to be displayed
> to the user. For this we need to receive the JSON response as inline rather
> than asking for download in the popup window.
>
> Is there any possible solutions to achieve this ?
>
>
> Could any one please tell us the approach to resolve these issues?
>
>
> Regards,
> Ganesh.
>
> --
> View this message in context: http://cxf.547215.n5.nabble.com/Not-able-to-receive-inline-JSON-response-for-Multipart-API-tp5591532p5591532.html
> Sent from the cxf-dev mailing list archive at Nabble.com.
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com