package org.jboss.resteasy.test.providers.atom.resource;
import org.jboss.resteasy.plugins.providers.atom.Content;
import org.jboss.resteasy.plugins.providers.atom.Entry;
import org.jboss.resteasy.plugins.providers.atom.Person;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import java.net.URI;
import java.util.Date;
@Path("/")
public class AtomComplexModelEntryResource {
@POST
@Path("entry")
@Consumes(MediaType.APPLICATION_ATOM_XML)
@Produces(MediaType.APPLICATION_ATOM_XML)
public AtomAssetMetadata entry(Entry entry, @Context UriInfo uriInfo) {
try {
AtomAssetMetadata assetMetadata = entry.getAnyOtherJAXBObject(AtomAssetMetadata.class);
return assetMetadata;
} catch (Exception e) {
throw new WebApplicationException(e);
}
}
@GET
@Path("entry2")
@Consumes(MediaType.APPLICATION_ATOM_XML)
@Produces(MediaType.APPLICATION_ATOM_XML)
public Entry entry2(@Context UriInfo uriInfo) {
try {
return toAssetEntry(uriInfo);
} catch (Exception e) {
throw new WebApplicationException(e);
}
}
@POST
@Path("entry3")
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public AtomAssetMetadata entry3(Entry entry, @Context UriInfo uriInfo) {
try {
AtomAssetMetadata assetMetadata = entry.getAnyOtherJAXBObject(AtomAssetMetadata.class);
return assetMetadata;
} catch (Exception e) {
throw new WebApplicationException(e);
}
}
@GET
@Path("entry4")
@AtomComplexModelAtomAssetMetadataDecorators
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Entry entry4(@Context UriInfo uriInfo) {
try {
return toAssetEntry(uriInfo);
} catch (Exception e) {
throw new WebApplicationException(e);
}
}
public Entry toAssetEntry(UriInfo uriInfo) throws Exception {
URI baseUri;
baseUri = uriInfo.getBaseUriBuilder()
.path("packages/{packageName}/assets/{assetName}")
.build("testpackageName", "testassetName");
Entry entry = new Entry();
entry.setTitle("testtitle");
entry.setSummary("testdesc");
entry.setPublished(new Date());
entry.setBase(baseUri);
entry.getAuthors().add(new Person("testperson"));
entry.setId(baseUri);
AtomAssetMetadata atomAssetMetadata = entry.getAnyOtherJAXBObject(AtomAssetMetadata.class);
if (atomAssetMetadata == null) {
atomAssetMetadata = new AtomAssetMetadata();
}
atomAssetMetadata.setArchived(false);
atomAssetMetadata.setUuid("testuuid");
entry.setAnyOtherJAXBObject(atomAssetMetadata);
Content content = new Content();
content.setSrc(UriBuilder.fromUri(baseUri).path("binary").build());
content.setType(MediaType.APPLICATION_OCTET_STREAM_TYPE);
entry.setContent(content);
return entry;
}
}