Changeset 5508
- Timestamp:
- 08/01/14 08:50:14 (10 years ago)
- Location:
- VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/rest/VirtualCollectionResource.java
r5417 r5508 11 11 import java.io.InputStream; 12 12 import java.io.OutputStream; 13 import java.net.URI; 13 14 import java.security.Principal; 14 15 import javax.ws.rs.Consumes; … … 27 28 import javax.ws.rs.core.SecurityContext; 28 29 import javax.ws.rs.core.StreamingOutput; 30 import javax.ws.rs.core.UriBuilder; 31 import javax.ws.rs.core.UriInfo; 29 32 30 33 /** … … 36 39 * with it. 37 40 * 41 * FIXME: make this default to {@link #getVirtualCollectionCmdi() } instead 42 * of XML. 43 * 38 44 * @author twagoo 39 45 */ 46 @Produces(VirtualCollectionResource.MediaTypes.CMDI) 40 47 public final class VirtualCollectionResource { 41 48 49 public static class MediaTypes { 50 public static final String CMDI = "application/x-cmdi+xml"; 51 public static final MediaType CMDI_TYPE = new MediaType("application", "x-cmdi+xml"); 52 } 53 42 54 @InjectParam 43 55 private VirtualCollectionRegistry registry; … … 48 60 @Context 49 61 private HttpHeaders headers; 62 @Context 63 private UriInfo uriInfo; 50 64 51 65 private Long id; … … 71 85 } 72 86 this.id = id; 87 } 88 89 /** 90 * The virtual collection referenced by the URI will be retrieved in CMDI 91 * format. 92 * 93 * @return A response containing the virtual collection in CMDI format. If 94 * the virtual collection is not found the appropriate HTTP status code is 95 * issued and an error message is returned. 96 * @throws VirtualCollectionRegistryException 97 */ 98 @GET 99 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 @Override 107 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(); 73 114 } 74 115 … … 167 208 168 209 /** 169 * The virtual collection referenced by the URI will be retrieved in CMDI 170 * format. 171 * 172 * @return A response containing the virtual collection in CMDI format. If 173 * the virtual collection is not found the appropriate HTTP status code is 174 * issued and an error message is returned. 175 * @throws VirtualCollectionRegistryException 176 */ 177 @GET 178 @Path("/cmdi") 179 @Produces({MediaType.TEXT_XML, 180 MediaType.APPLICATION_XML}) 181 public Response getVirtualCollectionCmdi() 182 throws VirtualCollectionRegistryException { 183 final VirtualCollection vc = registry.retrieveVirtualCollection(id); 184 if (!vc.isPublic() || (vc.getPersistentIdentifier() == null)) { 185 throw new VirtualCollectionNotFoundException(id); 186 } 187 StreamingOutput writer = new StreamingOutput() { 188 @Override 189 public void write(OutputStream output) throws IOException, 190 WebApplicationException { 191 marshaller.marshalAsCMDI(output, VirtualCollectionMarshaller.Format.XML, vc); 192 output.close(); 193 } 194 }; 195 return Response.ok(writer).build(); 210 * Redirects the client to the VC's details page in the Wicket frontend 211 * @return 212 * @throws VirtualCollectionRegistryException 213 */ 214 @GET 215 @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(); 196 221 } 197 222 -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/webapp/WEB-INF/web-dev.xml
r5479 r5508 72 72 <param-name>com.sun.jersey.config.property.packages</param-name> 73 73 <param-value>eu.clarin.cmdi.virtualcollectionregistry.rest</param-value> 74 </init-param> 75 <init-param> 76 <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name> 77 <param-value>eu.clarin.cmdi.virtualcollectionregistry.rest.VirtualCollectionMediaTypeFilter</param-value> 74 78 </init-param> 75 79 <load-on-startup>1</load-on-startup> -
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/webapp/WEB-INF/web-shib.xml
r5479 r5508 93 93 <param-value>eu.clarin.cmdi.virtualcollectionregistry.rest</param-value> 94 94 </init-param> 95 <init-param> 96 <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name> 97 <param-value>eu.clarin.cmdi.virtualcollectionregistry.rest.VirtualCollectionMediaTypeFilter</param-value> 98 </init-param> 95 99 <load-on-startup>1</load-on-startup> 96 100 </servlet>
Note: See TracChangeset
for help on using the changeset viewer.