diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/acl.put.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/acl.put.js
index a4a62ee795..f48717cf9c 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/acl.put.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/acl.put.js
@@ -34,5 +34,5 @@ script:
}
}
}
- cmis.applyACL(model.node, principalIds, permissions);
+ cmisserver.applyACL(model.node, principalIds, permissions);
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/changes.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/changes.get.js
index 3a9cc5a5ac..c6e03e932f 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/changes.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/changes.get.js
@@ -3,24 +3,24 @@
script:
{
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null || model.filter == "")
{
model.filter = "*";
}
// ACL
- model.includeACL = args[cmis.ARG_INCLUDE_ACL] == "true";
+ model.includeACL = args[cmisserver.ARG_INCLUDE_ACL] == "true";
// Change log
- var changeLogToken = args[cmis.ARG_CHANGE_LOG_TOKEN];
+ var changeLogToken = args[cmisserver.ARG_CHANGE_LOG_TOKEN];
if (changeLogToken == "")
{
changeLogToken = null;
}
- var maxItems = args[cmis.ARG_MAX_ITEMS];
+ var maxItems = args[cmisserver.ARG_MAX_ITEMS];
var maxItemsInt = maxItems != null && maxItems != "" ? parseInt(maxItems) : null;
- model.changeLog = cmis.getChangeLog(changeLogToken, maxItemsInt);
+ model.changeLog = cmisserver.getChangeLog(changeLogToken, maxItemsInt);
// return value
1;
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/checkedout.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/checkedout.get.js
index 1870c0eb49..dc3ddaf9f2 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/checkedout.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/checkedout.get.js
@@ -4,7 +4,7 @@ script:
{
// locate (optional) folder
model.folder = null;
- var folderId = args[cmis.ARG_FOLDER_ID];
+ var folderId = args[cmisserver.ARG_FOLDER_ID];
if (folderId !== null)
{
var folder = getObjectFromObjectId(folderId);
@@ -25,25 +25,25 @@ script:
model.includeDescendants = (args.includeDescendants == "true") ? true : false;
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null)
{
model.filter = "*";
}
// rendition filter
- model.renditionFilter = args[cmis.ARG_RENDITION_FILTER];
+ model.renditionFilter = args[cmisserver.ARG_RENDITION_FILTER];
if (model.renditionFilter === null || model.renditionFilter.length == 0)
{
model.renditionFilter = "cmis:none";
}
// include allowable actions
- var includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS];
+ var includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS];
model.includeAllowableActions = (includeAllowableActions == "true" ? true : false);
// include relationships
- model.includeRelationships = args[cmis.ARG_INCLUDE_RELATIONSHIPS];
+ model.includeRelationships = args[cmisserver.ARG_INCLUDE_RELATIONSHIPS];
if (model.includeRelationships == null || model.includeRelationships.length == 0)
{
model.includeRelationships = "none";
@@ -51,7 +51,7 @@ script:
// retrieve checked-out
var page = paging.createPageOrWindow(args);
- var paged = cmis.queryCheckedOut(person.properties.userName, model.folder, model.includeDescendants, page);
+ var paged = cmisserver.queryCheckedOut(person.properties.userName, model.folder, model.includeDescendants, page);
model.results = paged.results;
model.cursor = paged.cursor;
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/checkedout.post.atomentry.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/checkedout.post.atomentry.js
index 17d5e2309e..9d84c1a60f 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/checkedout.post.atomentry.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/checkedout.post.atomentry.js
@@ -31,7 +31,7 @@ script:
model.node = object.node;
// checkout
- model.pwc = cmis.checkOut(objectId);
+ model.pwc = cmisserver.checkOut(objectId);
// setup for 201 Created response
// TODO: set Content-Location
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/children.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/children.get.js
index 3373c358ee..6cbd191259 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/children.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/children.get.js
@@ -11,8 +11,8 @@ script:
model.node = object.node;
// handle filters
- model.types = args[cmis.ARG_TYPES] === null ? cmis.defaultTypesFilter : args[cmis.ARG_TYPES];
- if (!cmis.isValidTypesFilter(model.types))
+ model.types = args[cmisserver.ARG_TYPES] === null ? cmisserver.defaultTypesFilter : args[cmisserver.ARG_TYPES];
+ if (!cmisserver.isValidTypesFilter(model.types))
{
status.code = 400;
status.message = "Types filter '" + model.types + "' unknown";
@@ -21,28 +21,28 @@ script:
}
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null)
{
model.filter = "*";
}
// rendition filter
- model.renditionFilter = args[cmis.ARG_RENDITION_FILTER];
+ model.renditionFilter = args[cmisserver.ARG_RENDITION_FILTER];
if (model.renditionFilter === null || model.renditionFilter.length == 0)
{
model.renditionFilter = "cmis:none";
}
// order by
- var orderBy = args[cmis.ARG_ORDER_BY];
+ var orderBy = args[cmisserver.ARG_ORDER_BY];
// include allowable actions
- var includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS];
+ var includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS];
model.includeAllowableActions = (includeAllowableActions == "true" ? true : false);
// include relationships
- model.includeRelationships = args[cmis.ARG_INCLUDE_RELATIONSHIPS];
+ model.includeRelationships = args[cmisserver.ARG_INCLUDE_RELATIONSHIPS];
if (model.includeRelationships == null || model.includeRelationships.length == 0)
{
model.includeRelationships = "none";
@@ -50,7 +50,7 @@ script:
// retrieve children
var page = paging.createPageOrWindow(args);
- var paged = cmis.queryChildren(model.node, model.types, orderBy, page);
+ var paged = cmisserver.queryChildren(model.node, model.types, orderBy, page);
model.results = paged.results;
model.cursor = paged.cursor;
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/children.post.atom.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/children.post.atom.js
index 4e7a0ad8cf..81201c957c 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/children.post.atom.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/children.post.atom.js
@@ -22,7 +22,7 @@ script:
model.parent = parent.node;
// versioning state
- var versioningState = args[cmis.ARG_VERSIONING_STATE];
+ var versioningState = args[cmisserver.ARG_VERSIONING_STATE];
if (versioningState === null || versioningState.length == 0)
{
versioningState = "major";
@@ -32,7 +32,7 @@ script:
var object = entry.getExtension(atom.names.cmisra_object);
var objectIdProp = (object !== null) ? object.objectId : null;
var objectId = (objectIdProp !== null) ? objectIdProp.nativeValue : null;
- var sourceFolderId = args[cmis.ARG_SOURCE_FOLDER_ID];
+ var sourceFolderId = args[cmisserver.ARG_SOURCE_FOLDER_ID];
var node = null;
if (objectId == null)
@@ -54,7 +54,7 @@ script:
}
node = object.node;
- cmis.addObjectToFolder(node, model.parent);
+ cmisserver.addObjectToFolder(node, model.parent);
}
else
{
@@ -69,7 +69,7 @@ script:
node = object.node;
// perform move
- cmis.moveObject(node, model.parent, sourceFolderId);
+ cmisserver.moveObject(node, model.parent, sourceFolderId);
}
// success
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/cmis.lib.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/cmis.lib.html.ftl
new file mode 100644
index 0000000000..30adeea451
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/cmis.lib.html.ftl
@@ -0,0 +1,77 @@
+<#macro head>
+
+
+ <@cmisLib.connectionNavigation conn>Information@cmisLib.connectionNavigation>
+
+
+
+ ${repoinfo.name}
+ ${repoinfo.id}
+ ${repoinfo.productName}
+ ${repoinfo.productVersion}
+ ${repoinfo.vendorName}
+ ${repoinfo.cmisVersionSupported}
+
+
+
+
+
+
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/repo.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/repo.get.js
new file mode 100644
index 0000000000..c961e0bf2d
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/cmisbrowser/repo.get.js
@@ -0,0 +1,10 @@
+var connectionId = url.templateArgs["conn"];
+
+if (connectionId) {
+ model.conn = cmis.getConnection(connectionId);
+} else {
+ model.conn = cmis.getConnection();
+}
+
+model.repoinfo = model.conn.session.repositoryInfo;
+model.rootFolder = model.conn.session.rootFolder;
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/content.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/content.get.desc.xml
new file mode 100644
index 0000000000..269566ac2c
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/content.get.desc.xml
@@ -0,0 +1,5 @@
+
+ CMIS Content Stream
+ /cmis/content
+ user
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscreatefolder.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscreatefolder.get.desc.xml
new file mode 100644
index 0000000000..0016b79680
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscreatefolder.get.desc.xml
@@ -0,0 +1,5 @@
+
+ CMIS Create Folder Example
+ /cmissamples/createfolder
+ user
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscreatefolder.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscreatefolder.get.html.ftl
new file mode 100644
index 0000000000..75b0c375ac
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscreatefolder.get.html.ftl
@@ -0,0 +1,40 @@
+
+
+
CMIS Create Folder
+
+
+
+
New Folder
+ <#if folder??>
+
+
+ Name: ${folder.name}
+ Path: ${folder.path}
+ Id: ${folder.id}
+ Type: ${folder.type.id}
+ Created by: ${folder.createdBy}
+ Creation date: ${folder.creationDate.time?datetime}
+
+
+ <#else>
+
+
+
+ #if>
+
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscreatefolder.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscreatefolder.get.js
new file mode 100644
index 0000000000..5bfca14b71
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscreatefolder.get.js
@@ -0,0 +1,27 @@
+// get the sample user connection
+var connectionId = "cmis-sample-connection"
+var cmisConnection = cmis.getConnection(connectionId)
+if (cmisConnection == null) {
+ // if no connection exists, talk to the local server
+ cmisConnection = cmis.getConnection()
+}
+
+var cmisSession = cmisConnection.getSession()
+
+// get arguments
+var path = args["path"]
+var name = args["name"]
+
+if (path != null && name != null)
+{
+ // get path folder
+ var parentFolder = cmisSession.getObjectByPath(path)
+
+ // set up properties
+ var properties = cmis.createMap()
+ properties["cmis:name"] = name
+ properties["cmis:objectTypeId"] = "cmis:folder"
+
+ // create folder
+ model.folder = parentFolder.createFolder(properties)
+}
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscurrent.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscurrent.get.desc.xml
new file mode 100644
index 0000000000..6018dcd26c
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscurrent.get.desc.xml
@@ -0,0 +1,5 @@
+
+ CMIS Current Connection
+ /cmissamples/current
+ user
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscurrent.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscurrent.get.html.ftl
new file mode 100644
index 0000000000..4f6a7ad82e
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscurrent.get.html.ftl
@@ -0,0 +1,55 @@
+
+
+
CMIS Connection
+
+
+
+
Connection
+
+ Is default connection: ${connection.default?string}
+ Is shared connection: ${connection.shared?string}
+
+
+
Repository Info
+
+ Id: ${cmisSession.repositoryInfo.id?html}
+ Name: ${cmisSession.repositoryInfo.name?html}
+ Description: ${cmisSession.repositoryInfo.description?html}
+ Vendor: ${cmisSession.repositoryInfo.vendorName?html}
+ Product name: ${cmisSession.repositoryInfo.productName?html}
+ Product version: ${cmisSession.repositoryInfo.productVersion?html}
+
+
+
Root folder
+
Root folder Id: ${cmisSession.rootFolder.id?html}
+
+
+
+ Name
+ Id
+ Type
+
+ <#list rootFolderChildren as obj>
+
+ ${obj.name?html}
+ ${obj.id?html}
+ ${obj.type.id?html}
+
+ #list>
+
+
+
Base Types
+
+
+ Name
+ Id
+
+ <#list baseTypes as bt>
+
+ ${bt.displayName?html}
+ ${bt.id?html}
+
+ #list>
+
+
+
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscurrent.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscurrent.get.js
new file mode 100644
index 0000000000..a6dcbc7436
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmiscurrent.get.js
@@ -0,0 +1,15 @@
+// get the sample user connection
+var connectionId = "cmis-sample-connection"
+var cmisConnection = cmis.getConnection(connectionId)
+if (cmisConnection == null) {
+ // if no connection exists, talk to the local server
+ cmisConnection = cmis.getConnection()
+}
+
+// get CMIS session
+var cmisSession = cmisConnection.getSession();
+
+model.connection = cmisConnection;
+model.cmisSession = cmisSession;
+model.rootFolderChildren = cmisSession.getRootFolder().getChildren().iterator();
+model.baseTypes = cmisSession.getTypeChildren(null, false).iterator();
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdocbrowser.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdocbrowser.get.desc.xml
new file mode 100644
index 0000000000..a5f0545752
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdocbrowser.get.desc.xml
@@ -0,0 +1,5 @@
+
+ CMIS Browser
+ /cmissamples/browser
+ user
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdocbrowser.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdocbrowser.get.html.ftl
new file mode 100644
index 0000000000..42865f2557
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdocbrowser.get.html.ftl
@@ -0,0 +1,51 @@
+
+
+
${folder.name} - CMIS Browser
+
+
+
+
+ <#if !folder.rootFolder>
UP | #if>
${folder.path?html!""}
+
+
+
+
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdocbrowser.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdocbrowser.get.js
new file mode 100644
index 0000000000..f65c3236e4
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdocbrowser.get.js
@@ -0,0 +1,29 @@
+// get the sample user connection
+var connectionId = "cmis-sample-connection"
+var cmisConnection = cmis.getConnection(connectionId)
+if (cmisConnection == null) {
+ // if no connection exists, talk to the local server
+ cmisConnection = cmis.getConnection()
+}
+
+// get CMIS session
+var cmisSession = cmisConnection.getSession();
+
+model.cmisSession = cmisSession;
+model.baseTypes = cmisSession.getTypeChildren(null, false).iterator();
+
+
+if (args.id == null)
+{
+ model.folder = cmisSession.getRootFolder();
+}
+else
+{
+ model.folder = cmisSession.getObject(args.id);
+}
+
+model.connection = cmisConnection;
+
+var operationContext = cmisSession.createOperationContext();
+operationContext.setRenditionFilterString("cmis:thumbnail");
+model.children = model.folder.getChildren(operationContext).iterator();
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdownload.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdownload.get.desc.xml
new file mode 100644
index 0000000000..c37cd203d4
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdownload.get.desc.xml
@@ -0,0 +1,5 @@
+
+ CMIS Document Download
+ /cmissamples/download
+ user
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdownload.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdownload.get.html.ftl
new file mode 100644
index 0000000000..1c9e82d730
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdownload.get.html.ftl
@@ -0,0 +1,42 @@
+
+
+
CMIS Document Download
+
+
+
+
Document
+
+ <#if doc??>
+
+
+ Name: ${doc.name?html}
+ Id: ${doc.id?html}
+ Type: ${doc.type.displayName?html} (${doc.type.id?html})
+ Created by: ${doc.createdBy?html}
+ Creation date: ${doc.creationDate.time?datetime}
+ Last modified by: ${doc.lastModifiedBy?html}
+ Last modification date: ${doc.lastModificationDate.time?datetime}
+ Size: ${doc.contentStreamLength?c} bytes
+ MIME type: ${doc.contentStreamMimeType?html}
+ Version label: ${doc.versionLabel!""?html}
+ download
+
+
+ <#else>
+
+
+
+ #if>
+
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdownload.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdownload.get.js
new file mode 100644
index 0000000000..6fe86fc55c
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisdownload.get.js
@@ -0,0 +1,25 @@
+// get the sample user connection
+var connectionId = "cmis-sample-connection"
+var cmisConnection = cmis.getConnection(connectionId)
+if (cmisConnection == null) {
+ // if no connection exists, talk to the local server
+ cmisConnection = cmis.getConnection()
+}
+
+model.connection = cmisConnection;
+var cmisSession = cmisConnection.getSession()
+
+// get arguments
+var path = args["path"]
+
+if (path != null) {
+ // if the path is set, get the document
+ var doc = cmisSession.getObjectByPath(path)
+ if (!cmis.isDocument(doc)) {
+ status.code = 404;
+ status.message = "Object is not a document!";
+ status.redirect = true;
+ } else {
+ model.doc = doc
+ }
+}
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmislocal.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmislocal.get.desc.xml
deleted file mode 100644
index e1e56a5808..0000000000
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmislocal.get.desc.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
- Local test
- /cmissample/local
- user
-
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmislocal.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmislocal.get.html.ftl
deleted file mode 100644
index 2d29d2b1c5..0000000000
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmislocal.get.html.ftl
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
CMIS Connection
-
-
-
-
Repository Info
-
- Id: ${cmisSession.repositoryInfo.id}
- Name: ${cmisSession.repositoryInfo.name}
- Description: ${cmisSession.repositoryInfo.description}
- Vendor: ${cmisSession.repositoryInfo.vendorName}
- Product name: ${cmisSession.repositoryInfo.productName}
- Product version: ${cmisSession.repositoryInfo.productVersion}
-
-
-
Root folder
- Root folder Id: ${cmisSession.rootFolder.id}
-
-
-
- Name
- Id
- Type
-
- <#list rootFolderChildren as obj>
-
- ${obj.name}
- ${obj.id}
- ${obj.type.id}
-
- #list>
-
-
-
Base Types
-
-
- Name
- Id
-
- <#list baseTypes as bt>
-
- ${bt.displayName}
- ${bt.id}
-
- #list>
-
-
-
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmislocal.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmislocal.get.js
deleted file mode 100644
index 9cb4aecdd2..0000000000
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmislocal.get.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// get the local or default remote connection
-var cmisConnection = cmisclient.getConnection();
-
-// get CMIS session
-var cmisSession = cmisConnection.getSession();
-
-model.cmisSession = cmisSession;
-model.rootFolderChildren = cmisSession.getRootFolder().getChildren().iterator();
-model.baseTypes = cmisSession.getTypeChildren(null, false).iterator();
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.get.desc.xml
new file mode 100644
index 0000000000..536d0e6a44
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.get.desc.xml
@@ -0,0 +1,5 @@
+
+ CMIS Client Samples
+ /cmissamples
+ user
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.get.html.ftl
new file mode 100644
index 0000000000..4120a83f8c
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.get.html.ftl
@@ -0,0 +1,83 @@
+
+
+
CMIS Client Samples
+
+
+
+
CMIS Client Samples
+
+
+
+
+
Current CMIS Connection
+
+ Id: ${cmisSession.repositoryInfo.id?html}
+ Name: ${cmisSession.repositoryInfo.name?html}
+ Description: ${cmisSession.repositoryInfo.description?html}
+ Vendor: ${cmisSession.repositoryInfo.vendorName?html}
+ Product name: ${cmisSession.repositoryInfo.productName?html}
+ Product version: ${cmisSession.repositoryInfo.productVersion?html}
+
+
+
+
Select CMIS Connection
+
+
+
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.get.js
new file mode 100644
index 0000000000..ae8f5da0e1
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.get.js
@@ -0,0 +1,13 @@
+// get the local or default remote connection
+var cmisConnection = null
+
+// get the sample user connection
+cmisConnection = cmis.getConnection("cmis-sample-connection")
+if(cmisConnection == null)
+{
+ // if no connection exists, talk to the local server
+ cmisConnection = cmis.getConnection()
+}
+
+model.cmisSession = cmisConnection.getSession()
+model.cmisServers = cmis.getServerDefinitions()
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.post.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.post.desc.xml
new file mode 100644
index 0000000000..536d0e6a44
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.post.desc.xml
@@ -0,0 +1,5 @@
+
+ CMIS Client Samples
+ /cmissamples
+ user
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.post.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.post.html.ftl
new file mode 100644
index 0000000000..08de0bb34f
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.post.html.ftl
@@ -0,0 +1,61 @@
+
+
+
CMIS Connection
+
+
+
+
Connection
+
+ <#if error??>
+
Error: ${error}
+ <#else>
+
Established!
+ #if>
+
+
+
+
+
+
Repository Info
+
+ Id: ${cmisSession.repositoryInfo.id?html}
+ Name: ${cmisSession.repositoryInfo.name?html}
+ Description: ${cmisSession.repositoryInfo.description?html}
+ Vendor: ${cmisSession.repositoryInfo.vendorName?html}
+ Product name: ${cmisSession.repositoryInfo.productName?html}
+ Product version: ${cmisSession.repositoryInfo.productVersion?html}
+
+
+
Root folder
+
Root folder Id: ${cmisSession.rootFolder.id?html}
+
+
+
+ Name
+ Id
+ Type
+
+ <#list rootFolderChildren as obj>
+
+ ${obj.name?html}
+ ${obj.id?html}
+ ${obj.type.id?html}
+
+ #list>
+
+
+
Base Types
+
+
+ Name
+ Id
+
+ <#list baseTypes as bt>
+
+ ${bt.displayName?html}
+ ${bt.id?html}
+
+ #list>
+
+
+
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.post.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.post.js
new file mode 100644
index 0000000000..45abf09c89
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmissamples.post.js
@@ -0,0 +1,93 @@
+var connectionId = "cmis-sample-connection"
+
+// get the current user connection, returns null if it is the default connection
+var cmisConnection = cmis.getConnection(connectionId)
+
+var error = null
+var type = args["type"]
+
+if (type == null) {
+ error = "Connection type not set!"
+} else if (type == "local") {
+ // local Alfresco server
+
+ // close current connection and get the local connection
+ if (cmisConnection != null) {
+ cmisConnection.close()
+ }
+ cmisConnection = cmis.getConnection()
+
+} else if (type == "config") {
+ // OpenCMIS configuration
+
+ var config = args["config"]
+ if (config == null) {
+ error = "No configuration!"
+ } else {
+ var parameters = cmis.createMap()
+ var lines = config.split("\r\n")
+
+ // parse the configuration
+ for (idx in lines) {
+ var line = lines[idx]
+ var x = line.indexOf("=")
+ if (x > 0) {
+ parameters[line.substring(0, x)] = line.substring(x + 1)
+ }
+ }
+
+ // set up a server definition
+ var serverDefinition = cmis.createServerDefinition("customserver", parameters)
+
+ // close current connection and open a new one
+ if (cmisConnection != null) {
+ cmisConnection.close()
+ }
+ cmisConnection = cmis.createUserConnection(serverDefinition, connectionId)
+ }
+
+} else if (type == "server") {
+ // preconfigured server
+
+ var server = args["server"]
+ if (server == null) {
+ error = "No server provided!"
+ } else {
+ // find the server definition
+ var serverDefinition = cmis.getServerDefinition(server)
+ if (serverDefinition == null) {
+ error = "Server definition not found!"
+ } else {
+ // if username and password are set, create a new server definition
+ if (args["username"] != null && args["username"].length > 0) {
+ if (args["repositoryid"] != null && args["repositoryid"].length > 0) {
+ serverDefinition = cmis.createServerDefinition(serverDefinition, args["username"], args["password"], args["repositoryid"])
+ } else {
+ serverDefinition = cmis.createServerDefinition(serverDefinition, args["username"], args["password"])
+ }
+ }
+
+ // close current connection and open a new one
+ if (cmisConnection != null) {
+ cmisConnection.close()
+ }
+ cmisConnection = cmis.createUserConnection(serverDefinition, connectionId)
+ }
+ }
+
+} else {
+ error = "Unknown type!"
+}
+
+// handle errors
+if (error != null) {
+ model.error = error
+
+ if (cmisConnection == null) {
+ cmisConnection = cmis.getConnection()
+ }
+}
+
+model.cmisSession = cmisConnection.getSession()
+model.rootFolderChildren = model.cmisSession.getRootFolder().getChildren().iterator();
+model.baseTypes = model.cmisSession.getTypeChildren(null, false).iterator();
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.desc.xml
index 33bf9c1f0e..87c25a39f5 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.desc.xml
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.desc.xml
@@ -1,4 +1,4 @@
- CMIS servers
- /cmissample/servers
+ CMIS Servers
+ /cmissamples/servers
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.html.ftl
index 4ad03b3335..8cc5f2d613 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.html.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.html.ftl
@@ -14,12 +14,12 @@
<#list cmisServers as s>
- ${s.name}
- ${s.description}
+ ${s.name?html}
+ ${s.description?html}
<#assign p = s.parameters>
<#list p?keys as key>
- ${key} = ${p[key]}
+ ${key?html} = ${p[key]?html}
#list>
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.js
index 766350eeb0..9cc61f0782 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisserver.get.js
@@ -1,2 +1,2 @@
// get all configured CMIS servers
-model.cmisServers = cmisclient.getServerDefinitions();
+model.cmisServers = cmis.getServerDefinitions();
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.get.desc.xml
new file mode 100644
index 0000000000..1c422b966b
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.get.desc.xml
@@ -0,0 +1,5 @@
+
+ CMIS Document Upload Form
+ /cmissamples/upload
+ user
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.get.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.get.html.ftl
new file mode 100644
index 0000000000..2c1eb64c25
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.get.html.ftl
@@ -0,0 +1,29 @@
+
+
+
CMIS Upload Web Script Sample
+
+
+
+
Upload
+
+
+
+
+
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.post.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.post.desc.xml
new file mode 100644
index 0000000000..47266d317e
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.post.desc.xml
@@ -0,0 +1,5 @@
+
+ CMIS Document Upload
+ /cmissamples/upload
+ user
+
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.post.html.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.post.html.ftl
new file mode 100644
index 0000000000..8d439f8599
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.post.html.ftl
@@ -0,0 +1,18 @@
+
+
+
Upload Web Script Sample
+
+
+
+
New Document
+
+ Name: ${doc.name?html}
+ Id: ${doc.id?html}
+ Type: ${doc.type.id?html}
+ Created by: ${doc.createdBy?html}
+ Creation date: ${doc.creationDate.time?datetime}
+ Size: ${(doc.contentStreamLength/1024)?int} KB
+ MIME type: ${doc.contentStreamMimeType?html}
+
+
+
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.post.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.post.js
new file mode 100644
index 0000000000..2871447f08
--- /dev/null
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/client/sample/cmisupload.post.js
@@ -0,0 +1,46 @@
+//get the sample user connection
+var connectionId = "cmis-sample-connection"
+var cmisConnection = cmis.getConnection(connectionId)
+if (cmisConnection == null) {
+ // if no connection exists, talk to the local server
+ cmisConnection = cmis.getConnection()
+}
+
+// get CMIS session
+var cmisSession = cmisConnection.getSession();
+model.cmisSession = cmisSession;
+
+// locate file attributes
+for each (field in formdata.fields) {
+ if (field.name == "name") {
+ name = field.value;
+ } else if (field.name == "file" && field.isFile) {
+ filename = field.filename;
+ content = field.content;
+ } else if (field.name == "path") {
+ path = field.value;
+ }
+}
+
+// ensure mandatory file attributes have been located
+if (filename == undefined || content == undefined) {
+ status.code = 400;
+ status.message = "Uploaded file cannot be located in request";
+ status.redirect = true;
+} else {
+ var folder = cmisSession.getObjectByPath(path);
+
+ if (folder != undefined && folder.baseType.id == "cmis:folder") {
+ var properties = cmis.createMap()
+ properties["cmis:name"] = String(name);
+ properties["cmis:objectTypeId"] = "cmis:document";
+
+ var contentStream = cmis.createContentStream(filename, content);
+
+ model.doc = folder.createDocument(properties, contentStream, null);
+ } else {
+ status.code = 400;
+ status.message = "Error: Upload folder does not exist";
+ status.redirect = true;
+ }
+}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/cmis.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/cmis.get.js
index c5b967676b..b67bff96b1 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/cmis.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/cmis.get.js
@@ -1,19 +1,19 @@
-model.cmisVersion = cmis.version;
-model.cmisSpecTitle = cmis.specTitle;
-model.defaultRootFolder = cmis.defaultRootFolder;
-model.defaultRootFolderPath = cmis.defaultRootFolderPath;
-model.querySupport = cmis.querySupport.label;
-model.joinSupport = cmis.joinSupport.label;
-model.pwcSearchable = cmis.pwcSearchable;
-model.allVersionsSearchable = cmis.allVersionsSearchable;
-model.aclCapability = cmis.aclCapability.label;
-model.aclSupportedPermissions = cmis.aclSupportedPermissions.label;
-model.aclPropagation = cmis.aclPropagation.label;
-model.repositoryPermissions = cmis.repositoryPermissions;
-model.permissionMappings = cmis.permissionMappings;
-model.principalAnonymous = cmis.principalAnonymous;
-model.principalAnyone = cmis.principalAnyone;
-model.changeLogCapability = cmis.changeLogCapability.label;
-model.lastChangeLogToken = cmis.lastChangeLogToken;
-model.changesOnType = cmis.changesOnType;
-model.changesIncomplete = cmis.changesIncomplete;
+model.cmisVersion = cmisserver.version;
+model.cmisSpecTitle = cmisserver.specTitle;
+model.defaultRootFolder = cmisserver.defaultRootFolder;
+model.defaultRootFolderPath = cmisserver.defaultRootFolderPath;
+model.querySupport = cmisserver.querySupport.label;
+model.joinSupport = cmisserver.joinSupport.label;
+model.pwcSearchable = cmisserver.pwcSearchable;
+model.allVersionsSearchable = cmisserver.allVersionsSearchable;
+model.aclCapability = cmisserver.aclCapability.label;
+model.aclSupportedPermissions = cmisserver.aclSupportedPermissions.label;
+model.aclPropagation = cmisserver.aclPropagation.label;
+model.repositoryPermissions = cmisserver.repositoryPermissions;
+model.permissionMappings = cmisserver.permissionMappings;
+model.principalAnonymous = cmisserver.principalAnonymous;
+model.principalAnyone = cmisserver.principalAnyone;
+model.changeLogCapability = cmisserver.changeLogCapability.label;
+model.lastChangeLogToken = cmisserver.lastChangeLogToken;
+model.changesOnType = cmisserver.changesOnType;
+model.changesIncomplete = cmisserver.changesIncomplete;
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/content.delete.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/content.delete.js
index dc291f2517..4a7202f841 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/content.delete.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/content.delete.js
@@ -10,7 +10,7 @@ script:
}
var node = object.node;
- cmis.deleteContentStream(node);
+ cmisserver.deleteContentStream(node);
status.code = 204; // Success, but no response content
status.redirect = true;
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/descendants.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/descendants.get.js
index 7989b37477..1daa4fec5c 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/descendants.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/descendants.get.js
@@ -10,8 +10,8 @@ script:
model.node = object.node;
// handle filters
- model.types = args[cmis.ARG_TYPES] === null ? cmis.defaultTypesFilter : args[ARG_TYPES];
- if (!cmis.isValidTypesFilter(model.types))
+ model.types = args[cmisserver.ARG_TYPES] === null ? cmisserver.defaultTypesFilter : args[ARG_TYPES];
+ if (!cmisserver.isValidTypesFilter(model.types))
{
status.code = 400;
status.message = "Types filter '" + model.types + "' unknown";
@@ -20,29 +20,29 @@ script:
}
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null)
{
model.filter = "*";
}
// rendition filter
- model.renditionFilter = args[cmis.ARG_RENDITION_FILTER];
+ model.renditionFilter = args[cmisserver.ARG_RENDITION_FILTER];
if (model.renditionFilter === null || model.renditionFilter.length == 0)
{
model.renditionFilter = "cmis:none";
}
// depth
- var depth = args[cmis.ARG_DEPTH];
+ var depth = args[cmisserver.ARG_DEPTH];
model.depth = (depth === null) ? 1 : parseInt(depth);
// include allowable actions
- var includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS];
+ var includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS];
model.includeAllowableActions = (includeAllowableActions == "true" ? true : false);
// include relationships
- model.includeRelationships = args[cmis.ARG_INCLUDE_RELATIONSHIPS];
+ model.includeRelationships = args[cmisserver.ARG_INCLUDE_RELATIONSHIPS];
if (model.includeRelationships == null || model.includeRelationships.length == 0)
{
model.includeRelationships = "none";
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/index.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/index.get.js
index ea06270d70..cd12a7534e 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/index.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/index.get.js
@@ -1,12 +1,12 @@
var tckRunner = Packages.org.apache.chemistry.tck.atompub.tools.TCKRunner();
model.tckTests = tckRunner.getTestNames();
model.tckOptions = tckRunner.getOptions();
-model.cmisVersion = cmis.version;
-model.cmisSpecTitle = cmis.specTitle;
-model.querySupport = cmis.querySupport.label;
-model.joinSupport = cmis.joinSupport.label;
-model.pwcSearchable = cmis.pwcSearchable;
-model.allVersionsSearchable = cmis.allVersionsSearchable;
-model.aclCapability = cmis.aclCapability.label;
-model.aclSupportedPermissions = cmis.aclSupportedPermissions.label;
-model.aclPropagation = cmis.aclPropagation.label;
+model.cmisVersion = cmisserver.version;
+model.cmisSpecTitle = cmisserver.specTitle;
+model.querySupport = cmisserver.querySupport.label;
+model.joinSupport = cmisserver.joinSupport.label;
+model.pwcSearchable = cmisserver.pwcSearchable;
+model.allVersionsSearchable = cmisserver.allVersionsSearchable;
+model.aclCapability = cmisserver.aclCapability.label;
+model.aclSupportedPermissions = cmisserver.aclSupportedPermissions.label;
+model.aclPropagation = cmisserver.aclPropagation.label;
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/item.delete.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/item.delete.js
index 3d535c101c..f3f3e002af 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/item.delete.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/item.delete.js
@@ -11,7 +11,7 @@ script:
var node = object.node;
// Intentionally pass false as allVersions flag for now. There is no binding.
- cmis.deleteObject(node, false);
+ cmisserver.deleteObject(node, false);
status.code = 204; // Success, but no response content
status.redirect = true;
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/item.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/item.get.js
index 9041bd0aec..b000d922b6 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/item.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/item.get.js
@@ -10,35 +10,35 @@ script:
model.node = object.node;
// return version
- var returnVersion = args[cmis.ARG_RETURN_VERSION];
+ var returnVersion = args[cmisserver.ARG_RETURN_VERSION];
if (returnVersion === null || returnVersion.length == 0)
{
returnVersion = "this";
}
- model.node = cmis.getReturnVersion(model.node, returnVersion);
+ model.node = cmisserver.getReturnVersion(model.node, returnVersion);
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null || model.filter == "")
{
model.filter = "*";
}
// ACL
- model.includeACL = args[cmis.ARG_INCLUDE_ACL] == "true";
+ model.includeACL = args[cmisserver.ARG_INCLUDE_ACL] == "true";
// rendition filter
- model.renditionFilter = args[cmis.ARG_RENDITION_FILTER];
+ model.renditionFilter = args[cmisserver.ARG_RENDITION_FILTER];
if (model.renditionFilter === null || model.renditionFilter.length == 0)
{
model.renditionFilter = "cmis:none";
}
// include allowable actions
- model.includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS] == "true";
+ model.includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS] == "true";
// include relationships
- model.includeRelationships = args[cmis.ARG_INCLUDE_RELATIONSHIPS];
+ model.includeRelationships = args[cmisserver.ARG_INCLUDE_RELATIONSHIPS];
if (model.includeRelationships == null || model.includeRelationships.length == 0)
{
model.includeRelationships = "none";
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/modify.lib.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/modify.lib.js
index 8349013cc5..d4e5e9b8b8 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/modify.lib.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/modify.lib.js
@@ -13,7 +13,7 @@ function createNode(parent, entry, slug, versioningState)
// locate type definition
// TODO: check this against spec - default to Document, if not specified
- var type = cmis.queryType(typeId === null ? DOCUMENT_TYPE_ID.id : typeId);
+ var type = cmisserver.queryType(typeId === null ? DOCUMENT_TYPE_ID.id : typeId);
if (type === null)
{
status.code = 400;
@@ -36,7 +36,7 @@ function createNode(parent, entry, slug, versioningState)
}
else if (baseType == POLICY_TYPE_ID)
{
- node = cmis.createPolicy(typeId, parent);
+ node = cmisserver.createPolicy(typeId, parent);
}
else
{
@@ -58,7 +58,7 @@ function createNode(parent, entry, slug, versioningState)
// apply versioning state
if (baseType == DOCUMENT_TYPE_ID && versioningState != null)
{
- node = cmis.applyVersioningState(node, versioningState);
+ node = cmisserver.applyVersioningState(node, versioningState);
}
// only return node if updated successfully
@@ -91,7 +91,7 @@ function updateNode(node, entry, exclude, validator)
var vals = new Object();
var exclude = (exclude == null) ? new Array() : exclude;
exclude.push(PROP_BASE_TYPE_ID);
- var typeDef = cmis.queryType(node);
+ var typeDef = cmisserver.queryType(node);
// Apply the provided properties of the node type
unpackProperties(node, typeDef, object == null ? null : object.properties, exclude, validator, vals);
@@ -111,7 +111,7 @@ function updateNode(node, entry, exclude, validator)
if (extension != null)
{
// Add and remove aspects
- cmis.setAspects(node, extension.aspectsToRemove, extension.aspectsToAdd);
+ cmisserver.setAspects(node, extension.aspectsToRemove, extension.aspectsToAdd);
// Apply the provided properties of the aspects
unpackProperties(node, null, extension.properties, exclude, validator, vals);
@@ -213,7 +213,7 @@ function unpackProperties(node, typeDef, props, exclude, validator, vals)
for each (propName in updateProps)
{
// is this a valid property?
- var propDef = typeDef == null ? cmis.queryProperty(propName) : typeDef.propertyDefinitions[propName];
+ var propDef = typeDef == null ? cmisserver.queryProperty(propName) : typeDef.propertyDefinitions[propName];
if (propDef == null)
{
status.code = 400;
@@ -299,7 +299,7 @@ function createAssociation(source, entry)
// locate relationship type definition
// TODO: check this against spec - default to Relationship, if not specified
- var type = cmis.queryType(typeId === null ? RELATIONSHIP_TYPE_ID.id : typeId);
+ var type = cmisserver.queryType(typeId === null ? RELATIONSHIP_TYPE_ID.id : typeId);
if (type === null)
{
status.setCode(400, "CMIS object type " + typeId + " not understood");
@@ -345,7 +345,7 @@ function createAssociation(source, entry)
function applyPolicy(target, entry)
{
var object = entry.getExtension(atom.names.cmisra_object);
- cmis.applyPolicy(object.objectId, target);
+ cmisserver.applyPolicy(object.objectId, target);
return null;
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/read.lib.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/read.lib.js
index c128208e88..0856cad5f7 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/read.lib.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/read.lib.js
@@ -5,13 +5,13 @@
function getObjectFromUrl()
{
var ret = new Object();
- ret.ref = cmis.createObjectReferenceFromUrl(args, url.templateArgs);
+ ret.ref = cmisserver.createObjectReferenceFromUrl(args, url.templateArgs);
if (ret.ref == null)
{
status.setCode(400, "Cannot determine object reference from URL");
return ret;
}
- ret.node = cmis.getNode(ret.ref);
+ ret.node = cmisserver.getNode(ret.ref);
if (ret.node === null)
{
status.setCode(404, "Cannot find object for " + ret.ref.toString());
@@ -26,13 +26,13 @@ function getObjectFromUrl()
function getObjectFromObjectId(objectId)
{
var ret = new Object();
- ret.ref = cmis.createObjectIdReference(objectId);
+ ret.ref = cmisserver.createObjectIdReference(objectId);
if (ret.ref == null)
{
status.setCode(400, "Cannot create object id reference from " + objectId);
return ret;
}
- ret.node = cmis.getNode(ret.ref);
+ ret.node = cmisserver.getNode(ret.ref);
if (ret.node === null)
{
status.setCode(404, "Cannot find object for " + ret.ref.toString());
@@ -47,13 +47,13 @@ function getObjectFromObjectId(objectId)
function getAssocFromUrl()
{
var ret = new Object();
- ret.ref = cmis.createRelationshipReferenceFromUrl(args, url.templateArgs);
+ ret.ref = cmisserver.createRelationshipReferenceFromUrl(args, url.templateArgs);
if (ret.ref == null)
{
status.setCode(400, "Cannot determine association reference from URL");
return ret;
}
- ret.assoc = cmis.getAssociation(ret.ref);
+ ret.assoc = cmisserver.getAssociation(ret.ref);
if (ret.assoc === null)
{
status.setCode(404, "Cannot find association for " + ret.ref.toString());
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/parent.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/parent.get.js
index 0ba0cf2a57..4bb525e4e2 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/parent.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/parent.get.js
@@ -11,7 +11,7 @@ script:
var node = object.node;
// locate parent
- if (node.id == cmis.defaultRootFolder.id)
+ if (node.id == cmisserver.defaultRootFolder.id)
{
status.code = 404;
status.message = "Object " + object.ref + " parent not found";
@@ -28,18 +28,18 @@ script:
model.node = node.parent;
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null)
{
model.filter = "*";
}
// include allowable actions
- var includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS];
+ var includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS];
model.includeAllowableActions = (includeAllowableActions == "true" ? true : false);
// include relationships
- model.includeRelationships = args[cmis.ARG_INCLUDE_RELATIONSHIPS];
+ model.includeRelationships = args[cmisserver.ARG_INCLUDE_RELATIONSHIPS];
if (model.includeRelationships == null || model.includeRelationships.length == 0)
{
model.includeRelationships = "none";
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/parents.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/parents.get.js
index d34c5d1bf0..75f5133411 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/parents.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/parents.get.js
@@ -21,20 +21,20 @@ script:
model.parents = parents;
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null)
{
model.filter = "*";
}
// rendition filter
- model.renditionFilter = args[cmis.ARG_RENDITION_FILTER];
+ model.renditionFilter = args[cmisserver.ARG_RENDITION_FILTER];
if (model.renditionFilter === null || model.renditionFilter.length == 0)
{
model.renditionFilter = "cmis:none";
}
// include allowable actions
- var includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS];
+ var includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS];
model.includeAllowableActions = (includeAllowableActions == "true" ? true : false);
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/policies.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/policies.get.js
index 11b3617cf2..988e2b5cc5 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/policies.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/policies.get.js
@@ -12,7 +12,7 @@ script:
model.node = object.node;
// property filter
- var filter = args[cmis.ARG_FILTER];
+ var filter = args[cmisserver.ARG_FILTER];
if (filter === null)
{
filter = "*";
@@ -20,7 +20,7 @@ script:
// retrieve policies
var page = paging.createPageOrWindow(args);
- var paged = cmis.getAppliedPolicies(model.node, filter, page);
+ var paged = cmisserver.getAppliedPolicies(model.node, filter, page);
model.results = paged.results;
model.cursor = paged.cursor;
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.delete.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.delete.js
index 855969fcc8..27d375ac32 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.delete.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.delete.js
@@ -9,7 +9,7 @@ script:
}
var node = object.node;
- cmis.cancelCheckOut(node);
+ cmisserver.cancelCheckOut(node);
status.code = 204; // Success, but no response content
status.redirect = true;
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.get.js
index a0ff01a9c4..35eb294e8c 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.get.js
@@ -10,35 +10,35 @@ script:
model.node = object.node;
// return version
- var returnVersion = args[cmis.ARG_RETURN_VERSION];
+ var returnVersion = args[cmisserver.ARG_RETURN_VERSION];
if (returnVersion === null || returnVersion.length == 0)
{
returnVersion = "this";
}
- model.node = cmis.getReturnVersion(model.node, returnVersion);
+ model.node = cmisserver.getReturnVersion(model.node, returnVersion);
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null || model.filter == "")
{
model.filter = "*";
}
// ACL
- model.includeACL = args[cmis.ARG_INCLUDE_ACL] == "true";
+ model.includeACL = args[cmisserver.ARG_INCLUDE_ACL] == "true";
// rendition filter
- model.renditionFilter = args[cmis.ARG_RENDITION_FILTER];
+ model.renditionFilter = args[cmisserver.ARG_RENDITION_FILTER];
if (model.renditionFilter === null || model.renditionFilter.length == 0)
{
model.renditionFilter = "cmis:none";
}
// include allowable actions
- model.includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS] == "true";
+ model.includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS] == "true";
// include relationships
- model.includeRelationships = args[cmis.ARG_INCLUDE_RELATIONSHIPS];
+ model.includeRelationships = args[cmisserver.ARG_INCLUDE_RELATIONSHIPS];
if (model.includeRelationships == null || model.includeRelationships.length == 0)
{
model.includeRelationships = "none";
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.patch.atom.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.patch.atom.js
index 605e786a1d..2303201ec4 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.patch.atom.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.patch.atom.js
@@ -8,7 +8,7 @@ script:
var object = getObjectFromUrl();
model.node = object.node;
- model.checkin = args[cmis.ARG_CHECKIN] == "true" ? true : false;
+ model.checkin = args[cmisserver.ARG_CHECKIN] == "true" ? true : false;
if (entry !== null)
{
@@ -27,9 +27,9 @@ script:
// checkin
if (model.checkin)
{
- var comment = args[cmis.ARG_CHECKIN_COMMENT];
- var major = args[cmis.ARG_MAJOR];
+ var comment = args[cmisserver.ARG_CHECKIN_COMMENT];
+ var major = args[cmisserver.ARG_MAJOR];
major = (major === null || major == "true") ? true : false;
- model.node = cmis.checkIn(model.node, comment, major);
+ model.node = cmisserver.checkIn(model.node, comment, major);
}
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.put.atom.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.put.atom.js
index 72f22858ea..f9a4af424d 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.put.atom.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/pwc.put.atom.js
@@ -8,7 +8,7 @@ script:
var object = getObjectFromUrl();
model.node = object.node;
- model.checkin = args[cmis.ARG_CHECKIN] == "true" ? true : false;
+ model.checkin = args[cmisserver.ARG_CHECKIN] == "true" ? true : false;
if (entry !== null)
{
@@ -27,9 +27,9 @@ script:
// checkin
if (model.checkin)
{
- var comment = args[cmis.ARG_CHECKIN_COMMENT];
- var major = args[cmis.ARG_MAJOR];
+ var comment = args[cmisserver.ARG_CHECKIN_COMMENT];
+ var major = args[cmisserver.ARG_MAJOR];
major = (major === null || major == "true") ? true : false;
- model.node = cmis.checkIn(model.node, comment, major);
+ model.node = cmisserver.checkIn(model.node, comment, major);
}
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/queries.post.cmisquery.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/queries.post.cmisquery.js
index 4ab05f8ca3..706c6eda08 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/queries.post.cmisquery.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/queries.post.cmisquery.js
@@ -64,7 +64,7 @@ script:
var page = paging.createPageOrWindow(null, null, isNaN(skipCount) ? null : skipCount, isNaN(maxItems) ? null : maxItems);
// perform query
- var paged = cmis.query(model.statement, page);
+ var paged = cmisserver.query(model.statement, page);
model.resultset = paged.result;
model.cursor = paged.cursor;
@@ -72,12 +72,12 @@ script:
// construct query uri
model.queryUri = "/cmis/query";
- model.queryArgs = cmis.ARG_QUERY_STATEMENT + "=" + model.statement;
- if (model.includeAllowableActions) model.queryArgs += "&" + cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS + "=" + model.includeAllowableActions;
- if (model.includeRelationships != "none") model.queryArgs += "&" + cmis.ARG_INCLUDE_RELATIONSHIPS + "=" + model.includeRelationships;
- if (model.renditionFilter != "cmis:none") model.queryArgs += "&" + cmis.ARG_RENDITION_FILTER + "=" + model.renditionFilter;
- model.queryArgs += "&" + cmis.ARG_SKIP_COUNT + "=" + page.number;
- model.queryArgs += "&" + cmis.ARG_MAX_ITEMS + "=" + page.size;
+ model.queryArgs = cmisserver.ARG_QUERY_STATEMENT + "=" + model.statement;
+ if (model.includeAllowableActions) model.queryArgs += "&" + cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS + "=" + model.includeAllowableActions;
+ if (model.includeRelationships != "none") model.queryArgs += "&" + cmisserver.ARG_INCLUDE_RELATIONSHIPS + "=" + model.includeRelationships;
+ if (model.renditionFilter != "cmis:none") model.queryArgs += "&" + cmisserver.ARG_RENDITION_FILTER + "=" + model.renditionFilter;
+ model.queryArgs += "&" + cmisserver.ARG_SKIP_COUNT + "=" + page.number;
+ model.queryArgs += "&" + cmisserver.ARG_MAX_ITEMS + "=" + page.size;
// TODO: set Content-Location
status.code = 201;
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/query.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/query.get.js
index 9930825de5..b10b1a2908 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/query.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/query.get.js
@@ -27,11 +27,11 @@ script:
}
// include allowable actions
- var includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS];
+ var includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS];
model.includeAllowableActions = (includeAllowableActions == "true" ? true : false);
// include relationships
- model.includeRelationships = args[cmis.ARG_INCLUDE_RELATIONSHIPS];
+ model.includeRelationships = args[cmisserver.ARG_INCLUDE_RELATIONSHIPS];
if (model.includeRelationships == null || model.includeRelationships.length == 0)
{
model.includeRelationships = "none";
@@ -39,7 +39,7 @@ script:
// perform query
var page = paging.createPageOrWindow(args);
- var paged = cmis.query(model.statement, page);
+ var paged = cmisserver.query(model.statement, page);
model.resultset = paged.result;
model.cursor = paged.cursor;
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/relationship.delete.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/relationship.delete.js
index 5acf246a28..6c10594883 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/relationship.delete.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/relationship.delete.js
@@ -10,7 +10,7 @@ script:
}
var assoc = rel.assoc;
- cmis.deleteObject(assoc);
+ cmisserver.deleteObject(assoc);
status.code = 204; // Success, but no response content
status.redirect = true;
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/relationship.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/relationship.get.js
index 83f1ac977e..44b6222b49 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/relationship.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/relationship.get.js
@@ -12,13 +12,13 @@ script:
model.assoc = rel.assoc;
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null)
{
model.filter = "*";
}
// include allowable actions
- var includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS];
+ var includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS];
model.includeAllowableActions = (includeAllowableActions == "true" ? true : false);
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/relationships.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/relationships.get.js
index 1af0e4bb1a..e1425753fb 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/relationships.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/relationships.get.js
@@ -12,17 +12,17 @@ script:
model.node = object.node;
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null)
{
model.filter = "*";
}
// relationship type
- var relType = args[cmis.ARG_RELATIONSHIP_TYPE];
+ var relType = args[cmisserver.ARG_RELATIONSHIP_TYPE];
if (relType != null)
{
- model.relTypeDef = cmis.queryType(relType);
+ model.relTypeDef = cmisserver.queryType(relType);
if (model.relTypeDef === null)
{
status.setCode(400, "Relationship type " + relType + " unknown");
@@ -36,10 +36,10 @@ script:
}
// include sub relationship types
- model.includeSubRelationshipTypes = args[cmis.ARG_INCLUDE_SUB_RELATIONSHIP_TYPES] == "true" ? true : false;
+ model.includeSubRelationshipTypes = args[cmisserver.ARG_INCLUDE_SUB_RELATIONSHIP_TYPES] == "true" ? true : false;
// direction
- var direction = args[cmis.ARG_DIRECTION];
+ var direction = args[cmisserver.ARG_DIRECTION];
if (direction !== null && !CMISRelationshipDirectionEnum.FACTORY.validLabel(direction))
{
status.setCode(400, "Direction " + direction + " unknown");
@@ -48,11 +48,11 @@ script:
model.direction = CMISRelationshipDirectionEnum.FACTORY.toEnum(direction);
// include allowable actions
- model.includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS] == "true" ? true : false;
+ model.includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS] == "true" ? true : false;
// retrieve relationships
var page = paging.createPageOrWindow(args);
- var paged = cmis.queryRelationships(model.node, model.relTypeDef, model.includeSubRelationshipTypes, model.direction, page);
+ var paged = cmisserver.queryRelationships(model.node, model.relTypeDef, model.includeSubRelationshipTypes, model.direction, page);
model.results = paged.results;
model.cursor = paged.cursor;
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/tree.delete.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/tree.delete.js
index 6421ca416a..a49ec234eb 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/tree.delete.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/tree.delete.js
@@ -11,7 +11,7 @@ script:
var node = object.node;
// unfileObjects
- var unfileObjects = args[cmis.ARG_UNFILE_OBJECTS];
+ var unfileObjects = args[cmisserver.ARG_UNFILE_OBJECTS];
if (unfileObjects === null || unfileObjects.length == 0)
{
unfileObjects = "delete";
@@ -26,8 +26,8 @@ script:
break script;
}
- var continueOnFailure = (args[cmis.ARG_CONTINUE_ON_FAILURE] == "true");
+ var continueOnFailure = (args[cmisserver.ARG_CONTINUE_ON_FAILURE] == "true");
// Intentionally pass allVersions=false, even though this isn't the default!
- cmis.deleteTree(node, status, continueOnFailure, unfileObjects != "delete", false);
+ cmisserver.deleteTree(node, status, continueOnFailure, unfileObjects != "delete", false);
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/tree.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/tree.get.js
index c19b3ef204..f7568672c4 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/tree.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/tree.get.js
@@ -19,29 +19,29 @@ script:
}
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null)
{
model.filter = "*";
}
// rendition filter
- model.renditionFilter = args[cmis.ARG_RENDITION_FILTER];
+ model.renditionFilter = args[cmisserver.ARG_RENDITION_FILTER];
if (model.renditionFilter === null || model.renditionFilter.length == 0)
{
model.renditionFilter = "cmis:none";
}
// depth
- var depth = args[cmis.ARG_DEPTH];
+ var depth = args[cmisserver.ARG_DEPTH];
model.depth = (depth === null) ? 1 : parseInt(depth);
// include allowable actions
- var includeAllowableActions = args[cmis.ARG_INCLUDE_ALLOWABLE_ACTIONS];
+ var includeAllowableActions = args[cmisserver.ARG_INCLUDE_ALLOWABLE_ACTIONS];
model.includeAllowableActions = (includeAllowableActions == "true" ? true : false);
// include relationships
- model.includeRelationships = args[cmis.ARG_INCLUDE_RELATIONSHIPS];
+ model.includeRelationships = args[cmisserver.ARG_INCLUDE_RELATIONSHIPS];
if (model.includeRelationships == null || model.includeRelationships.length == 0)
{
model.includeRelationships = "none";
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/type.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/type.get.js
index 65662fc6a3..2c71fc7734 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/type.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/type.get.js
@@ -2,7 +2,7 @@ script:
{
// query type
var typeId = url.templateArgs.typeId;
- model.typedef = cmis.queryType(typeId);
+ model.typedef = cmisserver.queryType(typeId);
if (model.typedef === null)
{
status.code = 404;
@@ -12,6 +12,6 @@ script:
}
// handle inherited properties
- var includeInheritedProperties = args[cmis.ARG_INCLUDE_INHERITED_PROPERTIES];
+ var includeInheritedProperties = args[cmisserver.ARG_INCLUDE_INHERITED_PROPERTIES];
model.includeInheritedProperties = includeInheritedProperties == "false" ? false : true;
}
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/typechildren.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/typechildren.get.js
index 050858c13f..2719a29ba0 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/typechildren.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/typechildren.get.js
@@ -1,15 +1,15 @@
script:
{
var page = paging.createPageOrWindow(args);
- var typeId = args[cmis.ARG_TYPE_ID];
+ var typeId = args[cmisserver.ARG_TYPE_ID];
if (typeId === null)
{
- typeId = url.templateArgs[cmis.ARG_TYPE_ID];
+ typeId = url.templateArgs[cmisserver.ARG_TYPE_ID];
}
if (typeId === null)
{
// query for base types
- var paged = cmis.queryTypeChildren(null, page);
+ var paged = cmisserver.queryTypeChildren(null, page);
model.results = paged.results;
model.cursor = paged.cursor;
model.typedef = null;
@@ -17,7 +17,7 @@ script:
else
{
// query a specific type and its children
- var typedef = cmis.queryType(typeId);
+ var typedef = cmisserver.queryType(typeId);
if (typedef === null)
{
status.code = 404;
@@ -25,13 +25,13 @@ script:
status.redirect = true;
break script;
}
- var paged = cmis.queryTypeChildren(typedef, page);
+ var paged = cmisserver.queryTypeChildren(typedef, page);
model.results = paged.results;
model.cursor = paged.cursor;
model.typedef = typedef;
}
// handle property definitions
- var includePropertyDefinitions = args[cmis.ARG_INCLUDE_PROPERTY_DEFINITIONS];
+ var includePropertyDefinitions = args[cmisserver.ARG_INCLUDE_PROPERTY_DEFINITIONS];
model.includePropertyDefinitions = includePropertyDefinitions == "true" ? true : false;
}
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/typedescendants.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/typedescendants.get.js
index da1cffe9cd..58c74fea22 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/typedescendants.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/typedescendants.get.js
@@ -1,22 +1,22 @@
script:
{
// extract type
- var typeId = args[cmis.ARG_TYPE_ID];
+ var typeId = args[cmisserver.ARG_TYPE_ID];
if (typeId === null)
{
- typeId = url.templateArgs[cmis.ARG_TYPE_ID];
+ typeId = url.templateArgs[cmisserver.ARG_TYPE_ID];
}
// descend from root
if (typeId === null)
{
- var paged = cmis.queryTypeChildren(null, paging.createUnlimitedPage());
+ var paged = cmisserver.queryTypeChildren(null, paging.createUnlimitedPage());
model.basetypes = paged.results;
}
else
{
// query a specific type
- var typedef = cmis.queryType(typeId);
+ var typedef = cmisserver.queryType(typeId);
if (typedef === null)
{
status.code = 404;
@@ -28,7 +28,7 @@ script:
}
// depth
- var depth = args[cmis.ARG_DEPTH];
+ var depth = args[cmisserver.ARG_DEPTH];
if (depth == 0)
{
status.code = 500;
@@ -39,6 +39,6 @@ script:
model.depth = (depth === null) ? -1 : parseInt(depth);
// handle property definitions
- var includePropertyDefinitions = args[cmis.ARG_INCLUDE_PROPERTY_DEFINITIONS];
+ var includePropertyDefinitions = args[cmisserver.ARG_INCLUDE_PROPERTY_DEFINITIONS];
model.includePropertyDefinitions = includePropertyDefinitions == "true" ? true : false;
}
\ No newline at end of file
diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/versions.get.js b/config/alfresco/templates/webscripts/org/alfresco/cmis/versions.get.js
index e1b58935d3..11e2dd5f67 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/cmis/versions.get.js
+++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/versions.get.js
@@ -12,12 +12,12 @@ script:
model.node = object.node;
// property filter
- model.filter = args[cmis.ARG_FILTER];
+ model.filter = args[cmisserver.ARG_FILTER];
if (model.filter === null)
{
model.filter = "*";
}
// retrieve versions
- model.nodes = cmis.getAllVersions(model.node);
+ model.nodes = cmisserver.getAllVersions(model.node);
}
diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml
index 2bc7b340a4..8a5b5458fd 100644
--- a/config/alfresco/web-scripts-application-context.xml
+++ b/config/alfresco/web-scripts-application-context.xml
@@ -11,8 +11,10 @@
classpath:alfresco/web-scripts-config.xml
+ classpath:alfresco/web-scripts-cmis-config.xml
classpath:alfresco/extension/web-api-config-custom.xml
classpath:alfresco/extension/web-scripts-config-custom.xml
+ classpath:alfresco/extension/web-scripts-cmis-config.xml
@@ -142,7 +144,7 @@
-
+
@@ -313,8 +315,8 @@
-
- cmis
+
+ cmisserver
@@ -369,42 +371,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
diff --git a/config/alfresco/web-scripts-cmis-config.xml b/config/alfresco/web-scripts-cmis-config.xml
new file mode 100644
index 0000000000..cde0862e5d
--- /dev/null
+++ b/config/alfresco/web-scripts-cmis-config.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/java/org/alfresco/repo/cmis/client/AbstractCMISConnectionManagerImpl.java b/source/java/org/alfresco/repo/cmis/client/AbstractCMISConnectionManagerImpl.java
index cd3151773f..34eef429b8 100644
--- a/source/java/org/alfresco/repo/cmis/client/AbstractCMISConnectionManagerImpl.java
+++ b/source/java/org/alfresco/repo/cmis/client/AbstractCMISConnectionManagerImpl.java
@@ -19,7 +19,6 @@
package org.alfresco.repo.cmis.client;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -33,27 +32,38 @@ import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.client.api.SessionFactory;
import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
import org.apache.chemistry.opencmis.commons.SessionParameter;
-import org.springframework.beans.factory.InitializingBean;
+import org.springframework.extensions.config.ConfigService;
-public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectionManager, InitializingBean
+/**
+ * Connection manager base class.
+ */
+public abstract class AbstractCMISConnectionManagerImpl extends CMISHelper implements CMISConnectionManager
{
public static final String SERVER_NAME = "name";
public static final String SERVER_DESCRIPTION = "description";
- public static final String LOCAL_CONNECTION_ID = "local";
+ public static final String DEFAULT_CONNECTION_ID = "default";
public static final char RESERVED_ID_CHAR = '$';
+ protected ConfigService configService;
protected AuthenticationService authenticationService;
- protected SessionFactory sessionFactory;
+ protected final SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
protected LinkedHashMap sharedConnections;
protected LinkedHashMap userConnections;
protected int userConnectionsCapacity = 1000;
- protected int sharedConnectionsCapacity = 1000;
+ protected int sharedConnectionsCapacity = 100;
protected Map servers;
- protected ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+ protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+
+ // --- set up ---
+
+ public void setConfigService(ConfigService configService)
+ {
+ this.configService = configService;
+ }
public void setAuthenticationService(AuthenticationService authenticationService)
{
@@ -70,28 +80,12 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
this.sharedConnectionsCapacity = sharedConnectionsCapacity;
}
- public void setServers(List> serverList)
- {
- servers = new HashMap();
-
- for (Map serverData : serverList)
- {
- CMISServer server = createServerDefinition(serverData);
- if (server != null)
- {
- servers.put(server.getName(), server);
- }
- }
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
+ public void init()
{
lock.writeLock().lock();
try
{
- sessionFactory = SessionFactoryImpl.newInstance();
-
+ // create shared connection LRU cache
sharedConnections = new LinkedHashMap(sharedConnectionsCapacity,
(int) Math.ceil(sharedConnectionsCapacity / 0.75) + 1, true)
{
@@ -104,6 +98,7 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
}
};
+ // create user connection LRU cache
userConnections = new LinkedHashMap(userConnectionsCapacity,
(int) Math.ceil(userConnectionsCapacity / 0.75) + 1, true)
{
@@ -115,15 +110,33 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
return size() > userConnectionsCapacity;
}
};
+
+ // get predefined server definitions
+ CMISServersConfigElement cmisServersConfig = (CMISServersConfigElement) configService.getConfig("CMIS")
+ .getConfigElement("cmis-servers");
+ if (cmisServersConfig != null && cmisServersConfig.getServerDefinitions() != null)
+ {
+ servers = cmisServersConfig.getServerDefinitions();
+ } else
+ {
+ servers = new HashMap();
+ }
} finally
{
lock.writeLock().unlock();
}
}
+ // --- connections ---
+
@Override
public CMISConnection createUserConnection(CMISServer server, String connectionId)
{
+ if (connectionId == null || connectionId.length() == 0 || connectionId.indexOf(RESERVED_ID_CHAR) > -1)
+ {
+ throw new IllegalArgumentException("Invalid connection id!");
+ }
+
String currentUser = authenticationService.getCurrentUserName();
if (currentUser == null)
{
@@ -142,7 +155,7 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
throw new IllegalStateException("Connection id is already in use!");
}
- connection = createConnection(server, userConnectionId);
+ connection = createConnection(server, userConnectionId, false);
userConnections.put(userConnectionId, connection);
} finally
@@ -161,6 +174,12 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
@Override
public CMISConnection createSharedConnection(CMISServer server, String connectionId)
{
+ if (connectionId == null || connectionId.length() == 0 || connectionId.indexOf(RESERVED_ID_CHAR) > -1
+ || DEFAULT_CONNECTION_ID.equals(connectionId))
+ {
+ throw new IllegalArgumentException("Invalid connection id!");
+ }
+
CMISConnection connection;
lock.writeLock().lock();
@@ -171,9 +190,9 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
throw new IllegalStateException("Connection id is already in use!");
}
- connection = createConnection(server, connectionId);
+ connection = createConnection(server, connectionId, true);
- sharedConnections.put(connection.getId(), connection);
+ sharedConnections.put(connection.getInternalId(), connection);
} finally
{
lock.writeLock().unlock();
@@ -182,23 +201,42 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
return connection;
}
- protected CMISConnection createConnection(CMISServer server, String connectionId)
+ protected CMISConnection createConnection(CMISServer server, String connectionId, boolean isShared)
{
- if (connectionId == null || connectionId.length() == 0 || connectionId.indexOf(RESERVED_ID_CHAR) > -1)
- {
- throw new IllegalArgumentException("Invalid connection id!");
- }
-
Session session = createSession(server.getParameters());
String username = server.getParameters().get(SessionParameter.USER);
- return new CMISConnectionImpl(this, connectionId, session, server, username, false);
+ return new CMISConnectionImpl(this, connectionId, session, server, username, false, isShared);
}
- @Override
public abstract CMISConnection getConnection();
- public Collection getUserConnections()
+ public CMISConnection getConnection(String connectionId)
+ {
+ lock.writeLock().lock();
+ try
+ {
+ CMISConnection connection = sharedConnections.get(connectionId);
+ if (connection != null)
+ {
+ return connection;
+ }
+
+ String currentUser = authenticationService.getCurrentUserName();
+ if (currentUser == null)
+ {
+ return null;
+ }
+
+ String userConnectionId = createUserConnectionId(currentUser, connectionId);
+ return userConnections.get(userConnectionId);
+ } finally
+ {
+ lock.writeLock().unlock();
+ }
+ }
+
+ public List getUserConnections()
{
String currentUser = authenticationService.getCurrentUserName();
if (currentUser == null)
@@ -213,16 +251,17 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
for (CMISConnection conn : userConnections.values())
{
- int idx = conn.getId().indexOf(RESERVED_ID_CHAR);
+ int idx = conn.getInternalId().indexOf(RESERVED_ID_CHAR);
if (idx > -1)
{
- if (currentUser.equals(conn.getId().substring(idx + 1)))
+ if (currentUser.equals(conn.getInternalId().substring(idx + 1)))
{
result.add(conn);
}
}
}
+ Collections.sort(result);
return Collections.unmodifiableList(result);
} finally
{
@@ -230,43 +269,15 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
}
}
- public CMISConnection getUserConnections(String connectionId)
- {
- String currentUser = authenticationService.getCurrentUserName();
- if (currentUser == null)
- {
- throw new IllegalStateException("No current user!");
- }
-
- lock.writeLock().lock();
- try
- {
- String userConnectionId = createUserConnectionId(currentUser, connectionId);
- return userConnections.get(userConnectionId);
- } finally
- {
- lock.writeLock().unlock();
- }
- }
-
- public Collection getSharedConnections()
+ public List getSharedConnections()
{
lock.writeLock().lock();
try
{
- return Collections.unmodifiableCollection(sharedConnections.values());
- } finally
- {
- lock.writeLock().unlock();
- }
- }
+ List result = new ArrayList(sharedConnections.values());
- public CMISConnection getSharedConnection(String connectionId)
- {
- lock.writeLock().lock();
- try
- {
- return sharedConnections.get(connectionId);
+ Collections.sort(result);
+ return Collections.unmodifiableList(result);
} finally
{
lock.writeLock().unlock();
@@ -275,7 +286,7 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
public void removeConnection(CMISConnection connection)
{
- if (connection == null || connection.getId() == null)
+ if (connection == null || connection.getInternalId() == null)
{
return;
}
@@ -283,19 +294,12 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
lock.writeLock().lock();
try
{
- if (connection.isLocal())
+ if (connection.isShared())
{
- userConnections.remove(LOCAL_CONNECTION_ID);
+ sharedConnections.remove(connection.getInternalId());
} else
{
- int idx = connection.getId().indexOf(RESERVED_ID_CHAR);
- if (idx == -1)
- {
- sharedConnections.remove(connection.getId());
- } else
- {
- userConnections.remove(connection.getId());
- }
+ userConnections.remove(connection.getInternalId());
}
} finally
{
@@ -314,25 +318,23 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
}
}
- @Override
- public Collection getServerDefinitions()
+ // --- servers ---
+
+ public List getServerDefinitions()
{
- return servers == null ? null : servers.values();
+ return servers == null ? null : Collections.unmodifiableList(new ArrayList(servers.values()));
}
- @Override
public CMISServer getServerDefinition(String serverName)
{
return servers == null ? null : servers.get(serverName);
}
- @Override
public CMISServer createServerDefinition(String serverName, Map parameters)
{
return new CMISServerImpl(serverName, null, parameters);
}
- @Override
public CMISServer createServerDefinition(CMISServer server, String username, String password)
{
if (server == null)
@@ -347,7 +349,6 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
return new CMISServerImpl(server.getName(), server.getDescription(), parameters);
}
- @Override
public CMISServer createServerDefinition(CMISServer server, String username, String password, String repositoryId)
{
if (server == null)
@@ -384,7 +385,6 @@ public abstract class AbstractCMISConnectionManagerImpl implements CMISConnectio
return null;
}
- @Override
public List getRepositories(CMISServer server)
{
if (server == null)
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISConnection.java b/source/java/org/alfresco/repo/cmis/client/CMISConnection.java
index d533c4d9fe..464672ed58 100644
--- a/source/java/org/alfresco/repo/cmis/client/CMISConnection.java
+++ b/source/java/org/alfresco/repo/cmis/client/CMISConnection.java
@@ -23,17 +23,24 @@ import org.apache.chemistry.opencmis.client.api.Session;
/**
* Represents a CMIS connection.
*/
-public interface CMISConnection
+public interface CMISConnection extends Comparable
{
/**
- * Gets connection id.
+ * Gets the connection id.
*
* @return connection id
*/
String getId();
/**
- * Gets OpenCMIS Session.
+ * Gets the internal connection id.
+ *
+ * @return connection id
+ */
+ String getInternalId();
+
+ /**
+ * Gets the OpenCMIS Session.
*
* @return OpenCMIS session
*/
@@ -54,9 +61,19 @@ public interface CMISConnection
String getUserName();
/**
- * Indicates if the connection is a local or a remote connection.
+ * Indicates if the connection is shared by multiple users.
*/
- boolean isLocal();
+ boolean isShared();
+
+ /**
+ * Indicates if the connection is the default connection.
+ */
+ boolean isDefault();
+
+ /**
+ * Indicates is the repository supports queries.
+ */
+ boolean supportsQuery();
/**
* Releases the CMIS session and removes the connection from connection
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISConnectionImpl.java b/source/java/org/alfresco/repo/cmis/client/CMISConnectionImpl.java
index 58ff1c564b..42c1911a34 100644
--- a/source/java/org/alfresco/repo/cmis/client/CMISConnectionImpl.java
+++ b/source/java/org/alfresco/repo/cmis/client/CMISConnectionImpl.java
@@ -19,19 +19,22 @@
package org.alfresco.repo.cmis.client;
import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.commons.enums.CapabilityQuery;
public class CMISConnectionImpl implements CMISConnection
{
private AbstractCMISConnectionManagerImpl connectionManager;
private String id;
+ private String internalId;
private Session session;
private CMISServer server;
private String username;
- private boolean isLocal;
+ private boolean isDefault;
+ private boolean isShared;
public CMISConnectionImpl(AbstractCMISConnectionManagerImpl connectionManager, String id, Session session,
- CMISServer server, String username, boolean isLocal)
+ CMISServer server, String username, boolean isDefault, boolean isShared)
{
if (connectionManager == null)
{
@@ -49,47 +52,75 @@ public class CMISConnectionImpl implements CMISConnection
}
this.connectionManager = connectionManager;
- this.id = id;
+ this.internalId = id;
+ int x = id.indexOf(AbstractCMISConnectionManagerImpl.RESERVED_ID_CHAR);
+ this.id = (x > -1 ? id.substring(0, x) : id);
this.session = session;
this.server = server;
this.username = username;
- this.isLocal = isLocal;
+ this.isDefault = isDefault;
+ this.isShared = isShared;
}
- @Override
public String getId()
{
return id;
}
+ public String getInternalId()
+ {
+ return internalId;
+ }
+
@Override
public Session getSession()
{
return session;
}
- @Override
public CMISServer getServer()
{
return server;
}
- @Override
public String getUserName()
{
return username;
}
- @Override
- public boolean isLocal()
+ public boolean isDefault()
{
- return isLocal;
+ return isDefault;
+ }
+
+ public boolean isShared()
+ {
+ return isShared;
+ }
+
+ public boolean supportsQuery()
+ {
+ if (session == null)
+ {
+ return false;
+ }
+
+ if (session.getRepositoryInfo().getCapabilities() == null)
+ {
+ return true;
+ }
+
+ return session.getRepositoryInfo().getCapabilities().getQueryCapability() != CapabilityQuery.NONE;
}
- @Override
public void close()
{
connectionManager.removeConnection(this);
session = null;
}
+
+ public int compareTo(CMISConnection conn)
+ {
+ return id.compareTo(conn.getId());
+ }
}
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISConnectionManager.java b/source/java/org/alfresco/repo/cmis/client/CMISConnectionManager.java
index 907d684786..be25377804 100644
--- a/source/java/org/alfresco/repo/cmis/client/CMISConnectionManager.java
+++ b/source/java/org/alfresco/repo/cmis/client/CMISConnectionManager.java
@@ -18,7 +18,6 @@
*/
package org.alfresco.repo.cmis.client;
-import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -31,6 +30,12 @@ public interface CMISConnectionManager
{
// --- connections ---
+ /**
+ * Creates a new default connection that is only visible to the current
+ * user.
+ */
+ CMISConnection createDefaultConnection(CMISServer server);
+
/**
* Creates a new connection that is only visible to the current user.
*/
@@ -47,33 +52,27 @@ public interface CMISConnectionManager
CMISConnection getConnection();
/**
- * Returns all user connections.
+ * Returns a specific connection or null
if the connection id
+ * is unknown.
*/
- Collection getUserConnections();
+ CMISConnection getConnection(String connectionId);
/**
- * Returns a specific user connection or null
if the connection
- * id is unknown.
+ * Returns all user connections.
*/
- CMISConnection getUserConnections(String connectionId);
+ List getUserConnections();
/**
* Returns all shared connections.
*/
- Collection getSharedConnections();
-
- /**
- * Returns a specific shared connection or null
if the
- * connection id is unknown.
- */
- CMISConnection getSharedConnection(String connectionId);
+ List getSharedConnections();
// --- servers ---
/**
* Returns all configured server definitions.
*/
- Collection getServerDefinitions();
+ List getServerDefinitions();
/**
* Gets a server definitions by name.
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISContentStreamWebScript.java b/source/java/org/alfresco/repo/cmis/client/CMISContentStreamWebScript.java
new file mode 100644
index 0000000000..2078c34dc4
--- /dev/null
+++ b/source/java/org/alfresco/repo/cmis/client/CMISContentStreamWebScript.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2005-2011 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.repo.cmis.client;
+
+import java.io.IOException;
+
+import org.apache.chemistry.opencmis.client.api.CmisObject;
+import org.apache.chemistry.opencmis.client.api.Document;
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.commons.data.ContentStream;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException;
+import org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
+import org.springframework.extensions.webscripts.AbstractWebScript;
+import org.springframework.extensions.webscripts.WebScriptException;
+import org.springframework.extensions.webscripts.WebScriptRequest;
+import org.springframework.extensions.webscripts.WebScriptResponse;
+import org.springframework.util.FileCopyUtils;
+
+/**
+ * WebScript for CMIS links.
+ */
+public class CMISContentStreamWebScript extends AbstractWebScript
+{
+ public static final String DOC_ID = "id";
+ public static final String STREAM_ID = "stream";
+ public static final String CONNECTION = "conn";
+
+ private CMISConnectionManager connectionManager;
+
+ public void setConnectionManager(CMISConnectionManager connectionManager)
+ {
+ this.connectionManager = connectionManager;
+ }
+
+ @Override
+ public void execute(WebScriptRequest req, WebScriptResponse res) throws IOException
+ {
+ CMISConnection conn = null;
+
+ String docId = req.getParameter(DOC_ID);
+ String streamId = req.getParameter(STREAM_ID);
+
+ String connectionId = req.getParameter(CONNECTION);
+
+ if (connectionId != null)
+ {
+ conn = connectionManager.getConnection(connectionId);
+ } else
+ {
+ conn = connectionManager.getConnection();
+ }
+
+ if (conn == null)
+ {
+ throw new WebScriptException(500, "Invalid connection!");
+ }
+
+ Session session = conn.getSession();
+
+ // get object
+ CmisObject object;
+ try
+ {
+ object = session.getObject(docId);
+ } catch (CmisBaseException e)
+ {
+ if (e instanceof CmisObjectNotFoundException)
+ {
+ throw new WebScriptException(404, "Object not found!", e);
+ } else
+ {
+ throw new WebScriptException(500, e.getMessage(), e);
+ }
+ }
+
+ if (!(object instanceof Document))
+ {
+ throw new WebScriptException(404, "Object is not a document!");
+ }
+
+ // get document content
+ Document document = (Document) object;
+ ContentStream stream = streamId == null ? document.getContentStream() : document.getContentStream(streamId);
+
+ // stream content
+ if (stream.getMimeType() != null)
+ {
+ res.setContentType(stream.getMimeType());
+ }
+ long length = stream.getLength();
+ if (length != -1)
+ {
+ res.setHeader("Content-Length", Long.toString(length));
+ }
+ FileCopyUtils.copy(stream.getStream(), res.getOutputStream());
+ }
+}
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISHelper.java b/source/java/org/alfresco/repo/cmis/client/CMISHelper.java
new file mode 100644
index 0000000000..f7d0dec55e
--- /dev/null
+++ b/source/java/org/alfresco/repo/cmis/client/CMISHelper.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2005-2011 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.repo.cmis.client;
+
+import java.io.InputStream;
+import java.math.BigInteger;
+
+import org.alfresco.repo.jscript.ScriptableHashMap;
+import org.apache.chemistry.opencmis.client.api.CmisObject;
+import org.apache.chemistry.opencmis.client.api.Document;
+import org.apache.chemistry.opencmis.client.api.Folder;
+import org.apache.chemistry.opencmis.client.api.Policy;
+import org.apache.chemistry.opencmis.client.api.Relationship;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl;
+import org.springframework.extensions.surf.util.InputStreamContent;
+
+public class CMISHelper
+{
+ /**
+ * Creates a properties map.
+ */
+ public ScriptableHashMap createMap()
+ {
+ return new ScriptableHashMap();
+ }
+
+ /**
+ * Creates a ContentStream object.
+ */
+ public ContentStreamImpl createContentStream(String filename, long length, String mimetype, InputStream stream)
+ {
+ return new ContentStreamImpl(filename, length < 0 ? null : BigInteger.valueOf(length), mimetype, stream);
+ }
+
+ /**
+ * Creates a ContentStream object.
+ */
+ public ContentStreamImpl createContentStream(String filename, InputStreamContent content)
+ {
+ if (content == null)
+ {
+ throw new IllegalArgumentException("No content!");
+ }
+
+ return createContentStream(filename, content.getSize(), content.getMimetype(), content.getInputStream());
+ }
+
+ public boolean isDocument(CmisObject object)
+ {
+ return (object instanceof Document);
+ }
+
+ public boolean isFolder(CmisObject object)
+ {
+ return (object instanceof Folder);
+ }
+
+ public boolean isPolicy(CmisObject object)
+ {
+ return (object instanceof Policy);
+ }
+
+ public boolean isRelationship(CmisObject object)
+ {
+ return (object instanceof Relationship);
+ }
+}
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISLocalConnectionManagerImpl.java b/source/java/org/alfresco/repo/cmis/client/CMISLocalConnectionManagerImpl.java
index 3410fc77e6..d54a2f65e3 100644
--- a/source/java/org/alfresco/repo/cmis/client/CMISLocalConnectionManagerImpl.java
+++ b/source/java/org/alfresco/repo/cmis/client/CMISLocalConnectionManagerImpl.java
@@ -21,6 +21,7 @@ package org.alfresco.repo.cmis.client;
import java.util.HashMap;
import java.util.Map;
+import org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl;
import org.alfresco.opencmis.AlfrescoLocalCmisServiceFactory;
import org.alfresco.opencmis.CMISConnector;
import org.apache.chemistry.opencmis.client.api.Session;
@@ -40,6 +41,12 @@ public class CMISLocalConnectionManagerImpl extends AbstractCMISConnectionManage
AlfrescoLocalCmisServiceFactory.setCmisConnector(connector);
}
+ @Override
+ public CMISConnection createDefaultConnection(CMISServer server)
+ {
+ throw new IllegalStateException("Local connection cannot be changed!");
+ }
+
/**
* Creates a local connection.
*/
@@ -49,7 +56,7 @@ public class CMISLocalConnectionManagerImpl extends AbstractCMISConnectionManage
lock.writeLock().lock();
try
{
- CMISConnection connection = getUserConnections(LOCAL_CONNECTION_ID);
+ CMISConnection connection = getConnection(DEFAULT_CONNECTION_ID);
if (connection != null)
{
return connection;
@@ -60,13 +67,14 @@ public class CMISLocalConnectionManagerImpl extends AbstractCMISConnectionManage
Map parameters = new HashMap();
parameters.put(SessionParameter.BINDING_TYPE, BindingType.LOCAL.value());
parameters.put(SessionParameter.LOCAL_FACTORY, AlfrescoLocalCmisServiceFactory.class.getName());
+ parameters.put(SessionParameter.OBJECT_FACTORY_CLASS, AlfrescoObjectFactoryImpl.class.getName());
parameters.put(SessionParameter.USER, currentUser);
- CMISServer server = createServerDefinition("local", parameters);
+ CMISServer server = createServerDefinition("default", parameters);
Session session = createSession(server.getParameters());
- connection = new CMISConnectionImpl(this, LOCAL_CONNECTION_ID, session, server, currentUser, true);
+ String userConnectionId = createUserConnectionId(currentUser, DEFAULT_CONNECTION_ID);
- String userConnectionId = createUserConnectionId(currentUser, LOCAL_CONNECTION_ID);
+ connection = new CMISConnectionImpl(this, userConnectionId, session, server, currentUser, true, false);
userConnections.put(userConnectionId, connection);
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISRemoteConnectionManagerImpl.java b/source/java/org/alfresco/repo/cmis/client/CMISRemoteConnectionManagerImpl.java
index 2a36854ba2..0fabfb419c 100644
--- a/source/java/org/alfresco/repo/cmis/client/CMISRemoteConnectionManagerImpl.java
+++ b/source/java/org/alfresco/repo/cmis/client/CMISRemoteConnectionManagerImpl.java
@@ -18,21 +18,54 @@
*/
package org.alfresco.repo.cmis.client;
+import java.util.HashMap;
import java.util.Map;
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.commons.SessionParameter;
+
/**
* CMIS Connection manager with a remote default connection.
*/
public class CMISRemoteConnectionManagerImpl extends AbstractCMISConnectionManagerImpl implements CMISConnectionManager
{
- private CMISServer defaultServer;
-
- /**
- * Sets the remote server details.
- */
- public void setDefaultServer(Map defaultServerProperties)
+ @Override
+ public CMISConnection createDefaultConnection(CMISServer server)
{
- defaultServer = createServerDefinition(defaultServerProperties);
+ lock.writeLock().lock();
+ try
+ {
+ CMISConnection connection = getConnection();
+ if (connection != null)
+ {
+ throw new IllegalStateException("Connection id is already in use!");
+ }
+
+ if (server == null)
+ {
+ throw new IllegalStateException("Server definition must be set!");
+ }
+
+ String currentUser = authenticationService.getCurrentUserName();
+
+ if (!server.getParameters().containsKey(SessionParameter.USER))
+ {
+ Map parameters = new HashMap(server.getParameters());
+ parameters.put(SessionParameter.USER, currentUser);
+ server = createServerDefinition(server.getName(), parameters);
+ }
+
+ String userConnectionId = createUserConnectionId(currentUser, DEFAULT_CONNECTION_ID);
+ Session session = createSession(server.getParameters());
+ connection = new CMISConnectionImpl(this, userConnectionId, session, server, currentUser, true, false);
+
+ userConnections.put(userConnectionId, connection);
+
+ return connection;
+ } finally
+ {
+ lock.writeLock().unlock();
+ }
}
/**
@@ -41,28 +74,6 @@ public class CMISRemoteConnectionManagerImpl extends AbstractCMISConnectionManag
@Override
public CMISConnection getConnection()
{
- lock.writeLock().lock();
- try
- {
- CMISConnection connection = getUserConnections(LOCAL_CONNECTION_ID);
- if (connection != null)
- {
- return connection;
- }
-
- String currentUser = authenticationService.getCurrentUserName();
-
- if (defaultServer == null)
- {
- throw new IllegalStateException("No default server defined!");
- }
-
- CMISServer server = createServerDefinition(defaultServer, currentUser, null);
-
- return createUserConnection(server, LOCAL_CONNECTION_ID);
- } finally
- {
- lock.writeLock().unlock();
- }
+ return getConnection(DEFAULT_CONNECTION_ID);
}
}
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISServerImpl.java b/source/java/org/alfresco/repo/cmis/client/CMISServerImpl.java
index 3cc91d7b6f..774d52a978 100644
--- a/source/java/org/alfresco/repo/cmis/client/CMISServerImpl.java
+++ b/source/java/org/alfresco/repo/cmis/client/CMISServerImpl.java
@@ -44,19 +44,16 @@ public class CMISServerImpl implements CMISServer
this.parameters = new HashMap(parameters);
}
- @Override
public String getName()
{
return name;
}
- @Override
public String getDescription()
{
return description;
}
- @Override
public Map getParameters()
{
return Collections.unmodifiableMap(parameters);
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISServersConfigElement.java b/source/java/org/alfresco/repo/cmis/client/CMISServersConfigElement.java
new file mode 100644
index 0000000000..56f52c714b
--- /dev/null
+++ b/source/java/org/alfresco/repo/cmis/client/CMISServersConfigElement.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2005-2011 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.repo.cmis.client;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.dom4j.Element;
+import org.springframework.extensions.config.ConfigElement;
+import org.springframework.extensions.config.element.ConfigElementAdapter;
+
+/**
+ * CMIS server configuration element.
+ */
+public class CMISServersConfigElement extends ConfigElementAdapter
+{
+ private static final long serialVersionUID = 1L;
+ private static final String CONFIG_ELEMENT_ID = "cmis-servers";
+
+ private final Map serverDefintions = new HashMap();
+
+ @SuppressWarnings("unchecked")
+ public CMISServersConfigElement(Element element)
+ {
+ super(CONFIG_ELEMENT_ID);
+
+ for (Element childElement : ((List) element.elements("server")))
+ {
+ Map parameters = new LinkedHashMap();
+ String name = null;
+ String description = null;
+
+ for (Element parameterElement : ((List) childElement.elements("parameter")))
+ {
+ String key = parameterElement.attributeValue("key");
+ String value = parameterElement.attributeValue("value");
+ if (key != null && value != null)
+ {
+ if (key.equals("name"))
+ {
+ name = value;
+ } else if (key.equals("description"))
+ {
+ description = value;
+ } else
+ {
+ parameters.put(key, value);
+ }
+ }
+ }
+
+ if (name != null)
+ {
+ serverDefintions.put(name, new CMISServerImpl(name, description, parameters));
+ }
+ }
+ }
+
+ @Override
+ public ConfigElement combine(ConfigElement configElement)
+ {
+ if (configElement instanceof CMISServersConfigElement)
+ {
+ serverDefintions.putAll(((CMISServersConfigElement) configElement).getServerDefinitions());
+ }
+
+ return this;
+ }
+
+ public Map getServerDefinitions()
+ {
+ return serverDefintions;
+ }
+}
diff --git a/source/java/org/alfresco/repo/cmis/client/CMISServersConfigElementReader.java b/source/java/org/alfresco/repo/cmis/client/CMISServersConfigElementReader.java
new file mode 100644
index 0000000000..1f3ff611e4
--- /dev/null
+++ b/source/java/org/alfresco/repo/cmis/client/CMISServersConfigElementReader.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2005-2011 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.repo.cmis.client;
+
+import org.dom4j.Element;
+import org.springframework.extensions.config.ConfigElement;
+import org.springframework.extensions.config.xml.elementreader.ConfigElementReader;
+
+/**
+ * CMIS server configurations reader.
+ */
+public class CMISServersConfigElementReader implements ConfigElementReader
+{
+ @Override
+ public ConfigElement parse(Element element)
+ {
+ ConfigElement configElement = null;
+ if (element != null)
+ {
+ configElement = new CMISServersConfigElement(element);
+ }
+
+ return configElement;
+ }
+}