package org.jboss.resteasy.test.client.resource;
import org.jboss.resteasy.logging.Logger;
import org.jboss.resteasy.plugins.delegates.LinkHeaderDelegate;
import org.jboss.resteasy.spi.LinkHeader;
import javax.ws.rs.HEAD;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
@Path("/linkheader")
public class LinkHeaderService {
private static Logger logger = Logger.getLogger(LinkHeaderService.class);
@POST
public Response post(@HeaderParam("Link") LinkHeader linkHeader) {
logger.info("SERVER LinkHeader: " + new LinkHeaderDelegate().toString(linkHeader));
return Response.noContent().header("Link", linkHeader).build();
}
@POST
@Path("/str")
public Response postStr(@HeaderParam("Link") String linkHeader) {
logger.info("SERVER LINK: " + linkHeader);
return Response.noContent().header("Link", linkHeader).build();
}
@HEAD
@Path("/topic")
public Response head(@Context UriInfo uriInfo) {
return Response.ok()
.header("Link", getSenderLink(uriInfo))
.header("Link", getTopLink(uriInfo)).build();
}
protected String getSenderLink(UriInfo info) {
String basePath = info.getMatchedURIs().get(0);
UriBuilder builder = info.getBaseUriBuilder();
builder.path(basePath);
builder.path("sender");
String link = "<" + builder.build().toString() + ">; rel=\"sender\"; title=\"sender\"";
return link;
}
protected String getTopLink(UriInfo info) {
String basePath = info.getMatchedURIs().get(0);
UriBuilder builder = info.getBaseUriBuilder();
builder.path(basePath);
builder.path("poller");
String link = "<" + builder.build().toString() + ">; rel=\"top-message\"; title=\"top-message\"";
return link;
}
}