Index: lams_build/lib/lams/lams-contentrepository.jar =================================================================== diff -u -rf9b23e848885c277bcc9de377b94ae3884ce7a6d -rf56236d1da6c247b7f44b83924f01f92438f8843 Binary files differ Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -rf56236d1da6c247b7f44b83924f01f92438f8843 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java (.../IToolContentHandler.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/IToolContentHandler.java (.../IToolContentHandler.java) (revision f56236d1da6c247b7f44b83924f01f92438f8843) @@ -97,6 +97,30 @@ throws RepositoryCheckedException, InvalidParameterException, RepositoryCheckedException; /** + * Update an existing file in the repository. This will create a new version of this file (its version number will + * be equal to the current one incremented by 1). + * + * @param uuid + * unique id of the updated file. Mandatory + * + * @param stream + * Input filestream. Mandatory. + * @param fileName + * Input filename. Mandatory. + * @param mimeType + * Mimetype of file. Optional. + * @return key to the new content repository node + * @throws InvalidParameterException + * One of the mandatory parameters is missing. + * @throws FileException + * An error occured writing the input stream to disk. + * @throws RepositoryCheckedException + * Some other error occured. + */ + public abstract NodeKey updateFile(Long uuid, InputStream stream, String fileName, String mimeType) + throws RepositoryCheckedException, InvalidParameterException, RepositoryCheckedException; + + /** * Save a directory of files in the content repository. * * @param ticket Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolContentHandler.java =================================================================== diff -u -r5af735c7b7eded85eca276fe808a667175910267 -rf56236d1da6c247b7f44b83924f01f92438f8843 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolContentHandler.java (.../ToolContentHandler.java) (revision 5af735c7b7eded85eca276fe808a667175910267) +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/ToolContentHandler.java (.../ToolContentHandler.java) (revision f56236d1da6c247b7f44b83924f01f92438f8843) @@ -174,7 +174,29 @@ return nodeKey; } + + @Override + public NodeKey updateFile(Long uuid, InputStream stream, String fileName, String mimeType) + throws RepositoryCheckedException, InvalidParameterException, RepositoryCheckedException { + NodeKey nodeKey = null; + try { + try { + nodeKey = getRepositoryService().updateFileItem(getTicket(false), uuid, fileName, stream, mimeType, null); + } catch (AccessDeniedException e) { + log.warn("Unable to access repository to add file " + fileName + "AccessDeniedException: " + + e.getMessage() + " Retrying login."); + nodeKey = getRepositoryService().updateFileItem(getTicket(true), uuid, fileName, stream, mimeType, null); + } + } catch (RepositoryCheckedException e2) { + log.warn("Unable to to updateFile" + fileName + "Repository Exception: " + e2.getMessage() + + " Retry not possible."); + throw e2; + } + + return nodeKey; + } + /** * TODO To be removed from the system and replaced with the call with the user id. */