CMIS-сервер JBoss ModeShape имеет несколько репозиториев с одинаковым <cmis: repositoryId>
Я просто наткнулся на этот ответ на getRepositories
с сервера ModeShape:
<?xml version='1.0' encoding='UTF-8'?>
<app:service xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/"
xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
xmlns:app="http://www.w3.org/2007/app">
<app:workspace>
<atom:title>sample</atom:title>
<app:collection href="http://server:32771/modeshape-cmis/atom/sample/children?id=%5Broot%5D">
<cmisra:collectionType>root</cmisra:collectionType>
<atom:title type="text">Root Collection</atom:title>
<app:accept>application/atom+xml;type=entry</app:accept>
<app:accept>application/cmisatom+xml</app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/sample/types">
<cmisra:collectionType>types</cmisra:collectionType>
<atom:title type="text">Types Collection</atom:title>
<app:accept></app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/sample/query">
<cmisra:collectionType>query</cmisra:collectionType>
<atom:title type="text">Query Collection</atom:title>
<app:accept>application/cmisquery+xml</app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/sample/checkedout">
<cmisra:collectionType>checkedout</cmisra:collectionType>
<atom:title type="text">Checked Out Collection</atom:title>
<app:accept>application/cmisatom+xml</app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/sample/update">
<cmisra:collectionType>update</cmisra:collectionType>
<atom:title type="text">Bulk Update Collection</atom:title>
<app:accept>application/cmisatom+xml</app:accept>
</app:collection>
<cmisra:repositoryInfo>
<cmis:repositoryId>sample</cmis:repositoryId>
<cmis:repositoryName>ModeShape</cmis:repositoryName>
<cmis:repositoryDescription>
jcr.repository.name=ModeShape
option.versioning.supported=true
option.query.sql.supported=true
node.type.management.multivalued.properties.supported=true
node.type.management.overrides.supported=true
level.1.supported=true
jcr.specification.version=2.0
node.type.management.update.in.use.suported=true
query.full.text.search.supported=true
option.lifecycle.supported=false
option.node.and.property.with.same.name.supported=true
option.retention.supported=false
option.node.type.management.supported=true
identifier.stability=identifier.stability.indefinite.duration
option.simple.versioning.supported=false
query.stored.queries.supported=true
node.type.management.orderable.child.nodes.supported=true
jcr.specification.name=Content Repository for Java Technology API
option.unfiled.content.supported=false
option.baselines.supported=false
node.type.management.primary.item.name.supported=true
level.2.supported=true
option.activities.supported=false
node.type.management.multiple.binary.properties.supported=true
query.languages=null
option.transactions.supported=true
option.locking.supported=true
custom.rep.workspace.names=null
query.xpath.pos.index=false
option.update.mixin.node.types.supported=true
query.joins=query.joins.inner.outer
option.update.primary.node.type.supported=true
jcr.repository.version=4.3.0.Final
option.journaled.observation.supported=false
option.access.control.supported=true
node.type.management.value.constraints.supported=true
option.shareable.nodes.supported=true
custom.rep.name=sample
option.workspace.management.supported=true
write.supported=true
query.xpath.doc.order=false
node.type.management.autocreated.definitions.supported=true
option.observation.supported=true
node.type.management.residual.definitions.supported=true
jcr.repository.vendor=JBoss, a division of Red Hat
option.xml.export.supported=true
node.type.management.property.types=true
node.type.management.inheritance=node.type.management.inheritance.multiple
option.xml.import.supported=true
node.type.management.same.name.siblings.supported=true
jcr.repository.vendor.url=http://www.modeshape.org
</cmis:repositoryDescription>
<cmis:vendorName>OpenCMIS</cmis:vendorName>
<cmis:productName>OpenCMIS JCR</cmis:productName>
<cmis:productVersion>0.3</cmis:productVersion>
<cmis:rootFolderId>[root]</cmis:rootFolderId>
<cmis:capabilities>
<cmis:capabilityACL>none</cmis:capabilityACL>
<cmis:capabilityAllVersionsSearchable>false</cmis:capabilityAllVersionsSearchable>
<cmis:capabilityChanges>objectidsonly</cmis:capabilityChanges>
<cmis:capabilityContentStreamUpdatability>anytime</cmis:capabilityContentStreamUpdatability>
<cmis:capabilityGetDescendants>true</cmis:capabilityGetDescendants>
<cmis:capabilityGetFolderTree>true</cmis:capabilityGetFolderTree>
<cmis:capabilityMultifiling>false</cmis:capabilityMultifiling>
<cmis:capabilityPWCSearchable>false</cmis:capabilityPWCSearchable>
<cmis:capabilityPWCUpdatable>true</cmis:capabilityPWCUpdatable>
<cmis:capabilityQuery>bothcombined</cmis:capabilityQuery>
<cmis:capabilityRenditions>none</cmis:capabilityRenditions>
<cmis:capabilityUnfiling>false</cmis:capabilityUnfiling>
<cmis:capabilityVersionSpecificFiling>false</cmis:capabilityVersionSpecificFiling>
<cmis:capabilityJoin>none</cmis:capabilityJoin>
</cmis:capabilities>
<cmis:cmisVersionSupported>1.0</cmis:cmisVersionSupported>
<cmis:thinClientURI></cmis:thinClientURI>
</cmisra:repositoryInfo>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/typedescendants" href="http://server:32771/modeshape-cmis/atom/sample/typedesc" type="application/atom+xml;type=feed"/>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://server:32771/modeshape-cmis/atom/sample/foldertree?id=%5Broot%5D" type="application/cmistree+xml"/>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/rootdescendants" href="http://server:32771/modeshape-cmis/atom/sample/descendants?id=%5Broot%5D" type="application/cmistree+xml" cmisra:id="[root]"/>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/changes" href="http://server:32771/modeshape-cmis/atom/sample/changes" type="application/atom+xml;type=feed"/>
<cmisra:uritemplate>
<cmisra:template>http://server:32771/modeshape-cmis/atom/sample/id?id={id}&filter={filter}&includeAllowableActions={includeAllowableActions}&includeACL={includeACL}&includePolicyIds={includePolicyIds}&includeRelationships={includeRelationships}&renditionFilter={renditionFilter}</cmisra:template>
<cmisra:type>objectbyid</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
<cmisra:uritemplate>
<cmisra:template>http://server:32771/modeshape-cmis/atom/sample/path?path={path}&filter={filter}&includeAllowableActions={includeAllowableActions}&includeACL={includeACL}&includePolicyIds={includePolicyIds}&includeRelationships={includeRelationships}&renditionFilter={renditionFilter}</cmisra:template>
<cmisra:type>objectbypath</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
<cmisra:uritemplate>
<cmisra:template>http://server:32771/modeshape-cmis/atom/sample/type?id={id}</cmisra:template>
<cmisra:type>typebyid</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
<cmisra:uritemplate>
<cmisra:template>http://server:32771/modeshape-cmis/atom/sample/query?q={q}&searchAllVersions={searchAllVersions}&includeAllowableActions={includeAllowableActions}&includeRelationships={includeRelationships}&maxItems={maxItems}&skipCount={skipCount}</cmisra:template>
<cmisra:type>query</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=feed</cmisra:mediatype>
</cmisra:uritemplate>
</app:workspace>
<app:workspace>
<atom:title>artifacts</atom:title>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/children?id=%5Broot%5D">
<cmisra:collectionType>root</cmisra:collectionType>
<atom:title type="text">Root Collection</atom:title>
<app:accept>application/atom+xml;type=entry</app:accept>
<app:accept>application/cmisatom+xml</app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/types">
<cmisra:collectionType>types</cmisra:collectionType>
<atom:title type="text">Types Collection</atom:title>
<app:accept></app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/query">
<cmisra:collectionType>query</cmisra:collectionType>
<atom:title type="text">Query Collection</atom:title>
<app:accept>application/cmisquery+xml</app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/checkedout">
<cmisra:collectionType>checkedout</cmisra:collectionType>
<atom:title type="text">Checked Out Collection</atom:title>
<app:accept>application/cmisatom+xml</app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/update">
<cmisra:collectionType>update</cmisra:collectionType>
<atom:title type="text">Bulk Update Collection</atom:title>
<app:accept>application/cmisatom+xml</app:accept>
</app:collection>
<cmisra:repositoryInfo>
<cmis:repositoryId>artifacts</cmis:repositoryId>
<cmis:repositoryName>ModeShape</cmis:repositoryName>
<cmis:repositoryDescription>
jcr.repository.name=ModeShape
option.versioning.supported=true
option.query.sql.supported=true
node.type.management.multivalued.properties.supported=true
node.type.management.overrides.supported=true
level.1.supported=true
jcr.specification.version=2.0
node.type.management.update.in.use.suported=true
query.full.text.search.supported=true
option.lifecycle.supported=false
option.node.and.property.with.same.name.supported=true
option.retention.supported=false
option.node.type.management.supported=true
identifier.stability=identifier.stability.indefinite.duration
option.simple.versioning.supported=false
query.stored.queries.supported=true
node.type.management.orderable.child.nodes.supported=true
jcr.specification.name=Content Repository for Java Technology API
option.unfiled.content.supported=false
option.baselines.supported=false
node.type.management.primary.item.name.supported=true
level.2.supported=true
option.activities.supported=false
node.type.management.multiple.binary.properties.supported=true
query.languages=null
option.transactions.supported=true
option.locking.supported=true
custom.rep.workspace.names=null
query.xpath.pos.index=false
option.update.mixin.node.types.supported=true
query.joins=query.joins.inner.outer
option.update.primary.node.type.supported=true
jcr.repository.version=4.3.0.Final
option.journaled.observation.supported=false
option.access.control.supported=true
node.type.management.value.constraints.supported=true
option.shareable.nodes.supported=true
custom.rep.name=artifacts
option.workspace.management.supported=true
write.supported=true
query.xpath.doc.order=false
node.type.management.autocreated.definitions.supported=true
option.observation.supported=true
node.type.management.residual.definitions.supported=true
jcr.repository.vendor=JBoss, a division of Red Hat
option.xml.export.supported=true
node.type.management.property.types=true
node.type.management.inheritance=node.type.management.inheritance.multiple
option.xml.import.supported=true
node.type.management.same.name.siblings.supported=true
jcr.repository.vendor.url=http://www.modeshape.org
</cmis:repositoryDescription>
<cmis:vendorName>OpenCMIS</cmis:vendorName>
<cmis:productName>OpenCMIS JCR</cmis:productName>
<cmis:productVersion>0.3</cmis:productVersion>
<cmis:rootFolderId>[root]</cmis:rootFolderId>
<cmis:capabilities>
<cmis:capabilityACL>none</cmis:capabilityACL>
<cmis:capabilityAllVersionsSearchable>false</cmis:capabilityAllVersionsSearchable>
<cmis:capabilityChanges>objectidsonly</cmis:capabilityChanges>
<cmis:capabilityContentStreamUpdatability>anytime</cmis:capabilityContentStreamUpdatability>
<cmis:capabilityGetDescendants>true</cmis:capabilityGetDescendants>
<cmis:capabilityGetFolderTree>true</cmis:capabilityGetFolderTree>
<cmis:capabilityMultifiling>false</cmis:capabilityMultifiling>
<cmis:capabilityPWCSearchable>false</cmis:capabilityPWCSearchable>
<cmis:capabilityPWCUpdatable>true</cmis:capabilityPWCUpdatable>
<cmis:capabilityQuery>bothcombined</cmis:capabilityQuery>
<cmis:capabilityRenditions>none</cmis:capabilityRenditions>
<cmis:capabilityUnfiling>false</cmis:capabilityUnfiling>
<cmis:capabilityVersionSpecificFiling>false</cmis:capabilityVersionSpecificFiling>
<cmis:capabilityJoin>none</cmis:capabilityJoin>
</cmis:capabilities>
<cmis:cmisVersionSupported>1.0</cmis:cmisVersionSupported>
<cmis:thinClientURI></cmis:thinClientURI>
</cmisra:repositoryInfo>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/typedescendants" href="http://server:32771/modeshape-cmis/atom/artifacts/typedesc" type="application/atom+xml;type=feed"/>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://server:32771/modeshape-cmis/atom/artifacts/foldertree?id=%5Broot%5D" type="application/cmistree+xml"/>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/rootdescendants" href="http://server:32771/modeshape-cmis/atom/artifacts/descendants?id=%5Broot%5D" type="application/cmistree+xml" cmisra:id="[root]"/>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/changes" href="http://server:32771/modeshape-cmis/atom/artifacts/changes" type="application/atom+xml;type=feed"/>
<cmisra:uritemplate>
<cmisra:template>http://server:32771/modeshape-cmis/atom/artifacts/id?id={id}&filter={filter}&includeAllowableActions={includeAllowableActions}&includeACL={includeACL}&includePolicyIds={includePolicyIds}&includeRelationships={includeRelationships}&renditionFilter={renditionFilter}</cmisra:template>
<cmisra:type>objectbyid</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
<cmisra:uritemplate>
<cmisra:template>http://server:32771/modeshape-cmis/atom/artifacts/path?path={path}&filter={filter}&includeAllowableActions={includeAllowableActions}&includeACL={includeACL}&includePolicyIds={includePolicyIds}&includeRelationships={includeRelationships}&renditionFilter={renditionFilter}</cmisra:template>
<cmisra:type>objectbypath</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
<cmisra:uritemplate>
<cmisra:template>http://server:32771/modeshape-cmis/atom/artifacts/type?id={id}</cmisra:template>
<cmisra:type>typebyid</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
</cmisra:uritemplate>
<cmisra:uritemplate>
<cmisra:template>http://server:32771/modeshape-cmis/atom/artifacts/query?q={q}&searchAllVersions={searchAllVersions}&includeAllowableActions={includeAllowableActions}&includeRelationships={includeRelationships}&maxItems={maxItems}&skipCount={skipCount}</cmisra:template>
<cmisra:type>query</cmisra:type>
<cmisra:mediatype>application/atom+xml;type=feed</cmisra:mediatype>
</cmisra:uritemplate>
</app:workspace>
<app:workspace>
<atom:title>artifacts</atom:title>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/children?id=%5Broot%5D">
<cmisra:collectionType>root</cmisra:collectionType>
<atom:title type="text">Root Collection</atom:title>
<app:accept>application/atom+xml;type=entry</app:accept>
<app:accept>application/cmisatom+xml</app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/types">
<cmisra:collectionType>types</cmisra:collectionType>
<atom:title type="text">Types Collection</atom:title>
<app:accept></app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/query">
<cmisra:collectionType>query</cmisra:collectionType>
<atom:title type="text">Query Collection</atom:title>
<app:accept>application/cmisquery+xml</app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/checkedout">
<cmisra:collectionType>checkedout</cmisra:collectionType>
<atom:title type="text">Checked Out Collection</atom:title>
<app:accept>application/cmisatom+xml</app:accept>
</app:collection>
<app:collection href="http://server:32771/modeshape-cmis/atom/artifacts/update">
<cmisra:collectionType>update</cmisra:collectionType>
<atom:title type="text">Bulk Update Collection</atom:title>
<app:accept>application/cmisatom+xml</app:accept>
</app:collection>
<cmisra:repositoryInfo>
<cmis:repositoryId>artifacts</cmis:repositoryId>
<cmis:repositoryName>ModeShape</cmis:repositoryName>
<cmis:repositoryDescription>
jcr.repository.name=ModeShape
option.versioning.supported=true
option.query.sql.supported=true
node.type.management.multivalued.properties.supported=true
node.type.management.overrides.supported=true
level.1.supported=true
jcr.specification.version=2.0
node.type.management.update.in.use.suported=true
query.full.text.search.supported=true
option.lifecycle.supported=false
option.node.and.property.with.same.name.supported=true
option.retention.supported=false
option.node.type.management.supported=true
identifier.stability=identifier.stability.indefinite.duration
option.simple.versioning.supported=false
query.stored.queries.supported=true
node.type.management.orderable.child.nodes.supported=true
jcr.specification.name=Content Repository for Java Technology API
option.unfiled.content.supported=false
option.baselines.supported=false
node.type.management.primary.item.name.supported=true
level.2.supported=true
option.activities.supported=false
node.type.management.multiple.binary.properties.supported=true
query.languages=null
option.transactions.supported=true
option.locking.supported=true
custom.rep.workspace.names=null
query.xpath.pos.index=false
option.update.mixin.node.types.supported=true
query.joins=query.joins.inner.outer
option.update.primary.node.type.supported=true
jcr.repository.version=4.3.0.Final
option.journaled.observation.supported=false
option.access.control.supported=true
node.type.management.value.constraints.supported=true
option.shareable.nodes.supported=true
custom.rep.name=artifacts
option.workspace.management.supported=true
write.supported=true
query.xpath.doc.order=false
node.type.management.autocreated.definitions.supported=true
option.observation.supported=true
node.type.management.residual.definitions.supported=true
jcr.repository.vendor=JBoss, a division of Red Hat
option.xml.export.supported=true
node.type.management.property.types=true
node.type.management.inheritance=node.type.management.inheritance.multiple
option.xml.import.supported=true
node.type.management.same.name.siblings.supported=true
jcr.repository.vendor.url=http://www.modeshape.org
</cmis:repositoryDescription>
<cmis:vendorName>OpenCMIS</cmis:vendorName>
<cmis:productName>OpenCMIS JCR</cmis:productName>
<cmis:productVersion>0.3</cmis:productVersion>
<cmis:rootFolderId>[root]</cmis:rootFolderId>
<cmis:capabilities>
<cmis:capabilityACL>none</cmis:capabilityACL>
<cmis:capabilityAllVersionsSearchable>false</cmis:capabilityAllVersionsSearchable>
<cmis:capabilityChanges>objectidsonly</cmis:capabilityChanges>
<cmis:capabilityContentStreamUpdatability>anytime</cmis:capabilityContentStreamUpdatability>
<cmis:capabilityGetDescendants>true</cmis:capabilityGetDescendants>
<cmis:capabilityGetFolderTree>true</cmis:capabilityGetFolderTree>
<cmis:capabilityMultifiling>false</cmis:capabilityMultifiling>
<cmis:capabilityPWCSearchable>false</cmis:capabilityPWCSearchable>
<cmis:capabilityPWCUpdatable>true</cmis:capabilityPWCUpdatable>
<cmis:capabilityQuery>bothcombined</cmis:capabilityQuery>
<cmis:capabilityRenditions>none</cmis:capabilityRenditions>
<cmis:capabilityUnfiling>false</cmis:capabilityUnfiling>
<cmis:capabilityVersionSpecificFiling>false</cmis:capabilityVersionSpecificFiling>
<cmis:capabilityJoin>none</cmis:capabilityJoin>
</cmis:capabilities>
<cmis:cmisVersionSupported>1.0</cmis:cmisVersionSupported>
<cmis:thinClientURI></cmis:thinClientURI>
</cmisra:repositoryInfo>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/typedescendants" href="http://server:32771/modeshape-cmis/atom/artifacts/typedesc" type="application/atom+xml;type=feed"/>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://server:32771/modeshape-cmis/atom/artifacts/foldertree?id=%5Broot%5D" type="application/cmistree+xml"/>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/rootdescendants" href="http://server:32771/modeshape-cmis/atom/artifacts/descendants?id=%5Broot%5D" type="application/cmistree+xml" cmisra:id="[root]"/>
<atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/changes" href="http://server:32771/modeshape-cmis/atom/artifacts/changes" type="application/atom+xml;type=feed"/>
<cmisra:uritemplate>
[Truncated]
Это разрешено спецификацией CMIS 1.1?
Если да, то как провести различие между двумя репозиториями с одинаковым идентификатором?
1 ответ
Спецификация CMIS 1.1 гласит:
Отношение служебной ссылки, когда оно предоставляется в ресурсе CMIS, ДОЛЖНО указывать на служебный документ AtomPub только с одним элементом рабочей области.
Этот сервисный документ AtomPub ДОЛЖЕН тогда содержать только один элемент рабочей области, который ДОЛЖЕН быть рабочей областью, представляющей репозиторий, содержащий документ Atom Entry или Atom Feed.
Служебный документ ДОЛЖЕН содержать только один элемент рабочей области.
В остальной части спецификации всегда говорится об использовании единственного (а не множественного числа) о "элементе рабочего пространства".
Поэтому, я думаю, это ошибка реализации CMIS в ModeShape.