- additional 'allow' attribute on <transaction> element in web script descriptor
- values: readonly, readwrite (default)
- readonly means that the whole web script executes in read transaction
- readonly lighter weight; no flushing, no cache checks/updates
- transaction aware web script response buffers
- only commits to response when trx is committed
- fixes ALFCOM-2497 - CMIS: createFolder & immediately add document can fail
- also means errors half-way thru response result in clean response with error contents only
- readonly transactions are not buffered
- WebScript RepoStore now uses ReadOnly transaction for gets
- CMIS getter Web Scripts set to ReadOnly transaction
- Fix up Web Script pattern that checks for WebScriptServletResponse using instanceof
- no longer the case, as it may be wrapped in BufferedResponse
- use getRuntime() instanceof WebScriptServletRuntime and/or
- WebScriptServletRuntime.getHttpServletResponse/Request(WebScriptReponse r) - returns null, if none
Tests:
- Run CMIS Tests
- Run CMIS BulkCreateSystemTest (now working)
- Run Share
Suggestion:
- Update your 'read' web script descriptors to include <transaction allow="readonly">. This will improve repo performance significantly.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@14670 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- Modified AbstractWebScript.execute() so that request-type specific script parameters (e.g. json, feed) are only available to those scripts that declare a type specific suffix, e.g. *.post.json.js, *.put.atomfeed.js. All non request type specific JS scripts will see requestbody (or formData if the request was multipart form data).This is so that scripts relying on requestBody being available at the moment don’t later get broken if we later map their request types to new FormatReaders.
- Moved getExecuteScript from DeclarativeWebScript into AbstractWebScript and made other subclasses use it, therefore using consistent path resolution rules across all web scripts.
- Removed FormatReader.createTemplateParameters() – Dave said this is not needed and the scripts themselves should copy over script parameters that are required by the templates.
- Renamed *.post.js and *.put.js expecting JSON input to *.post.json.js and *.put.json.js
- Extensive manual testing of share
- Added unit tests
- Ensure requestbody available to *.post.jst and *.put.js for unmapped request types
- Ensure json variable available to *.json.post.js and *.json.put.js scripts handling application/json requests
- Ensure entry variable available to *.atom.post.js and *. atom.put.js scripts handling application/atom;type=entry requests
- Ensure error raised for bogus script with extension corresponding to format with no FormatReader
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@11034 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261