Changeset 30572 for org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform
- Timestamp:
- 02/25/08 20:33:02 (6 months ago)
- Files:
-
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/restAPI/BaseNuxeoRestlet.java (modified) (1 diff)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/restAPI/CreateDocumentRestlet.java (copied) (copied from org.nuxeo.ecm.platform/branches/5.1/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/restAPI/CreateDocumentRestlet.java)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/restAPI/DownloadFileRestlet.java (modified) (1 diff)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/tag/fn/DocumentModelFunctions.java (modified) (4 diffs)
- org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/tag/fn/LiveEditConstants.java (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/restAPI/BaseNuxeoRestlet.java
r25228 r30572 136 136 } 137 137 138 protected static String getQueryParamValue(Request req, String paramName, 139 String defaultValue) { 140 return req.getResourceRef().getQueryAsForm().getFirstValue(paramName, 141 defaultValue); 142 } 143 138 144 } org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/restAPI/DownloadFileRestlet.java
r30571 r30572 47 47 @Name("downloadFileRestlet") 48 48 @Scope(EVENT) 49 public class DownloadFileRestlet extends BaseNuxeoRestlet implements LiveEditConstants { 49 public class DownloadFileRestlet extends BaseNuxeoRestlet implements 50 LiveEditConstants { 50 51 51 @In(create = true)52 protected NavigationContext navigationContext;52 @In(create = true) 53 protected NavigationContext navigationContext; 53 54 54 protected CoreSession documentManager;55 protected CoreSession documentManager; 55 56 56 @Override57 public void handle(Request req, Response res) {57 @Override 58 public void handle(Request req, Response res) { 58 59 59 String repo = (String) req.getAttributes().get("repo"); 60 String docid = (String) req.getAttributes().get("docid"); 61 62 //TODO support custom filename and content fields 63 64 DocumentModel dm = null; 60 String repo = (String) req.getAttributes().get("repo"); 61 if (repo == null || repo.equals("*")) { 62 handleError(res, "you must specify a repository"); 63 return; 64 } 65 65 66 if (repo == null || repo.equals("*")) { 67 handleError(res, "you must specify a repository"); 68 return; 69 } 66 DocumentModel dm = null; 67 try { 68 navigationContext.setCurrentServerLocation(new RepositoryLocation( 69 repo)); 70 documentManager = navigationContext.getOrCreateDocumentManager(); 71 String docid = (String) req.getAttributes().get("docid"); 72 if (docid != null) { 73 dm = documentManager.getDocument(new IdRef(docid)); 74 } else { 75 handleError(res, "you must specify a valid document IdRef"); 76 return; 77 } 78 } catch (ClientException e) { 79 handleError(res, e); 80 return; 81 } 82 String schemaName = getQueryParamValue(req, SCHEMA, DEFAULT_SCHEMA); 83 String blobFieldName = getQueryParamValue(req, BLOB_FIELD, 84 DEFAULT_BLOB_FIELD); 85 String filenameFieldName = getQueryParamValue(req, FILENAME_FIELD, 86 DEFAULT_FILENAME_FIELD); 70 87 71 try { 72 navigationContext.setCurrentServerLocation(new RepositoryLocation( 73 repo)); 74 documentManager = navigationContext.getOrCreateDocumentManager(); 75 if (docid != null) { 76 dm = documentManager.getDocument(new IdRef(docid)); 77 } 78 } catch (ClientException e) { 79 handleError(res, e); 80 return; 81 } 88 try { 82 89 83 try { 90 final String filename = (String) dm.getProperty(schemaName, 91 filenameFieldName); 92 final Blob blob = (Blob) dm.getProperty(schemaName, blobFieldName); 84 93 85 String filename = (String) dm.getProperty("file", "filename"); 86 Blob blob = (Blob) dm.getProperty("file", "content"); 94 final File tempfile = File.createTempFile( 95 "nuxeo-downloadrestlet-tmp", ""); 96 blob.transferTo(tempfile); 97 res.setEntity(new OutputRepresentation(null) { 98 @Override 99 public void write(OutputStream outputStream) throws IOException { 100 // the write call happens after the seam conversation is 101 // finished which will garbage collect the CoreSession 102 // instance, hence we store the blob content in a temporary 103 // file 104 FileInputStream instream = new FileInputStream(tempfile); 105 FileUtils.copy(instream, outputStream); 106 instream.close(); 107 tempfile.delete(); 108 blob.transferTo(outputStream); 109 } 110 }); 111 HttpServletResponse response = getHttpResponse(res); 87 112 88 final File tempfile = File.createTempFile("nuxeo-downloadrestlet-tmp", ""); 89 90 blob.transferTo(tempfile); 91 92 res.setEntity(new OutputRepresentation(null) { 93 @Override 94 public void write(OutputStream outputStream) throws IOException { 95 FileInputStream instream = new FileInputStream(tempfile); 96 FileUtils.copy(instream, outputStream); 97 instream.close(); 98 } 99 }); 100 HttpServletResponse response = getHttpResponse(res); 101 102 response.setHeader("Content-Disposition", 103 "attachment; filename=\"" + filename + "\";"); 113 response.setHeader("Content-Disposition", "attachment; filename=\"" 114 + filename + "\";"); 115 // TODO: add mimetype here too 104 116 105 } catch (Exception e) {106 handleError(res, e);107 }117 } catch (Exception e) { 118 handleError(res, e); 119 } 108 120 109 }121 } 110 122 111 123 } org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/tag/fn/DocumentModelFunctions.java
r30376 r30572 66 66 * @author <a href="mailto:og@nuxeo.com">Olivier Grisel</a> 67 67 */ 68 public final class DocumentModelFunctions {68 public final class DocumentModelFunctions implements LiveEditConstants { 69 69 70 70 private static final Log log = LogFactory.getLog(DocumentModelFunctions.class); 71 72 private static final String DEFAULT_DOCTYPE = "File";73 74 // to be deprecated once all filenames are stored in the blob itself75 private static final String DEFAULT_FILENAME_FIELD = "filename";76 77 private static final String DEFAULT_BLOB_FIELD = "content";78 79 private static final String DEFAULT_SCHEMA = "file";80 71 81 72 private static final String JSESSIONID = "JSESSIONID"; … … 502 493 throws ClientException { 503 494 504 // TODO: move constant string in the LiveEditConstants interface505 495 StringBuilder queryParamBuilder = new StringBuilder(); 506 addQueryParameter(queryParamBuilder, LiveEditConstants.ACTION, 507 LiveEditConstants.ACTION_EDIT_DOCUMENT, true); 508 addQueryParameter(queryParamBuilder, LiveEditConstants.REPO_ID, 509 doc.getRepositoryName(), false); 510 addQueryParameter(queryParamBuilder, LiveEditConstants.DOC_REF, 511 doc.getRef().toString(), false); 512 addQueryParameter(queryParamBuilder, LiveEditConstants.SCHEMA, 513 schemaName, false); 514 addQueryParameter(queryParamBuilder, LiveEditConstants.BLOB_FIELD, 515 blobFieldName, false); 516 addQueryParameter(queryParamBuilder, LiveEditConstants.FILENAME_FIELD, 517 filenameFieldName, false); 496 addQueryParameter(queryParamBuilder, ACTION, ACTION_EDIT_DOCUMENT, true); 497 addQueryParameter(queryParamBuilder, REPO_ID, doc.getRepositoryName(), 498 false); 499 addQueryParameter(queryParamBuilder, DOC_REF, doc.getRef().toString(), 500 false); 501 addQueryParameter(queryParamBuilder, SCHEMA, schemaName, false); 502 addQueryParameter(queryParamBuilder, BLOB_FIELD, blobFieldName, false); 503 addQueryParameter(queryParamBuilder, FILENAME_FIELD, filenameFieldName, 504 false); 518 505 return buildNxEditUrl(queryParamBuilder.toString()); 519 506 } … … 550 537 551 538 StringBuilder queryParamBuilder = new StringBuilder(); 552 addQueryParameter(queryParamBuilder, LiveEditConstants.ACTION, 553 LiveEditConstants.ACTION_CREATE_DOCUMENT, true); 554 addQueryParameter(queryParamBuilder, LiveEditConstants.MIMETYPE, 555 mimetype, false); 556 addQueryParameter(queryParamBuilder, LiveEditConstants.SCHEMA, 557 schemaName, false); 558 addQueryParameter(queryParamBuilder, LiveEditConstants.BLOB_FIELD, 559 blobFieldName, false); 560 addQueryParameter(queryParamBuilder, LiveEditConstants.FILENAME_FIELD, 561 filenameFieldName, false); 562 addQueryParameter(queryParamBuilder, LiveEditConstants.DOC_TYPE, 563 docType, false); 539 addQueryParameter(queryParamBuilder, ACTION, ACTION_CREATE_DOCUMENT, 540 true); 541 addQueryParameter(queryParamBuilder, MIMETYPE, mimetype, false); 542 addQueryParameter(queryParamBuilder, SCHEMA, schemaName, false); 543 addQueryParameter(queryParamBuilder, BLOB_FIELD, blobFieldName, false); 544 addQueryParameter(queryParamBuilder, FILENAME_FIELD, filenameFieldName, 545 false); 546 addQueryParameter(queryParamBuilder, DOC_TYPE, docType, false); 564 547 return buildNxEditUrl(queryParamBuilder.toString()); 565 548 } … … 601 584 602 585 StringBuilder queryParamBuilder = new StringBuilder(); 603 addQueryParameter(queryParamBuilder, LiveEditConstants.ACTION, 604 LiveEditConstants.ACTION_CREATE_DOCUMENT_FROM_TEMPLATE, true); 605 addQueryParameter(queryParamBuilder, 606 LiveEditConstants.TEMPLATE_REPO_ID, 586 addQueryParameter(queryParamBuilder, ACTION, 587 ACTION_CREATE_DOCUMENT_FROM_TEMPLATE, true); 588 addQueryParameter(queryParamBuilder, TEMPLATE_REPO_ID, 607 589 template.getRepositoryName(), false); 608 addQueryParameter(queryParamBuilder, 609 LiveEditConstants.TEMPLATE_DOC_REF, 590 addQueryParameter(queryParamBuilder, TEMPLATE_DOC_REF, 610 591 template.getRef().toString(), false); 611 addQueryParameter(queryParamBuilder, LiveEditConstants.TEMPLATE_SCHEMA,592 addQueryParameter(queryParamBuilder, TEMPLATE_SCHEMA, 612 593 templateSchemaName, false); 613 addQueryParameter(queryParamBuilder, 614 LiveEditConstants.TEMPLATE_BLOB_FIELD, templateBlobFieldName, 594 addQueryParameter(queryParamBuilder, TEMPLATE_BLOB_FIELD, 595 templateBlobFieldName, false); 596 addQueryParameter(queryParamBuilder, SCHEMA, schemaName, false); 597 addQueryParameter(queryParamBuilder, BLOB_FIELD, blobFieldName, false); 598 addQueryParameter(queryParamBuilder, FILENAME_FIELD, filenameFieldName, 615 599 false); 616 addQueryParameter(queryParamBuilder, LiveEditConstants.SCHEMA, 617 schemaName, false); 618 addQueryParameter(queryParamBuilder, LiveEditConstants.BLOB_FIELD, 619 blobFieldName, false); 620 addQueryParameter(queryParamBuilder, LiveEditConstants.FILENAME_FIELD, 621 filenameFieldName, false); 622 addQueryParameter(queryParamBuilder, LiveEditConstants.DOC_TYPE, 623 docType, false); 600 addQueryParameter(queryParamBuilder, DOC_TYPE, docType, false); 624 601 return buildNxEditUrl(queryParamBuilder.toString()); 625 602 } org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/tag/fn/LiveEditConstants.java
r30376 r30572 37 37 public static final String ACTION_CREATE_DOCUMENT_FROM_TEMPLATE = "createFromTemplate"; 38 38 39 // default fields to store LiveEditable blobs and related fields 40 41 public static final String DEFAULT_DOCTYPE = "File"; 42 43 // to be deprecated once all filenames are stored in the blob itself 44 public static final String DEFAULT_FILENAME_FIELD = "filename"; 45 46 public static final String DEFAULT_BLOB_FIELD = "content"; 47 48 public static final String DEFAULT_SCHEMA = "file"; 49 39 50 }
