I'm resting an original SOAP ws so what is important to me is to ensure the 
same behavior.
I've seen that returning null, no exception server side occurs and mine 
"RestExceptionHandler", that implements ResponseHandler, 
ExceptionMapper<Exception>, is not called.
So probably "an empty body and HTTP status 204" is a good response for me.
How can I obtain this returning an empty list?
However if I wanted to wrap a List<Integer> into a bean, how should I proceed?
Thanks a lot,

Andrea

Date: Fri, 17 May 2013 03:36:12 -0700
From: [email protected]
To: [email protected]
Subject: Re: Rest ws: how to return an empty List<Integer> avoiding 
java.lang.IndexOutOfBoundsException



        Hi

Please see comments below,

On 17/05/13 11:04, eanbiso wrote:

> Hi all,

> I have a problem with rest endPoint that return an empty list.

> I have a ws interface like this:

>

>      @GET

>      @Produces("multipart/form-data;type=text/xml")

>      @Path("/GetNetworkIDsManagedBy/{controller}")

>      public List<Integer> GetNetworkIDsManagedBy(

>                       @PathParam("controller") int controller);

>

> If in the implementor I return an empty list:

>

>      @Override

>      public List<Integer> GetNetworkIDsManagedBy(int controller) {

>          List<Integer> temp = new ArrayList<Integer>();

>          return temp;

>      }

>

>

> this exception occurs:

>

> java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

>       at java.util.ArrayList.RangeCheck(Unknown Source)

>       at java.util.ArrayList.get(Unknown Source)

>       at

> org.apache.cxf.jaxrs.ext.MessageContextImpl.convertToAttachments(MessageContextImpl.java:185)

>       at

> org.apache.cxf.jaxrs.ext.MessageContextImpl.put(MessageContextImpl.java:159)

>       at

> org.apache.cxf.jaxrs.impl.tl.ThreadLocalMessageContext.put(ThreadLocalMessageContext.java:83)

>       at

> org.apache.cxf.jaxrs.provider.MultipartProvider.writeTo(MultipartProvider.java:245)

>       at

> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:257)

>       at

> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(JAXRSOutInterceptor.java:144)

>       at

> org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(JAXRSOutInterceptor.java:83)

>       at

> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)

>       at

> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77)

>       at

> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)

>       at

> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)

>       at

> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:323)

>       at

> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:289)

>       at

> org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72)

>       at

> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:942)

>       at

> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:878)

>       at

> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)

>       at

> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)

>       at

> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)

>       at org.eclipse.jetty.server.Server.handle(Server.java:349)

>       at

> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)

>       at

> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:919)

>       at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:582)

>       at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)

>       at

> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:52)

>       at

> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)

>       at

> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)

>       at

> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)

>       at

> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)

>       at java.lang.Thread.run(Unknown Source)

>

>

> However, if I return null instead of the empty list, no exception occurs and

> the client receive the response.

In this case it has to be an empty body and HTTP status 204 - is what 

the client is seeing when you return null.


> I'd like to get the same behavior, returning an empty list.

> Is it possible and how?

> Do I use wrong annotations?


What exactly do you expect when you return an empty List<Integer> ?

Empty body & 204 ? Or actually a proper multipart/form-data payload 

response with the root part containing some XML ?


FYI, JAXB provider will not handle List<Integer>, you will need to wrap 

it into a bean or if you prefer returning List - then wrap Integer into 

a bean


Cheers, Sergey



> Thanks a lot,

>

> Andrea

>

>

>

>

> --

> View this message in context: 
> http://cxf.547215.n5.nabble.com/Rest-ws-how-to-return-an-empty-List-Integer-avoiding-java-lang-IndexOutOfBoundsException-tp5727816.html
> Sent from the cxf-user mailing list archive at Nabble.com.

>



        
        
        
        

        

        
        
                If you reply to this email, your message will be added to the 
discussion below:
                
http://cxf.547215.n5.nabble.com/Rest-ws-how-to-return-an-empty-List-Integer-avoiding-java-lang-IndexOutOfBoundsException-tp5727816p5727818.html
        
        
                
                To unsubscribe from Rest ws: how to return an empty 
List<Integer> avoiding java.lang.IndexOutOfBoundsException, click here.

                NAML
                                                  



--
View this message in context: 
http://cxf.547215.n5.nabble.com/Rest-ws-how-to-return-an-empty-List-Integer-avoiding-java-lang-IndexOutOfBoundsException-tp5727816p5727819.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to