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 comment