package com.sun.ws.rest.samples.atomserver.resources; import com.sun.ws.rest.api.HttpMethod; import com.sun.ws.rest.api.ProduceMime; import com.sun.ws.rest.api.UriTemplate; import com.sun.ws.rest.api.WebApplicationException; import com.sun.ws.rest.api.core.HttpContext; import com.sun.ws.rest.api.representation.Representation; import java.io.ByteArrayOutputStream; import java.io.InputStream; import javax.annotation.Resource; import org.jdom.Document; import org.jdom.Element; import org.jdom.Namespace; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; /** * * @author Paul.Sandoz@Sun.Com */ @UriTemplate("/service") @ProduceMime("application/atomserv+xml") public class ServiceResource { @HttpMethod public byte[] getService() { InputStream in = this.getClass().getResourceAsStream("service.xml"); SAXBuilder sb = new SAXBuilder(); try { Document d = sb.build(in); Element root = d.getRootElement(); Namespace ns = root.getNamespace(); Element collection = root.getChild("workspace", ns).getChild("collection", ns); collection.setAttribute("href", getCollectionUri()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); XMLOutputter xmlo = new XMLOutputter(); xmlo.output(d, baos); return baos.toByteArray(); } catch (Exception e) { throw new WebApplicationException(e); } } @Resource HttpContext context; private String getCollectionUri() { return context.getHttpRequestContext().getBaseURI() + "collection/"; } }