Changeset 5510
- Timestamp:
- 08/01/14 12:17:56 (10 years ago)
- Location:
- VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/rest
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/rest/MyVirtualCollectionsResource.java
r5417 r5510 91 91 public void write(OutputStream output) throws IOException, 92 92 WebApplicationException { 93 final VirtualCollectionMarshaller.Format format = RestUtils.getOutputFormat(headers );93 final VirtualCollectionMarshaller.Format format = RestUtils.getOutputFormat(headers.getAcceptableMediaTypes()); 94 94 marshaller.marshal(output, format, vcs); 95 95 output.close(); -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/rest/RestUtils.java
r5416 r5510 2 2 3 3 import eu.clarin.cmdi.virtualcollectionregistry.service.VirtualCollectionMarshaller.Format; 4 import java.util.List; 4 5 import javax.ws.rs.core.HttpHeaders; 5 6 import javax.ws.rs.core.MediaType; … … 47 48 * @see HttpHeaders#getAcceptableMediaTypes() 48 49 */ 49 public static Format getOutputFormat( HttpHeaders headers) {50 for (MediaType type : headers.getAcceptableMediaTypes()) {50 public static Format getOutputFormat(List<MediaType> mediaTypes) { 51 for (MediaType type : mediaTypes) { 51 52 Format format = getMediaType(type); 52 53 if (format != null) { -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/rest/VirtualCollectionResource.java
r5508 r5510 39 39 * with it. 40 40 * 41 * FIXME: make this default to {@link #getVirtualCollectionCmdi() } instead 42 * ofXML.43 * 41 * FIXME: make this default to {@link #getVirtualCollectionCmdi() } instead of 42 * XML. 43 * 44 44 * @author twagoo 45 45 */ 46 @Produces(VirtualCollectionResource.MediaTypes.CMDI) 46 @Produces(VirtualCollectionResource.MediaTypes.CMDI) 47 47 public final class VirtualCollectionResource { 48 48 49 49 public static class MediaTypes { 50 50 51 public static final String CMDI = "application/x-cmdi+xml"; 51 52 public static final MediaType CMDI_TYPE = new MediaType("application", "x-cmdi+xml"); 52 53 } 53 54 54 55 @InjectParam 55 56 private VirtualCollectionRegistry registry; … … 86 87 this.id = id; 87 88 } 88 89 /**90 * The virtual collection referenced by the URI will be retrieved in CMDI91 * format.92 *93 * @return A response containing the virtual collection in CMDI format. If94 * the virtual collection is not found the appropriate HTTP status code is95 * issued and an error message is returned.96 * @throws VirtualCollectionRegistryException97 */98 @GET99 public Response getVirtualCollectionCmdi()100 throws VirtualCollectionRegistryException {101 final VirtualCollection vc = registry.retrieveVirtualCollection(id);102 if (!vc.isPublic() || (vc.getPersistentIdentifier() == null)) {103 throw new VirtualCollectionNotFoundException(id);104 }105 StreamingOutput writer = new StreamingOutput() {106 @Override107 public void write(OutputStream output) throws IOException,108 WebApplicationException {109 marshaller.marshalAsCMDI(output, VirtualCollectionMarshaller.Format.XML, vc);110 output.close();111 }112 };113 return Response.ok(writer).build();114 }115 89 116 90 /** … … 123 97 */ 124 98 @GET 125 @Produces({MediaType.TEXT_XML, 99 @Produces({VirtualCollectionResource.MediaTypes.CMDI, 100 MediaType.TEXT_XML, 126 101 MediaType.APPLICATION_XML, 127 102 MediaType.APPLICATION_JSON}) … … 129 104 throws VirtualCollectionRegistryException { 130 105 final VirtualCollection vc = registry.retrieveVirtualCollection(id); 131 // XXX: what about non-public VCs? 132 StreamingOutput writer = new StreamingOutput() { 133 @Override 134 public void write(OutputStream output) throws IOException, 135 WebApplicationException { 136 final VirtualCollectionMarshaller.Format format = RestUtils.getOutputFormat(headers); 137 marshaller.marshal(output, format, vc); 138 output.close(); 139 } 140 }; 141 return Response.ok(writer).build(); 106 return Response.ok(vc).build(); 107 } 108 109 /** 110 * Redirects the client to the VC's details page in the Wicket frontend 111 * 112 * @return 113 * @throws VirtualCollectionRegistryException 114 */ 115 @GET 116 @Produces({MediaType.TEXT_HTML}) 117 public Response getVirtualCollectionDetailsRedirect() 118 throws VirtualCollectionRegistryException { 119 final UriBuilder pathBuilder = uriInfo.getBaseUriBuilder().path("../app/details/{arg1}"); 120 final URI detailsUri = pathBuilder.build(id); 121 return Response.seeOther(detailsUri).build(); 142 122 } 143 123 … … 208 188 209 189 /** 210 * Redirects the client to the VC's details page in the Wicket frontend211 * @return212 * @throws VirtualCollectionRegistryException213 */214 @GET215 @Produces({MediaType.TEXT_HTML})216 public Response getVirtualCollectionDetailsRedirect()217 throws VirtualCollectionRegistryException {218 final UriBuilder pathBuilder = uriInfo.getBaseUriBuilder().path("../app/details/{arg1}");219 final URI detailsUri = pathBuilder.build(id);220 return Response.seeOther(detailsUri).build();221 }222 223 /**224 190 * The publication state of the virtual collection referenced by the URI 225 191 * -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/rest/VirtualCollectionsResource.java
r5417 r5510 80 80 public void write(OutputStream output) throws IOException, 81 81 WebApplicationException { 82 final Format format = RestUtils.getOutputFormat(headers );82 final Format format = RestUtils.getOutputFormat(headers.getAcceptableMediaTypes()); 83 83 marshaller.marshal(output, format, vcs); 84 84 output.close();
Note: See TracChangeset
for help on using the changeset viewer.