Uploaded image for project: 'RESTEasy'
  1. RESTEasy
  2. RESTEASY-2139

Asynchronous clients don't support @PathParam (Proxy + MP REST client)

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 4.0.0.CR1, 3.7.0.Final
    • 3.6.2.Final, 4.0.0.Beta7
    • None
    • None

    Description

      When using a simple interface like this one:

      @Path("/")
      public interface RxTestInterface {
          @GET
          @Path("some/{id}")
          Single<String> signle(@PathParam("id") String id);
      
          @GET
          @Path("some/{id}")
          CompletionStage<String> cs(@PathParam("id") String id);
      }
      
      RxTestInterface proxy = client.target("http://127.0.0.1:8080/jaxrs-wf").proxy(RxTestInterface.class);
      
      RxTestInterface mpRestClient = MicroprofileClientBuilderResolver.instance()
              .newBuilder()
              .baseUrl(new URL("http://127.0.0.1:8080/jaxrs-wf"))
              .build(RxTestInterface.class);
      
      CompletionStage<String> cs = proxy.cs("test");
      System.out.println(cs.toCompletableFuture().get());
      
      Single<String> single = proxy.signle("test");
      single.subscribe((String s) -> {
      	System.out.println(s);
      });
      

      An error appears upon request invocation:

      java.lang.IllegalArgumentException: RESTEASY003720: path param id has not been provided by the parameter map
      	at org.jboss.resteasy.specimpl.ResteasyUriBuilder.replaceParameter(ResteasyUriBuilder.java:678)
      	at org.jboss.resteasy.specimpl.ResteasyUriBuilder.buildString(ResteasyUriBuilder.java:600)
      	at org.jboss.resteasy.specimpl.ResteasyUriBuilder.buildFromValues(ResteasyUriBuilder.java:799)
      	at org.jboss.resteasy.specimpl.ResteasyUriBuilder.build(ResteasyUriBuilder.java:791)
      	at org.jboss.resteasy.client.jaxrs.internal.ClientWebTarget.request(ClientWebTarget.java:356)
      	at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeAsync(ClientInvoker.java:117)
      	at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:112)
      	at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
      	at com.sun.proxy.$Proxy15.signle(Unknown Source)
      	at com.resteasy.test.App.main(App.java:24)
      

      Previous client example can be tested with this deployment:

      @Path("/")
      public class Resource {
          @GET
          @Path("some/{param}")
          public String get(@PathParam("param") String id) {
              return "resteasy + " + id;
          }
      }
      

      Attachments

        Activity

          People

            rhn-support-asoldano Alessio Soldano
            fabienrousseau Fabien Rousseau (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: