On 06/11/14 11:42, Sergey Beryozkin wrote:
Hi

When you have something like

@GET
@Path("UserInfo?top={top}")
public SympaResponse<UserInfo> getUserInfo(@PathParam("top") int top) ;

what does not work ?

FYI, the above does support the query parameters, may be you did want
meant to say "does not support"



@GET
@Path("UserInfo")
public SympaResponse<UserInfo> getUserInfo(@QueryParam("top") int top);

Cheers, SErgey

On 06/11/14 11:10, Jari Fredrisson wrote:
I have a client without parameters and it works.

I have defined the service as

package ...

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("api")
@Produces("application/json")
public interface SympaService
{
     @GET
     @Path("UserInfo")
     SympaResponse<UserInfo> getUserInfo() ;

     @GET
     @Path("Absences")
     SympaResponse<AbsenceInfo> getAbsenceInfo();
}

I create a client for it like this.

     public static SympaService getClient(final String url, final
Connection conn) throws Exception
     {
         JAXRSClientFactoryBean sf = new JAXRSClientFactoryBean();
         sf.setResourceClass(SympaService.class);
         sf.setAddress(url);
         sf.setUsername(SYMPA_USER.get(conn));
         sf.setPassword(SYMPA_PASS.get(conn));

         List providers = new ArrayList(1);
         providers.add(new JacksonJaxbJsonProvider());

         sf.setProviders(providers);

         BindingFactoryManager manager =
sf.getBus().getExtension(BindingFactoryManager.class);
         JAXRSBindingFactory factory = new JAXRSBindingFactory();

         factory.setBus(sf.getBus());


manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID,
factory);
         SympaService client = sf.create(SympaService.class);
         ClientConfiguration config = WebClient.getConfig(client);
         HTTPConduit conduit = config.getHttpConduit();

         conduit.getClient().setReceiveTimeout(SYMPA_TIMEOUT.get(conn));
         return client;
     }

But now I need to add parameters to the service call.

I tried
     @GET
     @Path("UserInfo?top={top}")
     SympaResponse<UserInfo> getUserInfo(@PathParam("top") int top) ;

call then calling client.getUserInfo(150);

But it does not work.

I know that I can write the client creation differently and create a
WebClient and add the parameters to the URI. But I really would like to
make as little as possible changes to the working code. Is anything like
what I tried possible?

It's so elegant with the Service interface and data type defined and it
just runs. But with parameters, no?

br. jarif






--
Sergey Beryozkin

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

Blog: http://sberyozkin.blogspot.com

Reply via email to