@Override public FormResource getByUniqueId(String uniqueId) { return Context.getFormService().getFormResourceByUuid(uniqueId); }
@RequestMapping(value = "/rest/" + RestConstants.VERSION_1 + "/form/{uuid}/resource/{resourceUuid}/value", method = RequestMethod.GET) public void getResourceValue(@PathVariable("uuid") String formUuid, @PathVariable("resourceUuid") String resourceUuid, HttpServletRequest request, HttpServletResponse response) throws Exception { //Get the resource FormResource resource = formService.getFormResourceByUuid(resourceUuid); if (resource == null) { throw new IllegalArgumentException("No form resource with uuid " + resourceUuid + " found"); } clobDatatypeStorageController.retrieve(resource.getValueReference(), request, response); response.setHeader("Content-Disposition", "attachment;filename=\"" + resource.getName() + "\""); } }
@RequestMapping(value = "/rest/" + RestConstants.VERSION_1 + "/form/{uuid}/resource/{resourceUuid}/value", method = RequestMethod.POST, headers = { "Content-Type=multipart/form-data" }) @ResponseBody public Object createResourceValue(@PathVariable("uuid") String formUuid, @PathVariable("resourceUuid") String resourceUuid, @RequestParam("value") MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception { //Get the resource FormResource resource = formService.getFormResourceByUuid(resourceUuid); if (resource == null) { throw new IllegalArgumentException("No form resource with uuid " + resourceUuid + " found"); } String clobUuid = clobDatatypeStorageController.create(file, request, response); resource.setValueReferenceInternal(clobUuid); formService.saveFormResource(resource); return new FormResourceResource1_9().asDefaultRep(resource); }
@Override public FormResource newObject() { return Context.getFormService().getFormResourceByUuid(getUuidProperty()); }
@Test public void shouldPostFormResourceValue() throws Exception { byte[] fileData = IOUtils.toByteArray(getClass().getClassLoader().getResourceAsStream( RestTestConstants1_9.TEST_RESOURCE_FILE)); String valueReferenceBefore = formService.getFormResourceByUuid(getUuid()).getValueReference(); MockMultipartFile toUpload = new MockMultipartFile("value", "formresource.txt", "text/plain", fileData); MockMultipartHttpServletRequest request = new MockMultipartHttpServletRequest(); //Posting to uri of the form /ws/rest/v1/form/{uuid}/resource/{uuid}/value String uri = getBaseRestURI() + getURI() + "/" + getUuid() + "/value"; request.setRequestURI(uri); request.setMethod(RequestMethod.POST.name()); request.addHeader("Content-Type", "multipart/form-data"); request.addFile(toUpload); MockHttpServletResponse response = handle(request); String valueReferenceAfter = formService.getFormResourceByUuid(getUuid()).getValueReference(); Assert.assertNotEquals(valueReferenceBefore, valueReferenceAfter); Assert.assertNotNull(datatypeService.getClobDatatypeStorageByUuid(valueReferenceAfter)); Assert.assertEquals(HttpServletResponse.SC_CREATED, response.getStatus()); }
@Test public void shouldRetrieveResourceValueAsFile() throws Exception { // Get the clobData for the resource FormResource resource = formService.getFormResourceByUuid(getUuid()); ClobDatatypeStorage clobData = datatypeService.getClobDatatypeStorageByUuid(resource.getValueReference()); MockHttpServletResponse response = handle(newGetRequest(getURI() + "/" + getUuid() + "/value")); String expected = "attachment;filename=\"" + resource.getName() + "\""; Assert.assertTrue(StringUtils.equals((String) response.getHeader("Content-Disposition"), expected)); Assert.assertEquals(clobData.getValue(), response.getContentAsString()); }