Hi Sergey, Thank you for your reply!
'to' method from WebClient seems to be the best fit for my use-case. But it is still quite some code for this basic operation (fetching a resource that has just been created). I would very much prefer if CXF could provide a more convenient method to do hide the complexity here. Should I create a JIRA ticket for this enhancement request? My code now looks like this: Response response = roleService.create(roleTO, null); assertNotNull(response); assertEquals(org.apache.http.HttpStatus.SC_CREATED, response.getStatus()); WebClient webClient = WebClient.fromClient(WebClient.client(roleService)); webClient.to(response.getLocation().toString(), false); RoleTO actual = webClient.get(RoleTO.class); Best regards. Jan From: Sergey Beryozkin-5 [via CXF] [mailto:[email protected]] Sent: Montag, 19. November 2012 17:10 To: Jan Bernhardt Subject: Re: Best way to handle JAX-RS Creat Resource URLs Hi Jan On 19/11/12 14:16, janb wrote: > Hi, > > I'm currently wondering of what would be the best (CXF) way to handle a > response URL that I get, after saving a new resource. > > In REST it is best practice to return Status Code 201 and a URL pointing to > the new resource after a POST request containing any kind of resource that > should be stored. My service I working well using JAX-RS annotations and CXF > as a Webservice-Stack. Now I would like to test my service. Therefore I > create a new resource receive the URL for this new resource back and would > like to GET this resource for purposes of unit testing. > Here is what I did: > > > Response response = roleService.create(roleTO, null); > > assertNotNull(response); > assertEquals(org.apache.http.HttpStatus.SC_CREATED, response.getStatus()); > > Client client = WebClient.client(roleService); > WebClient webClient = WebClient.fromClient(client); > int offset = webClient.getBaseURI().toString().length(); > webClient.replacePath(response.getLocation().toString().substring(offset)); > RoleTO actual = webClient.get(RoleTO.class); > > > This code does not look nice to me. Since this should be a common usecase, > I'm wondering if there is a better way to do this? > I would like to reuse the configuration of my proxy object, to reuse my > provider and authentication configuration. > Can you clarify please what the code above does ? Suppose we have "http://bar/roles" and we have the role service returning "http://bar/roles/1". One option is indeed do WebClient roleToService = WebClient.fromClient(roleService); this will copy the actual original properties and then do // false flag will let use locations pointing to URIs not starting from the base URI roleToService.to(response.getLocation(), true); This should do it. Alterntaively you can 'browse' with the the original roleService, though in this case you'll need to do some calculations: String currentURILen = roleService.getCurrentUri().toString().length(); Response response = roleService.create(roleTO, null); // advance roleService.path(response.getLocation().substring(currentURILen)); // test new resource // back to the URI pointing to "http://bar/roles" roleService.back(); HTH, Sergey > Best regards > Jan > > > > -- > View this message in context: > http://cxf.547215.n5.nabble.com/Best-way-to-handle-JAX-RS-Creat-Resource-URLs-tp5718738.html > Sent from the cxf-user mailing list archive at Nabble.com. -- Sergey Beryozkin Talend Community Coders http://coders.talend.com/ Blog: http://sberyozkin.blogspot.com ________________________________ If you reply to this email, your message will be added to the discussion below: http://cxf.547215.n5.nabble.com/Best-way-to-handle-JAX-RS-Creat-Resource-URLs-tp5718738p5718744.html To unsubscribe from Best way to handle JAX-RS Creat Resource URLs, click here<http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5718738&code=amJlcm5oYXJkdEB0YWxlbmQuY29tfDU3MTg3Mzh8LTEzMDQ4ODk1MjM=>. NAML<http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> -- View this message in context: http://cxf.547215.n5.nabble.com/Best-way-to-handle-JAX-RS-Creat-Resource-URLs-tp5718738p5718769.html Sent from the cxf-user mailing list archive at Nabble.com.
