1

我只是偶然发现了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}&amp;filter={filter}&amp;includeAllowableActions={includeAllowableActions}&amp;includeACL={includeACL}&amp;includePolicyIds={includePolicyIds}&amp;includeRelationships={includeRelationships}&amp;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}&amp;filter={filter}&amp;includeAllowableActions={includeAllowableActions}&amp;includeACL={includeACL}&amp;includePolicyIds={includePolicyIds}&amp;includeRelationships={includeRelationships}&amp;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}&amp;searchAllVersions={searchAllVersions}&amp;includeAllowableActions={includeAllowableActions}&amp;includeRelationships={includeRelationships}&amp;maxItems={maxItems}&amp;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}&amp;filter={filter}&amp;includeAllowableActions={includeAllowableActions}&amp;includeACL={includeACL}&amp;includePolicyIds={includePolicyIds}&amp;includeRelationships={includeRelationships}&amp;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}&amp;filter={filter}&amp;includeAllowableActions={includeAllowableActions}&amp;includeACL={includeACL}&amp;includePolicyIds={includePolicyIds}&amp;includeRelationships={includeRelationships}&amp;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}&amp;searchAllVersions={searchAllVersions}&amp;includeAllowableActions={includeAllowableActions}&amp;includeRelationships={includeRelationships}&amp;maxItems={maxItems}&amp;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 规范是否允许这样做?
如果是,如何区分具有相同 id 的两个存储库?

4

1 回答 1

1

CMIS 1.1 规范说:

在 CMIS 资源上提供的服务链接关系必须指向只有一个工作区元素的 AtomPub 服务文档。

该 AtomPub 服务文档必须只包含一个工作空间元素,该元素必须是代表包含 Atom 条目或 Atom 提要文档的存储库的工作空间。

服务文档必须只包含一个工作区元素。

规范的其余部分总是谈到对“工作区元素”使用单数(从不复数)。

因此,我猜这是 ModeShape 中的一个 CMIS 实现错误。

于 2015-08-27T10:10:48.873 回答