Open plutext opened 8 years ago
Very cool that ModeShape has a CMIS connector! Thanks for spotting the problem! Do you think you might be able to provide a patch to fix it?
Looking further into the problem right now... I had never imagined that a GetCmisRepositories request could return repositories with the same id. I wonder how that shows up in CMIS Workbench. Would you mind sending me the AtomPub response to the GetCmisRepositories request, so that I can have a look at how repositories are actually identified? Thanks!
I suspect its not a simple matter of just changing the repo id :-(
at DotCMIS.Binding.AtomPub.AbstractAtomPubService.Read(UrlBuilder url) in DotCMIS\binding\atompub\atompub.cs:line 439
at DotCMIS.Binding.AtomPub.AbstractAtomPubService.GetRepositoriesInternal(String repositoryId) in DotCMIS\binding\atompub\atompub.cs:line 728
at DotCMIS.Binding.AtomPub.RepositoryService.GetRepositoryInfo(String repositoryId, IExtensionsData extension) in DotCMIS\binding\atompub\atompub.cs:line 887
at DotCMIS.Binding.Impl.BindingRepositoryService.GetRepositoryInfo(String repositoryId, IExtensionsData extension) in DotCMIS\binding\binding-impl.cs:line 447
<?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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246:32771/modeshape-cmis/atom/sample/changes" type="application/atom+xml;type=feed"/>
<cmisra:uritemplate>
<cmisra:template>http://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246:32771/modeshape-cmis/atom/artifacts/changes" type="application/atom+xml;type=feed"/>
<cmisra:uritemplate>
<cmisra:template>http://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246:32771/modeshape-cmis/atom/artifacts/changes" type="application/atom+xml;type=feed"/>
<cmisra:uritemplate>
<cmisra:template>http://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246:32771/modeshape-cmis/atom/artifacts/changes" type="application/atom+xml;type=feed"/>
<cmisra:uritemplate>
<cmisra:template>http://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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://52.18.2.246: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:service>
On cursory visual inspection, they look like duplicates
The CMIS 1.1 specification says:
The service link relation when provided on a CMIS resource MUST point to an AtomPub service document with only one workspace element.
That AtomPub service document MUST then only contain one workspace element which MUST be the workspace representing the repository containing the Atom Entry or Atom Feed document.
The service document MUST contain only one workspace element.
The rest of the specification always speaks about using singular (never plural) about "the workspace element".
Therefore, I guess it is a CMIS implementation bug in ModeShape. Maybe the XML node is indeed just duplicated?
Would you mind reporting the issue to ModeShape? Thanks a lot, looking forward to having CmisSync work with ModeShape! :-)
Meanwhile, if they are really duplicate, a temporary workaround might be to drop any repository with the same id? A pull request for this would be welcome :-)
See https://developer.jboss.org/thread/262265
It looks like a 1 line fix to ignore duplicate repo.Id:
if (!result.ContainsKey(repo.Id))
but my ModeSpan is not starting properly at the moment, so I can't test it.
With current master running in Visual Studio and connecting to ModeShape via Atom, I was getting:
CmisUtils [(null)] - An item with the same key has already been added.
The problem is that https://github.com/aegif/CmisSync/blob/master/CmisSync.Lib/Cmis/CmisUtils.cs#L201 doesn't check whether the collection already contains repo.Id
With ModeShape's sample data, there are 4 repos, 3 of which have the same repo.Id:
sample artifacts x 3
A possible patch is to generate a unique key from the repo.Id