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; } }