I was thinking about some POE support for Resteasy. On the client side add a poe() set of methods on ClientRequest and a @POE annotation for the Proxy framework. I.e.
ClienRequest request = ...; request.body("<stuff/>", "appliation/xml"); ClientResponse response = request.poe(); @Path("/") public interface MyService { @POE @Consumes("application/xml") public void poeIt(Data data); }
The way they’d both work is a HEAD to the base URL would be sent to get the POE-Link, then a POST to the POE-Link would be done using the message body. A Retry-like exception would be thrown if the POST fails. For the serverside it could look something like this:
@Path("/foo/{sub}/{id}") @POE public void poeIt(@PathParam("sub") String subpath, @PathParam("id") @PoeGenerated int id) {...}
@PathParam combined with @PoeGenerated is an automatically uniquely generated id. So, the user would invoke on /foo/{sub} and get back a POE link of /foo/{sub}/{id}. i.e.
HEAD /foo/stuff HTTP/1.1 200 OK POE: 1 POE-Link: /foo/stuff/3333
Thoughts?
Leave a Reply