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}&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?
Если да, то как провести различие между двумя репозиториями с одинаковым идентификатором?

1 ответ

Решение

Спецификация CMIS 1.1 гласит:

Отношение служебной ссылки, когда оно предоставляется в ресурсе CMIS, ДОЛЖНО указывать на служебный документ AtomPub только с одним элементом рабочей области.

Этот сервисный документ AtomPub ДОЛЖЕН тогда содержать только один элемент рабочей области, который ДОЛЖЕН быть рабочей областью, представляющей репозиторий, содержащий документ Atom Entry или Atom Feed.

Служебный документ ДОЛЖЕН содержать только один элемент рабочей области.

В остальной части спецификации всегда говорится об использовании единственного (а не множественного числа) о "элементе рабочего пространства".

Поэтому, я думаю, это ошибка реализации CMIS в ModeShape.

Другие вопросы по тегам