mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged CMIS063 to HEAD
Resolve merge issues. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@17272 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -9,8 +9,6 @@
|
||||
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
|
||||
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
|
||||
|
||||
<!-- Uncomment this block to enable CMIS web services
|
||||
|
||||
<jaxws:endpoint address="/RepositoryService" implementor="#dmRepositoryService"
|
||||
implementorClass="org.alfresco.repo.cmis.ws.DMRepositoryServicePort">
|
||||
<jaxws:inInterceptors>
|
||||
@@ -241,7 +239,6 @@
|
||||
<bean class="org.apache.cxf.feature.LoggingFeature" />
|
||||
</jaxws:features>
|
||||
</jaxws:endpoint>
|
||||
-->
|
||||
|
||||
<bean id="dmServicesProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
|
||||
<property name="beanNames">
|
||||
|
@@ -1,661 +0,0 @@
|
||||
[#ftl]
|
||||
|
||||
[#-- --]
|
||||
[#-- ATOM Entry --]
|
||||
[#-- --]
|
||||
|
||||
[#macro entry ns=""]
|
||||
<entry[#if ns != ""] ${ns}[/#if]>
|
||||
[#nested]
|
||||
</entry>
|
||||
[/#macro]
|
||||
|
||||
[#macro objectCMISProps object propfilter]
|
||||
<cmis:properties>
|
||||
[#assign typedef = cmistype(object)]
|
||||
|
||||
[#list typedef.propertyDefinitions?values as propdef]
|
||||
[@filter propfilter propdef.queryName][@prop propdef.propertyId.id object propdef.dataType.label/][/@filter]
|
||||
[/#list]
|
||||
</cmis:properties>
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- ATOM Entry for Document --]
|
||||
[#-- --]
|
||||
|
||||
[#macro document node propfilter="*" includeallowableactions=false includerelationships="none" ns=""]
|
||||
[@entry ns]
|
||||
<author><name>${node.properties.creator!""}</name></author>
|
||||
[@contentstream node/]
|
||||
<id>urn:uuid:${node.id}</id>
|
||||
[@linksLib.linknodeself node/]
|
||||
[@linksLib.linkstream node "enclosure"/]
|
||||
[@linksLib.linknodeedit node/]
|
||||
[@linksLib.linkstream node "edit-media"/]
|
||||
[@documentCMISLinks node=node/]
|
||||
<published>${xmldate(node.properties.created)}</published>
|
||||
<summary>[@contentsummary node/]</summary>
|
||||
<title>${node.name}</title>
|
||||
<updated>${xmldate(node.properties.modified)}</updated>
|
||||
<app:edited>${xmldate(node.properties.modified)}</app:edited>
|
||||
<alf:icon>${absurl(url.context)}${node.icon16}</alf:icon>
|
||||
<cmisra:object>
|
||||
[@objectCMISProps node propfilter/]
|
||||
[#if includeallowableactions][@allowableactions node/][/#if]
|
||||
</cmisra:object>
|
||||
<cmisra:pathSegment>${node.name}</cmisra:pathSegment>
|
||||
[/@entry]
|
||||
[/#macro]
|
||||
|
||||
[#macro documentCMISLinks node]
|
||||
[@linksLib.linkallowableactions node/]
|
||||
[@linksLib.linkrelationships node/]
|
||||
[@linksLib.linkparents node/]
|
||||
[@linksLib.linkversions node/]
|
||||
[@linksLib.linktype node/]
|
||||
[@linksLib.linkservice/]
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- ATOM Entry for Version --]
|
||||
[#-- --]
|
||||
|
||||
[#macro version node version propfilter="*" ns=""]
|
||||
[@entry ns]
|
||||
<author><name>${node.properties.creator}</name></author>
|
||||
[@contentstream node/]
|
||||
<id>urn:uuid:${node.id}</id>
|
||||
[@linksLib.linknodeself node/]
|
||||
[@linksLib.linkstream node "enclosure"/]
|
||||
[@documentCMISLinks node=node/]
|
||||
<published>${xmldate(node.properties.created)}</published>
|
||||
<summary>[@contentsummary node/]</summary>
|
||||
<title>${node.name}</title>
|
||||
<updated>${xmldate(node.properties.modified)}</updated>
|
||||
<app:edited>${xmldate(node.properties.modified)}</app:edited>
|
||||
<alf:icon>${absurl(url.context)}${node.icon16}</alf:icon>
|
||||
<cmisra:object>
|
||||
[@objectCMISProps node propfilter/]
|
||||
</cmisra:object>
|
||||
[/@entry]
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- ATOM Entry for Private Working Copy --]
|
||||
[#-- --]
|
||||
|
||||
[#macro pwc node propfilter="*" includeallowableactions=false includerelationships="none" ns=""]
|
||||
[@entry ns]
|
||||
<author><name>${node.properties.creator}</name></author>
|
||||
[@contentstream node/]
|
||||
<id>urn:uuid:${node.id}</id>
|
||||
[#assign pwcuri]/cmis/pwc/[@linksLib.noderef node/][/#assign]
|
||||
[@linksLib.linkself href="${pwcuri}"/]
|
||||
[@linksLib.linkstream node "enclosure"/]
|
||||
[@linksLib.linknodeedit node/]
|
||||
[@linksLib.linkstream node "edit-media"/]
|
||||
[@documentCMISLinks node=node/]
|
||||
<published>${xmldate(node.properties.created)}</published>
|
||||
<summary>[@contentsummary node/]</summary>
|
||||
<title>${node.name}</title>
|
||||
<updated>${xmldate(node.properties.modified)}</updated>
|
||||
<app:edited>${xmldate(node.properties.modified)}</app:edited>
|
||||
<alf:icon>${absurl(url.context)}${node.icon16}</alf:icon>
|
||||
<cmisra:object>
|
||||
[@objectCMISProps node propfilter/]
|
||||
[#if includeallowableactions][@allowableactions node/][/#if]
|
||||
</cmisra:object>
|
||||
<cmisra:pathSegment>${node.name}</cmisra:pathSegment>
|
||||
[/@entry]
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- ATOM Entry for Folder --]
|
||||
[#-- --]
|
||||
|
||||
[#macro foldertree node propfilter="*" includeallowableactions=false includerelationships="none" ns="" maxdepth=-1]
|
||||
[@folder node propfilter "folders" includeallowableactions includerelationships ns 1 maxdepth "" "tree"/]
|
||||
[/#macro]
|
||||
|
||||
[#macro folder node propfilter="*" typesfilter="any" includeallowableactions=false includerelationships="none" ns="" depth=1 maxdepth=1 relativePathSegment="" nestedkind=""]
|
||||
[@entry ns]
|
||||
<author><name>${node.properties.creator}</name></author>
|
||||
<content>${node.id}</content> [#-- TODO --]
|
||||
<id>urn:uuid:${node.id}</id>
|
||||
[@linksLib.linknodeself node/]
|
||||
[@linksLib.linknodeedit node/]
|
||||
[@folderCMISLinks node/]
|
||||
<published>${xmldate(node.properties.created)}</published>
|
||||
<summary>${node.properties.description!node.properties.title!""}</summary> [#-- TODO --]
|
||||
<title>${node.name}</title>
|
||||
<updated>${xmldate(node.properties.modified)}</updated>
|
||||
<app:edited>${xmldate(node.properties.modified)}</app:edited>
|
||||
<alf:icon>${absurl(url.context)}${node.icon16}</alf:icon>
|
||||
<cmisra:object>
|
||||
[@objectCMISProps node propfilter/]
|
||||
[#if includeallowableactions][@allowableactions node/][/#if]
|
||||
</cmisra:object>
|
||||
<cmisra:pathSegment>${node.name}</cmisra:pathSegment>
|
||||
[#if relativePathSegment != ""]
|
||||
<cmisra:relativePathSegment>${relativePathSegment}</cmisra:relativePathSegment>
|
||||
[/#if]
|
||||
[#-- recurse for depth greater than 1 --]
|
||||
[#if maxdepth == -1 || depth < maxdepth]
|
||||
[#assign nested = cmischildren(node, typesfilter)/]
|
||||
[#if nested?size > 0]
|
||||
<cmisra:children>
|
||||
[@feedLib.node node "${nestedkind}"]
|
||||
[#if nestedkind == "tree"][@linksLib.linktree node "self"/][#else][@linksLib.linkdescendants node "self"/][/#if]
|
||||
[/@feedLib.node]
|
||||
[#list nested as child]
|
||||
[#if child.isDocument]
|
||||
[@document child propfilter includeallowableactions includerelationships/]
|
||||
[#else]
|
||||
[@folder child propfilter typesfilter includeallowableactions includerelationships ns depth+1 maxdepth "" nestedkind/]
|
||||
[/#if]
|
||||
[/#list]
|
||||
</cmisra:children>
|
||||
[/#if]
|
||||
[/#if]
|
||||
[/@entry]
|
||||
[/#macro]
|
||||
|
||||
[#macro folderCMISLinks node]
|
||||
[@linksLib.linkallowableactions node/]
|
||||
[@linksLib.linkrelationships node/]
|
||||
[#if cmisproperty(node, cmisconstants.PROP_PARENT_ID)?is_string]
|
||||
[@linksLib.linkparent node/]
|
||||
[/#if]
|
||||
[@linksLib.linkchildren node/]
|
||||
[@linksLib.linkdescendants node/]
|
||||
[@linksLib.linktree node/]
|
||||
[@linksLib.linktype node/]
|
||||
[@linksLib.linkservice/]
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- ATOM Entry for Relationship --]
|
||||
[#-- --]
|
||||
|
||||
[#macro assoc assoc propfilter="*" includeallowableactions=false ns=""]
|
||||
[@entry ns]
|
||||
<author><name>${xmldate(date)}</name></author> [#-- TODO: [@namedvalue cmisconstants.PROP_CREATED_BY assoc cmisconstants.DATATYPE_STRING/] --]
|
||||
<content>[@namedvalue cmisconstants.PROP_OBJECT_ID assoc cmisconstants.DATATYPE_ID/]</content> [#-- TODO: spec id, how to map? --]
|
||||
<id>[@namedvalue cmisconstants.PROP_OBJECT_ID assoc cmisconstants.DATATYPE_ID/]</id> [#-- TODO: id compliant --]
|
||||
[@linksLib.linkassocself assoc/]
|
||||
[@linksLib.linkassocedit assoc/]
|
||||
[@assocCMISLinks assoc=assoc/]
|
||||
<published>${xmldate(date)}</published> [#-- TODO: [@namedvalue cmisconstants.PROP_CREATION_DATE assoc cmisconstants.DATATYPE_DATETIME/] --]
|
||||
<summary>[@namedvalue cmisconstants.PROP_OBJECT_ID assoc cmisconstants.DATATYPE_ID/]</summary> [#-- TODO: spec id, how to map? --]
|
||||
<title>[@namedvalue cmisconstants.PROP_OBJECT_ID assoc cmisconstants.DATATYPE_ID/]</title> [#-- TODO: spec id, how to map? --]
|
||||
<updated>${xmldate(date)}</updated> [#-- TODO: [@namedvalue cmisconstants.PROP_LAST_MODIFICATION_DATE assoc cmisconstants.DATATYPE_DATETIME/] --]
|
||||
<app:edited>${xmldate(date)}</app:edited> [#-- TODO: [@namedvalue cmisconstants.PROP_LAST_MODIFICATION_DATE assoc cmisconstants.DATATYPE_DATETIME/] --]
|
||||
<cmisra:object>
|
||||
[@objectCMISProps assoc propfilter/]
|
||||
[#-- TODO: [#if includeallowableactions][@allowableactions node/][/#if] --]
|
||||
</cmisra:object>
|
||||
[/@entry]
|
||||
[/#macro]
|
||||
|
||||
[#macro assocCMISLinks assoc]
|
||||
[#-- TODO: <link rel="allowableactions" href="${absurl(url.serviceContext)}/cmis/node/${node.nodeRef.storeRef.protocol}/${node.nodeRef.storeRef.identifier}/${node.nodeRef.id}/permissions"/> --]
|
||||
[@linksLib.linktype assoc/]
|
||||
[@linksLib.linktosource assoc.source/]
|
||||
[@linksLib.linktotarget assoc.target/]
|
||||
[@linksLib.linkservice/]
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- ATOM Entry for Query Row --]
|
||||
[#-- --]
|
||||
|
||||
[#-- TODO: spec issue 47 --]
|
||||
[#macro row row includeallowableactions=false]
|
||||
[@entry]
|
||||
[#-- TODO: calculate multiNodeResultSet from result set --]
|
||||
[#if row.nodes?? && row.nodes?size == 1][#assign node = row.nodes?first/][/#if]
|
||||
[#if node??]
|
||||
<author><name>${node.properties.creator!""}</name></author>
|
||||
[#-- TODO: review if consistent with ATOM --]
|
||||
[#if node.isDocument]
|
||||
[@contentstream node/]
|
||||
[#else]
|
||||
<content>${node.id}</content> [#-- TODO --]
|
||||
[/#if]
|
||||
<id>urn:uuid:${node.id}</id>
|
||||
[@linksLib.linknodeself node/]
|
||||
[@linksLib.linknodeedit node/]
|
||||
[#if node.isDocument]
|
||||
[@linksLib.linkstream node "enclosure"/]
|
||||
[@linksLib.linkstream node "edit-media"/]
|
||||
[@documentCMISLinks node=node/]
|
||||
[#else]
|
||||
[@folderCMISLinks node=node/]
|
||||
[/#if]
|
||||
<title>${node.name}</title>
|
||||
<updated>${xmldate(node.properties.modified)}</updated>
|
||||
<alf:icon>${absurl(url.context)}${node.icon16}</alf:icon>
|
||||
[#else]
|
||||
<author><name>${person.properties.userName}</name></author>
|
||||
<id>urn:uuid:row-${row.index?c}</id>
|
||||
<title>Row ${row.index?c}</title>
|
||||
<updated>${xmldate(now)}</updated>
|
||||
[/#if]
|
||||
<cmisra:object>
|
||||
<cmis:properties>
|
||||
[#assign rowvalues = row.values]
|
||||
[#list rowvalues?keys as colname]
|
||||
[#assign coltype = row.getColumnType(colname)]
|
||||
[#if rowvalues[colname]??]
|
||||
[@propvalue colname rowvalues[colname] coltype/]
|
||||
[#else]
|
||||
[@propnull colname coltype/]
|
||||
[/#if]
|
||||
[/#list]
|
||||
</cmis:properties>
|
||||
[#if node?? && includeallowableactions][@allowableactions node/][/#if]
|
||||
</cmisra:object>
|
||||
[/@entry]
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- CMIS Properties --]
|
||||
[#-- --]
|
||||
|
||||
[#macro filter filter value]
|
||||
[#if filter == "*" || filter?index_of(value) != -1 || filter?matches(value,'i')][#nested][/#if]
|
||||
[/#macro]
|
||||
|
||||
[#macro prop name object type]
|
||||
[#assign value=cmisproperty(object, name)/]
|
||||
[#if value?is_string || value?is_number || value?is_boolean || value?is_date || value?is_enumerable]
|
||||
[@propvalue name value type/]
|
||||
[#elseif value.class.canonicalName?ends_with("NULL")]
|
||||
[@propnull name type/]
|
||||
[/#if]
|
||||
[/#macro]
|
||||
|
||||
[#macro propvalue name value type]
|
||||
[#if type == cmisconstants.DATATYPE_STRING]
|
||||
<cmis:propertyString propertyDefinitionId="${name}">[@values value;v]<cmis:value>[@stringvalue v/]</cmis:value>[/@values]</cmis:propertyString>
|
||||
[#elseif type == cmisconstants.DATATYPE_INTEGER]
|
||||
<cmis:propertyInteger propertyDefinitionId="${name}">[@values value;v]<cmis:value>[@integervalue v/]</cmis:value>[/@values]</cmis:propertyInteger>
|
||||
[#elseif type == cmisconstants.DATATYPE_DECIMAL]
|
||||
<cmis:propertyDecimal propertyDefinitionId="${name}">[@values value;v]<cmis:value>[@decimalvalue v/]</cmis:value>[/@values]</cmis:propertyDecimal>
|
||||
[#elseif type == cmisconstants.DATATYPE_BOOLEAN]
|
||||
<cmis:propertyBoolean propertyDefinitionId="${name}">[@values value;v]<cmis:value>[@booleanvalue v/]</cmis:value>[/@values]</cmis:propertyBoolean>
|
||||
[#elseif type == cmisconstants.DATATYPE_DATETIME]
|
||||
<cmis:propertyDateTime propertyDefinitionId="${name}">[@values value;v]<cmis:value>[@datetimevalue v/]</cmis:value>[/@values]</cmis:propertyDateTime>
|
||||
[#elseif type == cmisconstants.DATATYPE_URI]
|
||||
[#-- TODO: check validity of abs url prefix --]
|
||||
<cmis:propertyUri propertyDefinitionId="${name}">[@values value;v]<cmis:value>[@urivalue absurl(url.serviceContext) + v/]</cmis:value>[/@values]</cmis:propertyUri>
|
||||
[#elseif type == cmisconstants.DATATYPE_ID]
|
||||
<cmis:propertyId propertyDefinitionId="${name}">[@values value;v]<cmis:value>[@idvalue v/]</cmis:value>[/@values]</cmis:propertyId>
|
||||
[#-- TODO: remaining property types --]
|
||||
[/#if]
|
||||
[/#macro]
|
||||
|
||||
[#macro propnull name type]
|
||||
[#if type == cmisconstants.DATATYPE_STRING]
|
||||
<cmis:propertyString propertyDefinitionId="${name}"/>
|
||||
[#elseif type == cmisconstants.DATATYPE_INTEGER]
|
||||
<cmis:propertyInteger propertyDefinitionId="${name}"/>
|
||||
[#elseif type == cmisconstants.DATATYPE_DECIMAL]
|
||||
<cmis:propertyDecimal propertyDefinitionId="${name}"/>
|
||||
[#elseif type == cmisconstants.DATATYPE_BOOLEAN]
|
||||
<cmis:propertyBoolean propertyDefinitionId="${name}"/>
|
||||
[#elseif type == cmisconstants.DATATYPE_DATETIME]
|
||||
<cmis:propertyDateTime propertyDefinitionId="${name}"/>
|
||||
[#elseif type == cmisconstants.DATATYPE_URI]
|
||||
<cmis:propertyUri propertyDefinitionId="${name}"/>
|
||||
[#elseif type == cmisconstants.DATATYPE_ID]
|
||||
<cmis:propertyId propertyDefinitionId="${name}"/>
|
||||
[#-- TODO: remaining property types --]
|
||||
[/#if]
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- CMIS Values --]
|
||||
[#-- --]
|
||||
|
||||
[#macro namedvalue name object type]
|
||||
[#assign value=cmisproperty(object, name)/]
|
||||
[#if value?is_string || value?is_number || value?is_boolean || value?is_date || value?is_enumerable][@typedvalue value type/][#elseif value.class.canonicalName?ends_with("NULL")][/#if]
|
||||
[/#macro]
|
||||
|
||||
[#macro typedvalue value type]
|
||||
[#if type== cmisconstants.DATATYPE_STRING]
|
||||
[@values value;v][@stringvalue v/][/@values]
|
||||
[#elseif type == cmisconstants.DATATYPE_INTEGER]
|
||||
[@values value;v][@integervalue v/][/@values]
|
||||
[#elseif type == cmisconstants.DATATYPE_DECIMAL]
|
||||
[@values value;v][@decimalvalue v/][/@values]
|
||||
[#elseif type == cmisconstants.DATATYPE_BOOLEAN]
|
||||
[@values value;v][@booleanvalue v/][/@values]
|
||||
[#elseif type == cmisconstants.DATATYPE_DATETIME]
|
||||
[@values value;v][@datetimevalue v/][/@values]
|
||||
[#elseif type == cmisconstants.DATATYPE_URI]
|
||||
[#-- TODO: check validity of abs url prefix --]
|
||||
[@values value;v][@urivalue absurl(url.serviceContext) + v/][/@values]
|
||||
[#elseif type == cmisconstants.DATATYPE_ID]
|
||||
[@values value;v][@idvalue v/][/@values]
|
||||
[#-- TODO: remaining property types --]
|
||||
[/#if]
|
||||
[/#macro]
|
||||
|
||||
[#macro values vals][#if vals?is_enumerable][#list vals as val][#nested val][/#list][#else][#nested vals][/#if][/#macro]
|
||||
|
||||
[#macro stringvalue value]${value}[/#macro]
|
||||
[#macro integervalue value]${value?c}[/#macro]
|
||||
[#macro decimalvalue value]${value?c}[/#macro]
|
||||
[#macro booleanvalue value]${value?string}[/#macro]
|
||||
[#macro datetimevalue value]${xmldate(value)}[/#macro]
|
||||
[#macro urivalue value]${value}[/#macro]
|
||||
[#macro idvalue value]${value}[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- CMIS Allowable Actions --]
|
||||
[#-- --]
|
||||
|
||||
[#macro allowableactions node ns=""]
|
||||
<cmis:allowableActions[#if ns != ""] ${ns}[/#if]>
|
||||
[#nested]
|
||||
[#assign typedef = cmistype(node)]
|
||||
[#list typedef.actionEvaluators?values as actionevaluator]
|
||||
[@allowableaction node actionevaluator/]
|
||||
[/#list]
|
||||
</cmis:allowableActions>
|
||||
[/#macro]
|
||||
|
||||
[#macro allowableaction node actionevaluator]
|
||||
<cmis:${actionevaluator.action.label}>${actionevaluator.isAllowed(node.nodeRef)?string}</cmis:${actionevaluator.action.label}>
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- ATOM Entry for Type Definition --]
|
||||
[#-- --]
|
||||
|
||||
[#macro typedef typedefn includeProperties=true includeInheritedProperties=true ns="" depth=1 maxdepth=1]
|
||||
[@entry ns=ns]
|
||||
<author><name>${person.properties.userName}</name></author>
|
||||
<content>${typedefn.typeId.id}</content> [#-- TODO --]
|
||||
<id>urn:uuid:type-${typedefn.typeId.id}</id>
|
||||
[@linksLib.linktypeself typedefn/]
|
||||
[@typedefCMISLinks typedefn/]
|
||||
<summary>[#if typedefn.description??]${typedefn.description?xml}[#else]${typedefn.displayName?xml}[/#if]</summary>
|
||||
<title>${typedefn.displayName}</title>
|
||||
<updated>${xmldate(date)}</updated> [#-- TODO --]
|
||||
[@typedefCMISProps typedefn includeProperties/]
|
||||
[#-- recurse for depth greater than 1 --]
|
||||
[#if maxdepth == -1 || depth < maxdepth]
|
||||
[#assign nested = typedefn.getSubTypes(false)/]
|
||||
[#if nested?size > 1]
|
||||
<cmisra:children>
|
||||
[@feedLib.generic "urn:uuid:type-${typedefn.typeId.id}-descendants" "Type ${typedefn.displayName} Descendants" "${person.properties.userName}"]
|
||||
[@linksLib.linktypedescendants typedefn "self"/]
|
||||
[/@feedLib.generic]
|
||||
[#list nested as child]
|
||||
[@typedef child includeProperties includeInheritedProperties ns depth+1 maxdepth/]
|
||||
[/#list]
|
||||
</cmisra:children>
|
||||
[/#if]
|
||||
[/#if]
|
||||
[/@entry]
|
||||
[/#macro]
|
||||
|
||||
[#macro typedefCMISLinks typedef]
|
||||
[@linksLib.linktype typedef/]
|
||||
[#if typedef.parentType??]
|
||||
[@linksLib.linktypeparent typedef/]
|
||||
[/#if]
|
||||
[@linksLib.linktypechildren typedef/]
|
||||
[@linksLib.linktypedescendants typedef/]
|
||||
[@linksLib.linkservice/]
|
||||
[/#macro]
|
||||
|
||||
[#macro typedefCMISProps typedef includeProperties=true includeInheritedProperties=true]
|
||||
[#if typedef.baseType.typeId.id = cmisconstants.TYPE_DOCUMENT]
|
||||
[@documenttypedefCMISProps typedef includeProperties includeInheritedProperties/]
|
||||
[#elseif typedef.baseType.typeId.id = cmisconstants.TYPE_FOLDER]
|
||||
[@foldertypedefCMISProps typedef includeProperties includeInheritedProperties/]
|
||||
[#elseif typedef.baseType.typeId.id = cmisconstants.TYPE_RELATIONSHIP]
|
||||
[@relationshiptypedefCMISProps typedef includeProperties includeInheritedProperties/]
|
||||
[#elseif typedef.baseType.typeId.id = cmisconstants.TYPE_POLICY]
|
||||
[@policytypedefCMISProps typedef includeProperties includeInheritedProperties/]
|
||||
[/#if]
|
||||
[/#macro]
|
||||
|
||||
[#macro documenttypedefCMISProps typedef includeProperties=true includeInheritedProperties=true]
|
||||
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeDocumentDefinitionType">
|
||||
[@objecttypedefCMISProps typedef includeProperties includeInheritedProperties/]
|
||||
<cmis:versionable>${typedef.versionable?string}</cmis:versionable>
|
||||
<cmis:contentStreamAllowed>${typedef.contentStreamAllowed.label}</cmis:contentStreamAllowed>
|
||||
</cmisra:type>
|
||||
[/#macro]
|
||||
|
||||
[#macro foldertypedefCMISProps typedef includeProperties=true includeInheritedProperties=true]
|
||||
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeFolderDefinitionType">
|
||||
[@objecttypedefCMISProps typedef includeProperties includeInheritedProperties/]
|
||||
</cmisra:type>
|
||||
[/#macro]
|
||||
|
||||
[#macro relationshiptypedefCMISProps typedef includeProperties=true includeInheritedProperties=true]
|
||||
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypeRelationshipDefinitionType">
|
||||
[@objecttypedefCMISProps typedef includeProperties includeInheritedProperties/]
|
||||
[#list typedef.allowedSourceTypes as allowedSourceType]
|
||||
<cmis:allowedSourceTypes>${allowedSourceType.typeId.id}</cmis:allowedSourceTypes>
|
||||
[/#list]
|
||||
[#list typedef.allowedTargetTypes as allowedTargetType]
|
||||
<cmis:allowedTargetTypes>${allowedTargetType.typeId.id}</cmis:allowedTargetTypes>
|
||||
[/#list]
|
||||
</cmisra:type>
|
||||
[/#macro]
|
||||
|
||||
[#macro policytypedefCMISProps typedef includeProperties=true includeInheritedProperties=true]
|
||||
<cmisra:type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cmis:cmisTypePolicyDefinitionType">
|
||||
[@objecttypedefCMISProps typedef includeProperties includeInheritedProperties/]
|
||||
</cmisra:type>
|
||||
[/#macro]
|
||||
|
||||
[#macro objecttypedefCMISProps typedef includeProperties=true includeInheritedProperties=true]
|
||||
<cmis:id>${typedef.typeId.id}</cmis:id>
|
||||
<cmis:localName>${typedef.typeId.localName}</cmis:localName>
|
||||
<cmis:localNamespace>${typedef.typeId.localNamespace}</cmis:localNamespace>
|
||||
<cmis:displayName>[#if typedef.displayName??]${typedef.displayName?xml}[/#if]</cmis:displayName>
|
||||
<cmis:queryName>${typedef.queryName}</cmis:queryName>
|
||||
<cmis:description>[#if typedef.description??]${typedef.description?xml}[/#if]</cmis:description>
|
||||
<cmis:baseTypeId>${typedef.baseType.typeId.id}</cmis:baseTypeId>
|
||||
[#if typedef.parentType??]
|
||||
<cmis:parentId>${typedef.parentType.typeId.id}</cmis:parentId>
|
||||
[/#if]
|
||||
<cmis:creatable>${typedef.creatable?string}</cmis:creatable>
|
||||
<cmis:fileable>${typedef.fileable?string}</cmis:fileable>
|
||||
<cmis:queryable>${typedef.queryable?string}</cmis:queryable>
|
||||
<cmis:fulltextindexed>${typedef.fullTextIndexed?string}</cmis:fulltextindexed>
|
||||
<cmis:includedInSupertypeQuery>${typedef.includeInSuperTypeQuery?string}</cmis:includedInSupertypeQuery>
|
||||
<cmis:controllablePolicy>${typedef.controllablePolicy?string}</cmis:controllablePolicy>
|
||||
<cmis:controllableACL>${typedef.controllableACL?string}</cmis:controllableACL>
|
||||
[#if includeProperties]
|
||||
[#assign ownedprops = typedef.ownedPropertyDefinitions?keys]
|
||||
[#list typedef.propertyDefinitions?values as propdef]
|
||||
[#assign inherited = !ownedprops?seq_contains(propdef.propertyId)]
|
||||
[#if includeInheritedProperties || !inherited]
|
||||
[@propdefCMISProps propdef inherited/]
|
||||
[/#if]
|
||||
[/#list]
|
||||
[/#if]
|
||||
[/#macro]
|
||||
|
||||
[#macro propdefCMISProps propdef inherited=false]
|
||||
[#if propdef.dataType.label == cmisconstants.DATATYPE_BOOLEAN]
|
||||
[@booleanpropdefCMISProps propdef inherited/]
|
||||
[#elseif propdef.dataType.label == cmisconstants.DATATYPE_ID]
|
||||
[@idpropdefCMISProps propdef inherited/]
|
||||
[#elseif propdef.dataType.label == cmisconstants.DATATYPE_INTEGER]
|
||||
[@integerpropdefCMISProps propdef inherited/]
|
||||
[#elseif propdef.dataType.label == cmisconstants.DATATYPE_DATETIME]
|
||||
[@datetimepropdefCMISProps propdef inherited/]
|
||||
[#elseif propdef.dataType.label == cmisconstants.DATATYPE_DECIMAL]
|
||||
[@decimalpropdefCMISProps propdef inherited/]
|
||||
[#elseif propdef.dataType.label == cmisconstants.DATATYPE_HTML]
|
||||
[@htmlpropdefCMISProps propdef inherited/]
|
||||
[#elseif propdef.dataType.label == cmisconstants.DATATYPE_STRING]
|
||||
[@stringpropdefCMISProps propdef inherited/]
|
||||
[#elseif propdef.dataType.label == cmisconstants.DATATYPE_URI]
|
||||
[@uripropdefCMISProps propdef inherited/]
|
||||
[#elseif propdef.dataType.label == cmisconstants.DATATYPE_XML]
|
||||
[@xmlpropdefCMISProps propdef inherited/]
|
||||
[/#if]
|
||||
[/#macro]
|
||||
|
||||
[#macro booleanpropdefCMISProps propdef inherited=false]
|
||||
<cmis:propertyBooleanDefinition>
|
||||
[@abstractpropdefCMISProps propdef inherited/]
|
||||
</cmis:propertyBooleanDefinition>
|
||||
[/#macro]
|
||||
|
||||
[#macro idpropdefCMISProps propdef inherited=false]
|
||||
<cmis:propertyIdDefinition>
|
||||
[@abstractpropdefCMISProps propdef inherited/]
|
||||
</cmis:propertyIdDefinition>
|
||||
[/#macro]
|
||||
|
||||
[#macro integerpropdefCMISProps propdef inherited=false]
|
||||
<cmis:propertyIntegerDefinition>
|
||||
[@abstractpropdefCMISProps propdef inherited/]
|
||||
[#-- TODO: minValue, maxValue --]
|
||||
</cmis:propertyIntegerDefinition>
|
||||
[/#macro]
|
||||
|
||||
[#macro datetimepropdefCMISProps propdef inherited=false]
|
||||
<cmis:propertyDateTimeDefinition>
|
||||
[@abstractpropdefCMISProps propdef inherited/]
|
||||
</cmis:propertyDateTimeDefinition>
|
||||
[/#macro]
|
||||
|
||||
[#macro decimalpropdefCMISProps propdef inherited=false]
|
||||
<cmis:propertyDecimalDefinition>
|
||||
[@abstractpropdefCMISProps propdef inherited/]
|
||||
</cmis:propertyDecimalDefinition>
|
||||
[/#macro]
|
||||
|
||||
[#macro htmlpropdefCMISProps propdef inherited=false]
|
||||
<cmis:propertyHtmlDefinition>
|
||||
[@abstractpropdefCMISProps propdef inherited/]
|
||||
</cmis:propertyHtmlDefinition>
|
||||
[/#macro]
|
||||
|
||||
[#macro stringpropdefCMISProps propdef inherited=false]
|
||||
<cmis:propertyStringDefinition>
|
||||
[@abstractpropdefCMISProps propdef inherited/]
|
||||
[#if propdef.maximumLength != -1]
|
||||
<cmis:maxLength>${propdef.maximumLength}</cmis:maxLength>
|
||||
[/#if]
|
||||
</cmis:propertyStringDefinition>
|
||||
[/#macro]
|
||||
|
||||
[#macro uripropdefCMISProps propdef inherited=false]
|
||||
<cmis:propertyUriDefinition>
|
||||
[@abstractpropdefCMISProps propdef inherited/]
|
||||
</cmis:propertyUriDefinition>
|
||||
[/#macro]
|
||||
|
||||
[#macro xmlpropdefCMISProps propdef inherited=false]
|
||||
<cmis:propertyXmlDefinition>
|
||||
[@abstractpropdefCMISProps propdef inherited/]
|
||||
[#-- TODO: scheme, uri --]
|
||||
</cmis:propertyXmlDefinition>
|
||||
[/#macro]
|
||||
|
||||
[#macro abstractpropdefCMISProps propdef inherited=false]
|
||||
<cmis:id>${propdef.propertyId.id}</cmis:id>
|
||||
<cmis:localName>${propdef.propertyId.localName}</cmis:localName>
|
||||
<cmis:localNamespace>${propdef.propertyId.localNamespace}</cmis:localNamespace>
|
||||
<cmis:displayName>[#if propdef.displayName??]${propdef.displayName?xml}[/#if]</cmis:displayName>
|
||||
<cmis:queryName>${propdef.queryName}</cmis:queryName>
|
||||
[#if propdef.description??]
|
||||
<cmis:description>${propdef.description?xml}</cmis:description>
|
||||
[/#if]
|
||||
<cmis:propertyType>${propdef.dataType.label}</cmis:propertyType>
|
||||
<cmis:cardinality>${propdef.cardinality.label}</cmis:cardinality>
|
||||
<cmis:updatability>${propdef.updatability.label}</cmis:updatability>
|
||||
<cmis:inherited>${inherited?string}</cmis:inherited>
|
||||
<cmis:required>${propdef.required?string}</cmis:required>
|
||||
<cmis:queryable>${propdef.queryable?string}</cmis:queryable>
|
||||
<cmis:orderable>${propdef.orderable?string}</cmis:orderable>
|
||||
[@cmisChoices propdef.choices propdef.dataType.label/]
|
||||
<cmis:openChoice>${propdef.openChoice?string}</cmis:openChoice>
|
||||
[#if propdef.defaultValue??]
|
||||
[#-- TODO: defaults for HTML and XML property types --]
|
||||
<cmis:defaultValue><cmis:value>${propdef.defaultValue}</cmis:value></cmis:defaultValue>
|
||||
[/#if]
|
||||
[/#macro]
|
||||
|
||||
[#macro cmisChoices choices type]
|
||||
[#if choices?exists]
|
||||
[#list choices as choice]
|
||||
[#if type == cmisconstants.DATATYPE_STRING]
|
||||
<cmis:choiceString cmis:key="${choice.name}">
|
||||
[@cmisChoices choice.children type/]
|
||||
<cmis:value>[@stringvalue choice.value/]</cmis:value>
|
||||
</cmis:choiceString>
|
||||
[#elseif type == cmisconstants.DATATYPE_INTEGER]
|
||||
<cmis:choiceInteger cmis:key="${choice.name}">
|
||||
[@cmisChoices choice.children type/]
|
||||
<cmis:value>[@stringvalue choice.value/]</cmis:value>
|
||||
</cmis:choiceInteger>
|
||||
[#elseif type == cmisconstants.DATATYPE_DECIMAL]
|
||||
<cmis:choiceDecimal cmis:key="${choice.name}">
|
||||
[@cmisChoices choice.children type/]
|
||||
<cmis:value>[@stringvalue choice.value/]</cmis:value>
|
||||
</cmis:choiceDecimal>
|
||||
[#elseif type == cmisconstants.DATATYPE_BOOLEAN]
|
||||
<cmis:choiceBoolean cmis:key="${choice.name}">
|
||||
[@cmisChoices choice.children type/]
|
||||
<cmis:value>[@stringvalue choice.value/]</cmis:value>
|
||||
</cmis:choiceBoolean>
|
||||
[#elseif type == cmisconstants.DATATYPE_DATETIME]
|
||||
<cmis:choiceDateTime cmis:key="${choice.name}">
|
||||
[@cmisChoices choice.children type/]
|
||||
<cmis:value>[@stringvalue choice.value/]</cmis:value>
|
||||
</cmis:choiceDateTime>
|
||||
[#elseif type == cmisconstants.DATATYPE_URI]
|
||||
<cmis:choiceUri cmis:key="${choice.name}">
|
||||
[@cmisChoices choice.children type/]
|
||||
<cmis:value>[@stringvalue choice.value/]</cmis:value>
|
||||
</cmis:choiceUri>
|
||||
[#elseif type == cmisconstants.DATATYPE_ID]
|
||||
<cmis:choiceId cmis:key="${choice.name}">
|
||||
[@cmisChoices choice.children type/]
|
||||
<cmis:value>[@stringvalue choice.value/]</cmis:value>
|
||||
</cmis:choiceId>
|
||||
[#-- TODO: remaining property types --]
|
||||
[/#if]
|
||||
[/#list]
|
||||
[/#if]
|
||||
[/#macro]
|
||||
|
||||
|
||||
[#-- --]
|
||||
[#-- General Utils --]
|
||||
[#-- --]
|
||||
|
||||
[#-- Helper to render Atom Summary --]
|
||||
[#macro contentsummary node][#if node.properties.description??]${node.properties.description}[#elseif node.properties.title??]${node.properties.title}[#elseif node.mimetype?? && node.mimetype == "text/plain"]${cropContent(node.properties.content, 50)}[#else]${node.properties.name}[/#if][/#macro]
|
||||
|
||||
[#-- Helper to render Alfresco content type to Atom content type --]
|
||||
[#macro contenttype type][#if type == "text/html"]text[#elseif type == "text/xhtml"]xhtml[#elseif type == "text/plain"]text<#else>${type}[/#if][/#macro]
|
||||
|
||||
[#-- Helper to render atom content element --]
|
||||
[#macro contentstream node]<content[#if node.mimetype??] type="${node.mimetype}"[/#if] src="[@linksLib.contenturi node/]"/>[/#macro]
|
@@ -1,151 +0,0 @@
|
||||
[#ftl]
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Alfresco CMIS</title>
|
||||
<link rel="stylesheet" href="${url.context}/css-boilerplate/screen.css" type="text/css" media="screen" charset="utf-8">
|
||||
<!--[if lte IE 6]><link rel="stylesheet" href="${url.context}/css-boilerplate/lib/ie.css" type="text/css" media="screen" charset="utf-8"><![endif]-->
|
||||
<script type="text/javascript">
|
||||
function toggleDisplay(toggle)
|
||||
{
|
||||
var toggleBody = document.getElementById(toggle.id + "_body");
|
||||
if (!toggleBody) return true;
|
||||
if (toggleBody.style.display == "none")
|
||||
{
|
||||
toggleBody.style.display = "block";
|
||||
toggle.innerHTML = "-";
|
||||
}
|
||||
else
|
||||
{
|
||||
toggleBody.style.display = "none";
|
||||
toggle.innerHTML = "+";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="page">
|
||||
<div id="header">
|
||||
<a href="http://www.alfresco.com"><img id="alflogo" src="${url.context}/images/logo/AlfrescoLogo200.png"/></a><a href="http://www.oasis-open.org/committees/cmis"><img id="alflogo" height="55px" src="${url.context}/images/logo/cmis_logo_100.png"/></a>
|
||||
</div>
|
||||
|
||||
<div id="body" class="wrapper">
|
||||
<div id="introduction">
|
||||
<h2>Explore and Test CMIS</h2>
|
||||
<p>The CMIS (Content Management Interoperability Services) specification is now very close to Public Review.</p>
|
||||
<p>This site hosts a <a href="#repo">CMIS Repository</a> and <a href="#testatompub">CMIS AtomPub TCK</a> to assist the development of the specification and promote interoperability between up-and-coming implementations. Feel free to use them for building and testing your own CMIS clients and servers.</p>
|
||||
<p>Frequent updates are made to both the Repository and TCK as issues are resolved or new capabilities added. Currently, <strong class="highlight">version ${cmisVersion}</strong> of the CMIS specification is supported.</p>
|
||||
|
||||
<a name="repo"></a>
|
||||
<h3>Alfresco CMIS Repository</h3>
|
||||
<p>Point your CMIS client to one of the following Alfresco CMIS bindings (with <strong>user=admin</strong> and <strong>password=admin</strong>).</p>
|
||||
<ul>
|
||||
<li>CMIS AtomPub Binding: <a href="${url.serviceContext}/api/repository">AtomPub Service Document</a></li>
|
||||
<li>CMIS Web Services Binding: <a href="${url.context}/cmis">WSDL Documents</a></li>
|
||||
</ul>
|
||||
|
||||
<p>You can also browse this repository via the <a href="${url.context}/cmisbrowse?url=${absurl(url.serviceContext)}/api/cmis">CMIS FileShare browser</a>.</p>
|
||||
|
||||
<h5><span id="repoinfo" class="toggle" onclick="return toggleDisplay(this)">+</span> CMIS Repository Information</h5>
|
||||
<table id="repoinfo_body" style="display: none;">
|
||||
<tr><td>Version Supported</td><td>${cmisVersion}</td></tr>
|
||||
<tr><td>Repository Id</td><td>${server.id}</td></tr>
|
||||
<tr><td>Repository Name</td><td>${server.name}</td></tr>
|
||||
<tr><td>Repository Description</td><td>[none]</td></tr>
|
||||
<tr><td>Vendor Name</td><td>Alfresco</td></tr>
|
||||
<tr><td>Product Name</td><td>Alfresco Repository (${server.edition})</td></tr>
|
||||
<tr><td>Product Version</td><td>${server.version}</td></tr>
|
||||
</table>
|
||||
|
||||
<h5><span id="repocapabilities" class="toggle" onclick="return toggleDisplay(this)">+</span> CMIS Repository Capabilities</h5>
|
||||
<table id="repocapabilities_body" style="display: none;">
|
||||
<tr><td>ACL</td><td>none</td></tr>
|
||||
<tr><td>AllVersionsSearchable</td><td>${allVersionsSearchable?string}</td></tr>
|
||||
<tr><td>Changes</td><td>[#-- TODO --]none</td></tr>
|
||||
<tr><td>ContentStreamUpdatability</td><td>anytime</td></tr>
|
||||
<tr><td>GetDescendants</td><td>true</td></tr>
|
||||
<tr><td>GetFolderTree</td><td>true</td></tr>
|
||||
<tr><td>Multifiling</td><td>true</td></tr>
|
||||
<tr><td>PWCSearchable</td><td>${pwcSearchable?string}</td></tr>
|
||||
<tr><td>PWCUpdateable</td><td>true</td></tr>
|
||||
<tr><td>Query</td><td>${querySupport}</td></tr>
|
||||
<tr><td>Join</td><td>${joinSupport}</td></tr>
|
||||
<tr><td>Renditions</td><td>none</td></tr>
|
||||
<tr><td>Unfiling</td><td>false</td></tr>
|
||||
<tr><td>VersionSpecificFiling</td><td>false</td></tr>
|
||||
</table>
|
||||
|
||||
<p><em>Note: The contents of this repository may be cleaned at any time.</em><p>
|
||||
|
||||
<a name="testatompub"></a>
|
||||
<h3>CMIS AtomPub TCK</h3>
|
||||
<p>Point the TCK (Test Compatibility Kit) at your CMIS Repository AtomPub Service Document. Provide credentials (or leave blank, if authentication not required) and adjust options as necessary. Hit the '<strong>Start TCK</strong>' button for a test report.</p>
|
||||
<p><em>Tip: Enable the 'Trace Reqs/Responses' option for examples of conversations with a CMIS Repository via AtomPub.</em></p>
|
||||
<p><em>Note: This TCK is now contributed to <a href="http://incubator.apache.org/chemistry/">Apache Chemistry</a>.</em></p>
|
||||
|
||||
<form action="${url.serviceContext}/api/cmis/test" method="post" class="hform">
|
||||
<fieldset>
|
||||
<legend>CMIS Repository</legend>
|
||||
<p><label>Service Document</label><input type="text" name="chemistry.tck.serviceUrl" size="50" value="${absurl(url.serviceContext)}/api/cmis"></p>
|
||||
<p><label>Username</label><input type="text" name="chemistry.tck.user" value="admin"></p>
|
||||
<p><label>Password</label><input type="text" name="chemistry.tck.password" value="admin"></p>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>Options</legend>
|
||||
<p class="checkbox"><label>Validate Responses</label><input type="checkbox" name="chemistry.tck.validate" value="true"[#if tckOptions.validate] checked="checked"[/#if]></p>
|
||||
<p class="checkbox"><label>Fail on Validation Error</label><input type="checkbox" name="chemistry.tck.failOnValidationError" value="true"[#if tckOptions.failOnValidationError] checked="checked"[/#if]></p>
|
||||
<p class="checkbox"><label>Trace Reqs/Responses</label><input type="checkbox" name="chemistry.tck.traceRequests" value="true"[#if tckOptions.traceRequests] checked="checked"[/#if]><p>
|
||||
<p><label>Tests</label><input name="chemistry.tck.tests" value="RepositoryServiceTest.testRepository"></p>
|
||||
<p><label><span id="availtests" class="toggle" onclick="return toggleDisplay(this)">[+]</span> Available Tests</label>
|
||||
<table id="availtests_body" style="display: none;">
|
||||
[#list tckTests as test]<tr><td>${test}</td></tr>[/#list]
|
||||
</table></p>
|
||||
</fieldset>
|
||||
<p><input type="submit" name="submit" value="Start TCK" class="button"></p>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="resources">
|
||||
<h3>CMIS Resources</h3>
|
||||
<ul>
|
||||
<li><a href="http://www.oasis-open.org/committees/cmis">OASIS Technical Committee</a></li>
|
||||
<li><a href="http://xml.coverpages.org/cmis.html">Cover Pages</a></li>
|
||||
<li><a href="http://www.oasis-open.org/committees/download.php/34413/CMIS-70b3.zip"><strong>Specification v0.7</strong></a></li>
|
||||
</ul>
|
||||
<h3>Alfresco Resources</h3>
|
||||
<ul>
|
||||
<li><a href="http://wiki.alfresco.com/wiki/CMIS">CMIS Wiki</a></li>
|
||||
<li><a href="http://blogs.alfresco.com/cmis/">CMIS Blog</a></li>
|
||||
<li><a href="http://wiki.alfresco.com/wiki/Download_Community_Edition">Download</a> Repository</a></li>
|
||||
<li><a href="http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment">Source Code</a> for Repository</li>
|
||||
<li><a href="http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/design/changes_v0.62f_to_v0.7.txt">Changes from v0.62 to v0.7</li>
|
||||
</ul>
|
||||
<h3>Apache Chemistry</h3>
|
||||
<ul>
|
||||
<li><a href="http://incubator.apache.org/chemistry/">Home Page</a></li>
|
||||
<li><a href="http://svn.apache.org/viewvc/incubator/chemistry/trunk/chemistry/chemistry-tck-atompub/">Source Code</a> for TCK</li>
|
||||
</ul>
|
||||
<h3>CMIS FileShare</h3>
|
||||
<ul>
|
||||
<li><a href="http://cmisfs.fmui.de/">Home Page</a></li>
|
||||
</ul>
|
||||
<h3>Provide Feedback</h3>
|
||||
<ul>
|
||||
<li><a href="http://forums.alfresco.com/en/viewforum.php?f=45">CMIS Forum</a></li>
|
||||
<li><a href="https://issues.alfresco.com/jira/secure/IssueNavigator.jspa?reset=true&mode=hide&pid=10103&sorter/order=DESC&sorter/field=priority&resolution=-1&component=10459">Find / Raise Issues</li>
|
||||
<li><a href="http://groups.google.com/group/cmis-interop">CMIS Interop Group</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
<p>Last Updated: $Date$, Alfresco Software, Inc</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -135,7 +135,7 @@
|
||||
<li><a href="http://wiki.alfresco.com/wiki/Download_Community_Edition">Download</a> Repository</a></li>
|
||||
<li><a href="http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment">Source Code</a> for Repository</li>
|
||||
<li><a href="http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/design/changes_v0.62f_to_v0.7.txt">Changes: v0.62 to v0.7</li>
|
||||
<li><a href="http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/design/changes_v0.7_to_v1.0cd04.txt">Changes: v0.7 to v1.0 cd04</li>
|
||||
<li><a href="http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/design/changes_v0.7_to_1.0cd04.txt">Changes: v0.7 to v1.0 cd04</li>
|
||||
</ul>
|
||||
<h3>Apache Chemistry</h3>
|
||||
<ul>
|
||||
|
@@ -197,6 +197,7 @@ public class DMNavigationServicePort extends DMAbstractServicePort implements Na
|
||||
*/
|
||||
public CmisObjectType getFolderParent(String repositoryId, String folderId, String filter, CmisExtensionType extension) throws CmisException
|
||||
{
|
||||
// FIXME: [BUG] It is necessary to check with specification for behaviour of this method with folderId equal to rootFolderId!!!
|
||||
checkRepositoryId(repositoryId);
|
||||
|
||||
if ((filter != null) && !filter.equals("") && !filter.equals("*"))
|
||||
|
@@ -97,7 +97,6 @@ public class DMRepositoryServicePort extends DMAbstractServicePort implements Re
|
||||
propertyTypeEnumMapping.put(CMISDataTypeEnum.INTEGER, EnumPropertyType.INTEGER);
|
||||
propertyTypeEnumMapping.put(CMISDataTypeEnum.STRING, EnumPropertyType.STRING);
|
||||
propertyTypeEnumMapping.put(CMISDataTypeEnum.URI, EnumPropertyType.URI);
|
||||
propertyTypeEnumMapping.put(CMISDataTypeEnum.XML, EnumPropertyType.XML);
|
||||
|
||||
queryTypeEnumMapping = new HashMap<CMISQueryEnum, EnumCapabilityQuery>();
|
||||
queryTypeEnumMapping.put(CMISQueryEnum.BOTH_COMBINED, EnumCapabilityQuery.BOTHCOMBINED);
|
||||
@@ -223,8 +222,6 @@ public class DMRepositoryServicePort extends DMAbstractServicePort implements Re
|
||||
break;
|
||||
case URI:
|
||||
break;
|
||||
case XML:
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -286,10 +283,6 @@ public class DMRepositoryServicePort extends DMAbstractServicePort implements Re
|
||||
{
|
||||
return new CmisPropertyUriDefinitionType();
|
||||
}
|
||||
case XML:
|
||||
{
|
||||
return new CmisPropertyXmlDefinitionType();
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw cmisObjectsUtils.createCmisException(type.getLabel(), EnumServiceException.OBJECT_NOT_FOUND);
|
||||
|
@@ -25,7 +25,9 @@
|
||||
package org.alfresco.repo.cmis.ws.utils;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -387,33 +389,25 @@ public class CmisObjectsUtils
|
||||
*/
|
||||
public NodeRef getLatestNode(NodeRef documentNodeRef, boolean major)
|
||||
{
|
||||
Version specifiedVersion = versionService.getCurrentVersion(documentNodeRef);
|
||||
NodeRef latestVersionNodeRef = documentNodeRef;
|
||||
|
||||
if ((null != specifiedVersion) && (null != specifiedVersion.getVersionedNodeRef()))
|
||||
VersionHistory versionHistory = versionService.getVersionHistory(documentNodeRef);
|
||||
if (null != versionHistory)
|
||||
{
|
||||
latestVersionNodeRef = specifiedVersion.getVersionedNodeRef();
|
||||
|
||||
if (major)
|
||||
Collection<Version> allVersions = versionHistory.getAllVersions();
|
||||
Iterator<Version> versionsIterator = ((null != allVersions) && !allVersions.isEmpty()) ? (allVersions.iterator()) : (null);
|
||||
Version latestVersion = (null == versionsIterator) ? (null) : (versionsIterator.next());
|
||||
String currentVersionLabel = (null != latestVersion) ? (latestVersion.getVersionLabel()) : (null);
|
||||
if (major && (null != latestVersion))
|
||||
{
|
||||
Version latestVersion = versionService.getCurrentVersion(latestVersionNodeRef);
|
||||
|
||||
if ((null != latestVersion) && (VersionType.MAJOR != latestVersion.getVersionType()))
|
||||
for (; (VersionType.MAJOR != latestVersion.getVersionType()) && versionsIterator.hasNext(); latestVersion = versionsIterator.next())
|
||||
{
|
||||
VersionHistory versionHistory = versionService.getVersionHistory(latestVersion.getFrozenStateNodeRef());
|
||||
if (null != versionHistory)
|
||||
{
|
||||
for (latestVersion = versionHistory.getPredecessor(latestVersion); (null != latestVersion) && (VersionType.MAJOR != latestVersion.getVersionType()); latestVersion = versionHistory
|
||||
.getPredecessor(latestVersion))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if ((null != latestVersion) && (null != latestVersion.getFrozenStateNodeRef()))
|
||||
{
|
||||
latestVersionNodeRef = latestVersion.getFrozenStateNodeRef();
|
||||
}
|
||||
}
|
||||
latestVersion = (VersionType.MAJOR != latestVersion.getVersionType()) ? (null) : (latestVersion);
|
||||
}
|
||||
if ((null != latestVersion) && (null != latestVersion.getVersionLabel()))
|
||||
{
|
||||
latestVersionNodeRef = (!latestVersion.getVersionLabel().equals(currentVersionLabel) || (null == latestVersion.getVersionedNodeRef()) || !nodeService
|
||||
.exists(latestVersion.getVersionedNodeRef())) ? (latestVersion.getFrozenStateNodeRef()) : (latestVersion.getVersionedNodeRef());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -476,7 +476,7 @@ public class PropertyUtil
|
||||
return PropertyCheckingStateEnum.PROPERTY_NOT_UPDATABLE;
|
||||
}
|
||||
|
||||
if (propertyDefinition.isRequired() && (value == null))
|
||||
if (propertyDefinition.isRequired() && (null == value))
|
||||
{
|
||||
throw cmisObjectsUtils.createCmisException((propertyName + " property required"), EnumServiceException.CONSTRAINT);
|
||||
}
|
||||
@@ -499,7 +499,7 @@ public class PropertyUtil
|
||||
return PropertyCheckingStateEnum.PROPERTY_CHECKED;
|
||||
}
|
||||
|
||||
private enum PropertyCheckingStateEnum
|
||||
public enum PropertyCheckingStateEnum
|
||||
{
|
||||
PROPERTY_CHECKED, PROPERTY_NATIVE, PROPERTY_NOT_UPDATABLE;
|
||||
}
|
||||
@@ -733,25 +733,6 @@ public class PropertyUtil
|
||||
|
||||
return property;
|
||||
}
|
||||
case XML:
|
||||
{
|
||||
CmisPropertyXml property = new CmisPropertyXml();
|
||||
property.setPdid(pdid);
|
||||
|
||||
if (value instanceof Collection)
|
||||
{
|
||||
for (CmisPropertyXml.Value propertyValue : (Collection<CmisPropertyXml.Value>) value)
|
||||
{
|
||||
property.getValue().add(propertyValue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
property.getValue().add((CmisPropertyXml.Value) value);
|
||||
}
|
||||
|
||||
return property;
|
||||
}
|
||||
case HTML:
|
||||
{
|
||||
CmisPropertyHtml property = new CmisPropertyHtml();
|
||||
|
@@ -1,2 +0,0 @@
|
||||
basedir=/Users/davidc/Dev/projects/cmis063/code/root/projects/remote-api
|
||||
lib=/Users/davidc/Dev/software/apache-cxf-2.1.2/lib
|
@@ -1,54 +0,0 @@
|
||||
<project name="WS-Binding" default="main" basedir=".">
|
||||
|
||||
<property file="${user.name}.build.properties" />
|
||||
<property file="build.properties" />
|
||||
|
||||
<property name="src.dir" value="${basedir}/source" />
|
||||
<property name="src.java" value="${src.dir}/java" />
|
||||
<property name="src.wsdl" value="${src.dir}/wsdl" />
|
||||
<property name="src.generated" value="${src.dir}/generated" />
|
||||
<property name="build.dir" value="${basedir}/build" />
|
||||
<property name="build.classes" value="${build.dir}/classes" />
|
||||
<property name="lib" value="${lib}" />
|
||||
|
||||
<path id="classpath.lib">
|
||||
<fileset dir="${lib}">
|
||||
<include name="**/*.jar" />
|
||||
</fileset>
|
||||
</path>
|
||||
|
||||
<target name="main" depends="undeploy, deploy" />
|
||||
|
||||
<target name="undeploy">
|
||||
<delete failonerror="no" includeemptydirs="true">
|
||||
<fileset dir="${alfresco.home}/tomcat/webapps/alfresco/WEB-INF/classes/org/alfresco/">
|
||||
<include name="**/*.*" />
|
||||
</fileset>
|
||||
</delete>
|
||||
</target>
|
||||
|
||||
<target name="deploy">
|
||||
<copy todir="${alfresco.home}/tomcat/webapps/alfresco/WEB-INF/classes" overwrite="true">
|
||||
<fileset dir="${build.classes}">
|
||||
<include name="**/*.*" />
|
||||
<exclude name="**/*Test.*" />
|
||||
<exclude name="**/extension/*.*" />
|
||||
</fileset>
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
<target name="wsdl2java">
|
||||
<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="yes" maxmemory="256m">
|
||||
<classpath refid="classpath.lib" />
|
||||
|
||||
<arg value="-noAddressBinding" />
|
||||
<arg value="-d" />
|
||||
<arg value="/Users/davidc/Dev/projects/cmis063/code/root/projects/remote-api/source/generated" />
|
||||
<arg value="-p" />
|
||||
<arg value="org.alfresco.repo.cmis.ws" />
|
||||
|
||||
<arg value="CMISWS-Service.wsdl" />
|
||||
</java>
|
||||
</target>
|
||||
|
||||
</project>
|
Reference in New Issue
Block a user