Re: Marshalling REST Query Parameter directly into Integer Array
See comments inline On 04/10/11 09:33, Kiren Pillay wrote: Thanks Sergei, I was on the wrong track, but thanks to your testcase I can see now that I should pass in array variables as: http://localhost:8080/testMyRest/time?index=1&index=2&index=3 and I was trying to achieve this kind of request (more human/tester friendly) http://localhost:8080/testMyRest/time?index=1,2,3 Right, see why would one want to get ParameterHandler> working. I think > http://localhost:8080/testMyRest/time?i=1&i=2&i=3 is reasonable too and is generally better supported. Besides, in many cases humans don't type those queries manually, forms/scripts/code does that :-) One thing you may want to do, if you'd like to support ?index=1,2,3 and List, is to get a RequestHandler registered instead which would get Message.QUERY_STRING from the current CXF Message, such as 'index=1,2,3' and convert it into "index=1&index=2&index=3" and reset on the same Message, it will be computationally very cheap and will help with avoiding parsing "1,2,3" in the actual application code One other thing, have a look at http://cxf.apache.org/docs/jax-rs-advanced-features.html#JAX-RSAdvancedFeatures-FIQLsearchqueries That feature really needs to get more attention again as IMHO it can become a very useful one... Cheers, Sergey Regards Kiren On Mon, Oct 3, 2011 at 5:11 PM, Sergey Beryozkin wrote: That works exactly the way I described :-), but you can easily double-check it by havubg a breakpoint in org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter and you can see what happens by running most of JAXRSUtilsTest, testCustomerParameter is one of them Sergey On 03/10/11 15:25, Kiren Pillay wrote: Okay, can you send me the name of a test case in the code where I can see how this works please? Regards Kiren On Mon, Oct 3, 2011 at 10:35 AM, Sergey Beryozkin wrote: Hi When we have List, it is the runtime that manages the instantiation of List and it would look for ParameterHandler only if SomeType does not have a suitable constructor or factory method. It will also be checked as a last resort if SomeType(String) constructor throws an exception, ex, Date(String) is problematic... Cheers, Sergey On 02/10/11 18:39, Kiren Pillay wrote: Hi Sergey, Apologies, I didn't test my app correctly. It looks like the ParameterHandler isn't working as it should. When I use a parameter of 1 for example, then it works. If I use a comma-separated list ("1,2,3") it fails saying: "02 Oct 2011 7:19:18 PM org.apache.cxf.jaxrs.utils.InjectionUtils handleParameter SEVERE: Class java.lang.Integer can not be instantiated using a constructor with a single String argument" When debugging, I notice that my custom ParameterHandler is not hit, maybe my ParameterHandler is not registered correctly? Here's my bean config snippet: -- Class: package za.co.kiren.testMyRest; import org.springframework.format.datetime.DateFormatter; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.util.Calendar; import java.util.List; import java.util.Locale; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; @Component @Service("timeService") public class TimeService { @GET @Produces("text/plain") @Path("/time") public String getDateTime(@QueryParam("index") List list) { String tmp = list.toString(); /* * for (Integer integer : list) { tmp+=":"+integer; } */ DateFormatter formatter = new DateFormatter("dd/MM/ hh:mm:ss"); return tmp + formatter.print(Calendar.getInstance().getTime(), Locale.getDefault()); } } On Fri, Sep 30, 2011 at 4:47 PM, Kiren Pillay wrote: Hi Sergery, List works well, thanks for your help:) Moved to 2.4.2 also. Regards Kiren On Thu, Sep 29, 2011 at 2:33 PM, Sergey Beryozkin wrote: Hi There was a minor issue to do with handling arrays such as Integer[], but I can see no problems with List. I committed a test involving List & Integer[]. Not sure why you see a problem with List Can you try 2.4.2 please ? Sergey On 28/09/11 17:34, Kiren Pillay wrote: Hi Sergey! Tried int[], got the same error. [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) I also tried Listbut that also failed with the same error. Is there anything special with the provider configuration maybe? (using 2.4.1). On Wed, Sep 28, 2011 at 5:41 PM, Sergey Beryozkin wrote: Hi Listmust be supported, I'll add a tes
Re: Marshalling REST Query Parameter directly into Integer Array
Thanks Sergei, I was on the wrong track, but thanks to your testcase I can see now that I should pass in array variables as: http://localhost:8080/testMyRest/time?index=1&index=2&index=3 and I was trying to achieve this kind of request (more human/tester friendly) http://localhost:8080/testMyRest/time?index=1,2,3 Regards Kiren On Mon, Oct 3, 2011 at 5:11 PM, Sergey Beryozkin wrote: > That works exactly the way I described :-), but you can easily double-check > it by havubg a breakpoint in > org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter and you can see what > happens by running most of JAXRSUtilsTest, testCustomerParameter is one of > them > Sergey > > On 03/10/11 15:25, Kiren Pillay wrote: >> >> Okay, can you send me the name of a test case in the code where I can >> see how this works please? >> >> Regards >> Kiren >> >> >> On Mon, Oct 3, 2011 at 10:35 AM, Sergey Beryozkin >> wrote: >>> >>> Hi >>> >>> When we have List, it is the runtime that manages the >>> instantiation of List and it would look for ParameterHandler >>> only if SomeType does not have a suitable constructor or factory method. >>> It >>> will also be checked as a last resort if SomeType(String) constructor >>> throws >>> an exception, ex, Date(String) is problematic... >>> >>> Cheers, Sergey >>> >>> On 02/10/11 18:39, Kiren Pillay wrote: Hi Sergey, Apologies, I didn't test my app correctly. It looks like the ParameterHandler isn't working as it should. When I use a parameter of 1 for example, then it works. If I use a comma-separated list ("1,2,3") it fails saying: "02 Oct 2011 7:19:18 PM org.apache.cxf.jaxrs.utils.InjectionUtils handleParameter SEVERE: Class java.lang.Integer can not be instantiated using a constructor with a single String argument" When debugging, I notice that my custom ParameterHandler is not hit, maybe my ParameterHandler is not registered correctly? Here's my bean config snippet: -- >>> class="za.co.vodacom.pams.core.common.cxf.IntegerListParameterHandler" /> Class: package za.co.kiren.testMyRest; import org.springframework.format.datetime.DateFormatter; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.util.Calendar; import java.util.List; import java.util.Locale; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; @Component @Service("timeService") public class TimeService { @GET @Produces("text/plain") @Path("/time") public String getDateTime(@QueryParam("index") List list) { String tmp = list.toString(); /* * for (Integer integer : list) { tmp+=":"+integer; } */ DateFormatter formatter = new DateFormatter("dd/MM/ hh:mm:ss"); return tmp + formatter.print(Calendar.getInstance().getTime(), Locale.getDefault()); } } On Fri, Sep 30, 2011 at 4:47 PM, Kiren Pillay wrote: > > Hi Sergery, > > List works well, thanks for your help:) > > Moved to 2.4.2 also. > > Regards > Kiren > > On Thu, Sep 29, 2011 at 2:33 PM, Sergey Beryozkin > wrote: >> >> Hi >> >> There was a minor issue to do with handling arrays such as Integer[], >> but I >> can see no problems with List. I committed a test involving >> List & Integer[]. >> Not sure why you see a problem with List >> Can you try 2.4.2 please ? >> Sergey >> >> On 28/09/11 17:34, Kiren Pillay wrote: >>> >>> Hi Sergey! >>> >>> Tried int[], got the same error. >>> >>> [I cannot be cast to [Ljava.lang.Object; >>> >>> >>> >>> org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) >>> >>> >>> >>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) >>> >>> >>> I also tried List but that also failed with the same >>> error. >>> >>> Is there anything special with the provider configuration maybe? >>> (using >>> 2.4.1). >>> >>> >>> >>> On Wed, Sep 28, 2011 at 5:41 PM, Sergey >>> Beryozkin >>> wrote: Hi List must be supported, I'll add a test for Integer[], have you tried int[] ? Cheers, Sergey >>>
Re: Marshalling REST Query Parameter directly into Integer Array
That works exactly the way I described :-), but you can easily double-check it by havubg a breakpoint in org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter and you can see what happens by running most of JAXRSUtilsTest, testCustomerParameter is one of them Sergey On 03/10/11 15:25, Kiren Pillay wrote: Okay, can you send me the name of a test case in the code where I can see how this works please? Regards Kiren On Mon, Oct 3, 2011 at 10:35 AM, Sergey Beryozkin wrote: Hi When we have List, it is the runtime that manages the instantiation of List and it would look for ParameterHandler only if SomeType does not have a suitable constructor or factory method. It will also be checked as a last resort if SomeType(String) constructor throws an exception, ex, Date(String) is problematic... Cheers, Sergey On 02/10/11 18:39, Kiren Pillay wrote: Hi Sergey, Apologies, I didn't test my app correctly. It looks like the ParameterHandler isn't working as it should. When I use a parameter of 1 for example, then it works. If I use a comma-separated list ("1,2,3") it fails saying: "02 Oct 2011 7:19:18 PM org.apache.cxf.jaxrs.utils.InjectionUtils handleParameter SEVERE: Class java.lang.Integer can not be instantiated using a constructor with a single String argument" When debugging, I notice that my custom ParameterHandler is not hit, maybe my ParameterHandler is not registered correctly? Here's my bean config snippet: -- Class: package za.co.kiren.testMyRest; import org.springframework.format.datetime.DateFormatter; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.util.Calendar; import java.util.List; import java.util.Locale; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; @Component @Service("timeService") public class TimeService { @GET @Produces("text/plain") @Path("/time") public String getDateTime(@QueryParam("index") Listlist) { String tmp = list.toString(); /* * for (Integer integer : list) { tmp+=":"+integer; } */ DateFormatter formatter = new DateFormatter("dd/MM/ hh:mm:ss"); return tmp + formatter.print(Calendar.getInstance().getTime(), Locale.getDefault()); } } On Fri, Sep 30, 2011 at 4:47 PM, Kiren Pillay wrote: Hi Sergery, Listworks well, thanks for your help:) Moved to 2.4.2 also. Regards Kiren On Thu, Sep 29, 2011 at 2:33 PM, Sergey Beryozkin wrote: Hi There was a minor issue to do with handling arrays such as Integer[], but I can see no problems with List. I committed a test involving List&Integer[]. Not sure why you see a problem with List Can you try 2.4.2 please ? Sergey On 28/09/11 17:34, Kiren Pillay wrote: Hi Sergey! Tried int[], got the same error. [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) I also tried List but that also failed with the same error. Is there anything special with the provider configuration maybe? (using 2.4.1). On Wed, Sep 28, 2011 at 5:41 PM, Sergey Beryozkin wrote: Hi List must be supported, I'll add a test for Integer[], have you tried int[] ? Cheers, Sergey On 28/09/11 15:42, Kiren Pillay wrote: Hi This is an old problem, but I can't seem to find a solution posted anywhere. I want to marshall a comma-separated list of integers directly into an Integer []. 1. Service: public Response getCounters( @QueryParam("msisdn") Long msisdn, @QueryParam("counters") Integer [] counters, @QueryParam("subscriberIdType") String subscriberIdType) 2. I've written a ParameterHandler for this : public class IntegerArrayParameterHandler implements ParameterHandler{ @Override public Integer[] fromString(String arg0) { 3. The parameter handler is registered, however its not picked up when I do the query: [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) org.apache.cxf.jaxrs.utils.InjectionUtils.createParameterObject(InjectionUtils.java:807) org.apache.cxf.jaxrs.utils.JAXRSUtils.readQueryString(JAXRSUtils.java:947) org.apache.cxf.jaxrs.utils.JAXRSUtils.createHttpParameterValue(JAXRSUtils.java:649) Is there a way to get this to work? 4. I've Registered the Provider:
Re: Marshalling REST Query Parameter directly into Integer Array
Okay, can you send me the name of a test case in the code where I can see how this works please? Regards Kiren On Mon, Oct 3, 2011 at 10:35 AM, Sergey Beryozkin wrote: > Hi > > When we have List, it is the runtime that manages the > instantiation of List and it would look for ParameterHandler > only if SomeType does not have a suitable constructor or factory method. It > will also be checked as a last resort if SomeType(String) constructor throws > an exception, ex, Date(String) is problematic... > > Cheers, Sergey > > On 02/10/11 18:39, Kiren Pillay wrote: >> >> Hi Sergey, >> >> Apologies, I didn't test my app correctly. It looks like the >> ParameterHandler isn't working as it should. >> >> When I use a parameter of 1 for example, then it works. If I use a >> comma-separated list ("1,2,3") it fails saying: >> "02 Oct 2011 7:19:18 PM org.apache.cxf.jaxrs.utils.InjectionUtils >> handleParameter >> SEVERE: Class java.lang.Integer can not be instantiated using a >> constructor with a single String argument" >> >> When debugging, I notice that my custom ParameterHandler is not hit, >> maybe my ParameterHandler is not registered correctly? >> >> Here's my bean config snippet: >> -- >> >> >> >> >> > class="za.co.vodacom.pams.core.common.cxf.IntegerListParameterHandler" >> /> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> Class: >> >> package za.co.kiren.testMyRest; >> >> import org.springframework.format.datetime.DateFormatter; >> import org.springframework.stereotype.Component; >> import org.springframework.stereotype.Service; >> >> import java.util.Calendar; >> import java.util.List; >> import java.util.Locale; >> >> import javax.ws.rs.GET; >> import javax.ws.rs.Path; >> import javax.ws.rs.Produces; >> import javax.ws.rs.QueryParam; >> >> @Component >> @Service("timeService") >> public class TimeService { >> @GET >> @Produces("text/plain") >> @Path("/time") >> public String getDateTime(@QueryParam("index") List list) >> { >> String tmp = list.toString(); >> /* >> * for (Integer integer : list) { tmp+=":"+integer; } >> */ >> >> DateFormatter formatter = new DateFormatter("dd/MM/ >> hh:mm:ss"); >> >> return tmp >> + >> formatter.print(Calendar.getInstance().getTime(), >> Locale.getDefault()); >> } >> } >> >> >> On Fri, Sep 30, 2011 at 4:47 PM, Kiren Pillay >> wrote: >>> >>> Hi Sergery, >>> >>> List works well, thanks for your help:) >>> >>> Moved to 2.4.2 also. >>> >>> Regards >>> Kiren >>> >>> On Thu, Sep 29, 2011 at 2:33 PM, Sergey Beryozkin >>> wrote: Hi There was a minor issue to do with handling arrays such as Integer[], but I can see no problems with List. I committed a test involving List & Integer[]. Not sure why you see a problem with List Can you try 2.4.2 please ? Sergey On 28/09/11 17:34, Kiren Pillay wrote: > > Hi Sergey! > > Tried int[], got the same error. > > [I cannot be cast to [Ljava.lang.Object; > > > org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) > > > org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) > > > I also tried List but that also failed with the same error. > > Is there anything special with the provider configuration maybe? (using > 2.4.1). > > > > On Wed, Sep 28, 2011 at 5:41 PM, Sergey Beryozkin > wrote: >> >> Hi >> >> List must be supported, I'll add a test for Integer[], >> have you >> tried int[] ? >> >> Cheers, Sergey >> >> On 28/09/11 15:42, Kiren Pillay wrote: >>> >>> Hi >>> >>> This is an old problem, but I can't seem to find a solution posted >>> anywhere. I want to marshall a comma-separated list of integers >>> directly into an Integer []. >>> >>> 1. Service: >>> >>> public Response getCounters( >>> @QueryParam("msisdn") Long msisdn, >>> @QueryParam("counters") Integer [] counters, >>> @QueryParam("subscriberIdType") String subscriberIdType) >>> >>> 2. I've written a ParameterHandler for this : >>> >>> public class IntegerArrayParameterHandler implements >>> ParameterHandler { >>> @Override >>> public Integer[] fromString(String arg0) { >>> >>> 3. The parameter handler is registered, however its not picked up >>> when >>> I do the query: >>> >>> [I cannot be cast to [Ljava.lang.Object; >>> >>> >>> >>> org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) >>> >>> >
Re: Marshalling REST Query Parameter directly into Integer Array
Hi When we have List, it is the runtime that manages the instantiation of List and it would look for ParameterHandler only if SomeType does not have a suitable constructor or factory method. It will also be checked as a last resort if SomeType(String) constructor throws an exception, ex, Date(String) is problematic... Cheers, Sergey On 02/10/11 18:39, Kiren Pillay wrote: Hi Sergey, Apologies, I didn't test my app correctly. It looks like the ParameterHandler isn't working as it should. When I use a parameter of 1 for example, then it works. If I use a comma-separated list ("1,2,3") it fails saying: "02 Oct 2011 7:19:18 PM org.apache.cxf.jaxrs.utils.InjectionUtils handleParameter SEVERE: Class java.lang.Integer can not be instantiated using a constructor with a single String argument" When debugging, I notice that my custom ParameterHandler is not hit, maybe my ParameterHandler is not registered correctly? Here's my bean config snippet: -- Class: package za.co.kiren.testMyRest; import org.springframework.format.datetime.DateFormatter; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.util.Calendar; import java.util.List; import java.util.Locale; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; @Component @Service("timeService") public class TimeService { @GET @Produces("text/plain") @Path("/time") public String getDateTime(@QueryParam("index") List list) { String tmp = list.toString(); /* * for (Integer integer : list) { tmp+=":"+integer; } */ DateFormatter formatter = new DateFormatter("dd/MM/ hh:mm:ss"); return tmp + formatter.print(Calendar.getInstance().getTime(), Locale.getDefault()); } } On Fri, Sep 30, 2011 at 4:47 PM, Kiren Pillay wrote: Hi Sergery, List works well, thanks for your help:) Moved to 2.4.2 also. Regards Kiren On Thu, Sep 29, 2011 at 2:33 PM, Sergey Beryozkin wrote: Hi There was a minor issue to do with handling arrays such as Integer[], but I can see no problems with List. I committed a test involving List & Integer[]. Not sure why you see a problem with List Can you try 2.4.2 please ? Sergey On 28/09/11 17:34, Kiren Pillay wrote: Hi Sergey! Tried int[], got the same error. [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) I also tried Listbut that also failed with the same error. Is there anything special with the provider configuration maybe? (using 2.4.1). On Wed, Sep 28, 2011 at 5:41 PM, Sergey Beryozkin wrote: Hi Listmust be supported, I'll add a test for Integer[], have you tried int[] ? Cheers, Sergey On 28/09/11 15:42, Kiren Pillay wrote: Hi This is an old problem, but I can't seem to find a solution posted anywhere. I want to marshall a comma-separated list of integers directly into an Integer []. 1. Service: public Response getCounters( @QueryParam("msisdn") Long msisdn, @QueryParam("counters") Integer [] counters, @QueryParam("subscriberIdType") String subscriberIdType) 2. I've written a ParameterHandler for this : public class IntegerArrayParameterHandler implements ParameterHandler { @Override public Integer[] fromString(String arg0) { 3. The parameter handler is registered, however its not picked up when I do the query: [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) org.apache.cxf.jaxrs.utils.InjectionUtils.createParameterObject(InjectionUtils.java:807) org.apache.cxf.jaxrs.utils.JAXRSUtils.readQueryString(JAXRSUtils.java:947) org.apache.cxf.jaxrs.utils.JAXRSUtils.createHttpParameterValue(JAXRSUtils.java:649) Is there a way to get this to work? 4. I've Registered the Provider: The easiest solution is to just use the String value and parse it inside my code,( which is probably why there are not many posts on this:). Regards Kiren
Re: Marshalling REST Query Parameter directly into Integer Array
Hi Sergey, Apologies, I didn't test my app correctly. It looks like the ParameterHandler isn't working as it should. When I use a parameter of 1 for example, then it works. If I use a comma-separated list ("1,2,3") it fails saying: "02 Oct 2011 7:19:18 PM org.apache.cxf.jaxrs.utils.InjectionUtils handleParameter SEVERE: Class java.lang.Integer can not be instantiated using a constructor with a single String argument" When debugging, I notice that my custom ParameterHandler is not hit, maybe my ParameterHandler is not registered correctly? Here's my bean config snippet: -- Class: package za.co.kiren.testMyRest; import org.springframework.format.datetime.DateFormatter; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.util.Calendar; import java.util.List; import java.util.Locale; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; @Component @Service("timeService") public class TimeService { @GET @Produces("text/plain") @Path("/time") public String getDateTime(@QueryParam("index") List list) { String tmp = list.toString(); /* * for (Integer integer : list) { tmp+=":"+integer; } */ DateFormatter formatter = new DateFormatter("dd/MM/ hh:mm:ss"); return tmp + formatter.print(Calendar.getInstance().getTime(), Locale.getDefault()); } } On Fri, Sep 30, 2011 at 4:47 PM, Kiren Pillay wrote: > Hi Sergery, > > List works well, thanks for your help:) > > Moved to 2.4.2 also. > > Regards > Kiren > > On Thu, Sep 29, 2011 at 2:33 PM, Sergey Beryozkin > wrote: >> Hi >> >> There was a minor issue to do with handling arrays such as Integer[], but I >> can see no problems with List. I committed a test involving >> List & Integer[]. >> Not sure why you see a problem with List >> Can you try 2.4.2 please ? >> Sergey >> >> On 28/09/11 17:34, Kiren Pillay wrote: >>> >>> Hi Sergey! >>> >>> Tried int[], got the same error. >>> >>> [I cannot be cast to [Ljava.lang.Object; >>> >>> org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) >>> >>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) >>> >>> >>> I also tried List but that also failed with the same error. >>> >>> Is there anything special with the provider configuration maybe? (using >>> 2.4.1). >>> >>> >>> >>> On Wed, Sep 28, 2011 at 5:41 PM, Sergey Beryozkin >>> wrote: Hi List must be supported, I'll add a test for Integer[], have you tried int[] ? Cheers, Sergey On 28/09/11 15:42, Kiren Pillay wrote: > > Hi > > This is an old problem, but I can't seem to find a solution posted > anywhere. I want to marshall a comma-separated list of integers > directly into an Integer []. > > 1. Service: > > public Response getCounters( > @QueryParam("msisdn") Long msisdn, > @QueryParam("counters") Integer [] counters, > @QueryParam("subscriberIdType") String subscriberIdType) > > 2. I've written a ParameterHandler for this : > > public class IntegerArrayParameterHandler implements > ParameterHandler { > @Override > public Integer[] fromString(String arg0) { > > 3. The parameter handler is registered, however its not picked up when > I do the query: > > [I cannot be cast to [Ljava.lang.Object; > > > org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) > > > org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) > > > org.apache.cxf.jaxrs.utils.InjectionUtils.createParameterObject(InjectionUtils.java:807) > > org.apache.cxf.jaxrs.utils.JAXRSUtils.readQueryString(JAXRSUtils.java:947) > > > org.apache.cxf.jaxrs.utils.JAXRSUtils.createHttpParameterValue(JAXRSUtils.java:649) > > Is there a way to get this to work? > > 4. I've Registered the Provider: > > > > > The easiest solution is to just use the String value and parse it > inside my code,( which is probably why there are not many posts on > this:). > > Regards > Kiren >> >> >
Re: Marshalling REST Query Parameter directly into Integer Array
Hi Sergery, List works well, thanks for your help:) Moved to 2.4.2 also. Regards Kiren On Thu, Sep 29, 2011 at 2:33 PM, Sergey Beryozkin wrote: > Hi > > There was a minor issue to do with handling arrays such as Integer[], but I > can see no problems with List. I committed a test involving > List & Integer[]. > Not sure why you see a problem with List > Can you try 2.4.2 please ? > Sergey > > On 28/09/11 17:34, Kiren Pillay wrote: >> >> Hi Sergey! >> >> Tried int[], got the same error. >> >> [I cannot be cast to [Ljava.lang.Object; >> >> org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) >> >> org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) >> >> >> I also tried List but that also failed with the same error. >> >> Is there anything special with the provider configuration maybe? (using >> 2.4.1). >> >> >> >> On Wed, Sep 28, 2011 at 5:41 PM, Sergey Beryozkin >> wrote: >>> >>> Hi >>> >>> List must be supported, I'll add a test for Integer[], have you >>> tried int[] ? >>> >>> Cheers, Sergey >>> >>> On 28/09/11 15:42, Kiren Pillay wrote: Hi This is an old problem, but I can't seem to find a solution posted anywhere. I want to marshall a comma-separated list of integers directly into an Integer []. 1. Service: public Response getCounters( @QueryParam("msisdn") Long msisdn, @QueryParam("counters") Integer [] counters, @QueryParam("subscriberIdType") String subscriberIdType) 2. I've written a ParameterHandler for this : public class IntegerArrayParameterHandler implements ParameterHandler { @Override public Integer[] fromString(String arg0) { 3. The parameter handler is registered, however its not picked up when I do the query: [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) org.apache.cxf.jaxrs.utils.InjectionUtils.createParameterObject(InjectionUtils.java:807) org.apache.cxf.jaxrs.utils.JAXRSUtils.readQueryString(JAXRSUtils.java:947) org.apache.cxf.jaxrs.utils.JAXRSUtils.createHttpParameterValue(JAXRSUtils.java:649) Is there a way to get this to work? 4. I've Registered the Provider: The easiest solution is to just use the String value and parse it inside my code,( which is probably why there are not many posts on this:). Regards Kiren >>> >>> > >
Re: Marshalling REST Query Parameter directly into Integer Array
Hi There was a minor issue to do with handling arrays such as Integer[], but I can see no problems with List. I committed a test involving List & Integer[]. Not sure why you see a problem with List Can you try 2.4.2 please ? Sergey On 28/09/11 17:34, Kiren Pillay wrote: Hi Sergey! Tried int[], got the same error. [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) I also tried List but that also failed with the same error. Is there anything special with the provider configuration maybe? (using 2.4.1). On Wed, Sep 28, 2011 at 5:41 PM, Sergey Beryozkin wrote: Hi List must be supported, I'll add a test for Integer[], have you tried int[] ? Cheers, Sergey On 28/09/11 15:42, Kiren Pillay wrote: Hi This is an old problem, but I can't seem to find a solution posted anywhere. I want to marshall a comma-separated list of integers directly into an Integer []. 1. Service: public Response getCounters( @QueryParam("msisdn") Long msisdn, @QueryParam("counters") Integer [] counters, @QueryParam("subscriberIdType") String subscriberIdType) 2. I've written a ParameterHandler for this : public class IntegerArrayParameterHandler implements ParameterHandler{ @Override public Integer[] fromString(String arg0) { 3. The parameter handler is registered, however its not picked up when I do the query: [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) org.apache.cxf.jaxrs.utils.InjectionUtils.createParameterObject(InjectionUtils.java:807) org.apache.cxf.jaxrs.utils.JAXRSUtils.readQueryString(JAXRSUtils.java:947) org.apache.cxf.jaxrs.utils.JAXRSUtils.createHttpParameterValue(JAXRSUtils.java:649) Is there a way to get this to work? 4. I've Registered the Provider: The easiest solution is to just use the String value and parse it inside my code,( which is probably why there are not many posts on this:). Regards Kiren
Re: Marshalling REST Query Parameter directly into Integer Array
Hi Sergey! Tried int[], got the same error. [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) I also tried List but that also failed with the same error. Is there anything special with the provider configuration maybe? (using 2.4.1). On Wed, Sep 28, 2011 at 5:41 PM, Sergey Beryozkin wrote: > Hi > > List must be supported, I'll add a test for Integer[], have you > tried int[] ? > > Cheers, Sergey > > On 28/09/11 15:42, Kiren Pillay wrote: >> >> Hi >> >> This is an old problem, but I can't seem to find a solution posted >> anywhere. I want to marshall a comma-separated list of integers >> directly into an Integer []. >> >> 1. Service: >> >> public Response getCounters( >> @QueryParam("msisdn") Long msisdn, >> @QueryParam("counters") Integer [] counters, >> @QueryParam("subscriberIdType") String subscriberIdType) >> >> 2. I've written a ParameterHandler for this : >> >> public class IntegerArrayParameterHandler implements >> ParameterHandler { >> @Override >> public Integer[] fromString(String arg0) { >> >> 3. The parameter handler is registered, however its not picked up when >> I do the query: >> >> [I cannot be cast to [Ljava.lang.Object; >> >> org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) >> >> org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) >> >> org.apache.cxf.jaxrs.utils.InjectionUtils.createParameterObject(InjectionUtils.java:807) >> org.apache.cxf.jaxrs.utils.JAXRSUtils.readQueryString(JAXRSUtils.java:947) >> >> org.apache.cxf.jaxrs.utils.JAXRSUtils.createHttpParameterValue(JAXRSUtils.java:649) >> >> Is there a way to get this to work? >> >> 4. I've Registered the Provider: >> >> >> >> >> The easiest solution is to just use the String value and parse it >> inside my code,( which is probably why there are not many posts on >> this:). >> >> Regards >> Kiren > >
Re: Marshalling REST Query Parameter directly into Integer Array
Hi List must be supported, I'll add a test for Integer[], have you tried int[] ? Cheers, Sergey On 28/09/11 15:42, Kiren Pillay wrote: Hi This is an old problem, but I can't seem to find a solution posted anywhere. I want to marshall a comma-separated list of integers directly into an Integer []. 1. Service: public Response getCounters( @QueryParam("msisdn") Long msisdn, @QueryParam("counters") Integer [] counters, @QueryParam("subscriberIdType") String subscriberIdType) 2. I've written a ParameterHandler for this : public class IntegerArrayParameterHandler implements ParameterHandler { @Override public Integer[] fromString(String arg0) { 3. The parameter handler is registered, however its not picked up when I do the query: [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) org.apache.cxf.jaxrs.utils.InjectionUtils.createParameterObject(InjectionUtils.java:807) org.apache.cxf.jaxrs.utils.JAXRSUtils.readQueryString(JAXRSUtils.java:947) org.apache.cxf.jaxrs.utils.JAXRSUtils.createHttpParameterValue(JAXRSUtils.java:649) Is there a way to get this to work? 4. I've Registered the Provider: The easiest solution is to just use the String value and parse it inside my code,( which is probably why there are not many posts on this:). Regards Kiren
Marshalling REST Query Parameter directly into Integer Array
Hi This is an old problem, but I can't seem to find a solution posted anywhere. I want to marshall a comma-separated list of integers directly into an Integer []. 1. Service: public Response getCounters( @QueryParam("msisdn") Long msisdn, @QueryParam("counters") Integer [] counters, @QueryParam("subscriberIdType") String subscriberIdType) 2. I've written a ParameterHandler for this : public class IntegerArrayParameterHandler implements ParameterHandler { @Override public Integer[] fromString(String arg0) { 3. The parameter handler is registered, however its not picked up when I do the query: [I cannot be cast to [Ljava.lang.Object; org.apache.cxf.jaxrs.utils.InjectionUtils.addToCollectionValues(InjectionUtils.java:752) org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:740) org.apache.cxf.jaxrs.utils.InjectionUtils.createParameterObject(InjectionUtils.java:807) org.apache.cxf.jaxrs.utils.JAXRSUtils.readQueryString(JAXRSUtils.java:947) org.apache.cxf.jaxrs.utils.JAXRSUtils.createHttpParameterValue(JAXRSUtils.java:649) Is there a way to get this to work? 4. I've Registered the Provider: The easiest solution is to just use the String value and parse it inside my code,( which is probably why there are not many posts on this:). Regards Kiren