Hi Julien,
I've retested it. There seems to be a bug in the SharePoint CMIS
implementation, which you should report to Microsoft.
Property updates work fine if and only if you don't fetch the property
cmis:changeToken.
The following code works in the CMIS Workbench Console. Note the
filter. I've explicitly set the filter to "cmis:name". If you choose "*"
or a filter that contains "cmis:changeToken" you get an error.
<code>
import org.apache.chemistry.opencmis.commons.*
import org.apache.chemistry.opencmis.commons.data.*
import org.apache.chemistry.opencmis.commons.enums.*
import org.apache.chemistry.opencmis.client.api.*
OperationContext oc = session.createOperationContext();
oc.setFilterString("cmis:name");
Folder folder = session.getObjectByPath("/folder", oc);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("cmis:name", "renamedFolder");
folder.updateProperties(properties);
</code>
The CMIS Workbench uses the "*" filter by default and therefore updates
fail against SharePoint 2013.
- Florian
Hello,
Thank you for your response.
Versioning is not enabled.
I try with the CMIS workbench 0.10.0, not with my own application.
I try a refresh before, but i don't know how to fetch the object
without the cmis:changeToken property.
In the log of workbench (level ALL), I have this :
15:52:59 DEBUG ent.bindings.spi.http.DefaultHttpInvoker: PUT
http://vpc-share-web:10001/_vti_bin/cmis/rest/af532a1e-a7b4-4a77-8759-f2cc57512484?getObject&objectID=2-512&changeToken=2%2F3%2F2014+3%3A24%3A20+PM
15:52:59 TRACE ent.bindings.spi.http.DefaultHttpInvoker: PUT
http://vpc-share-web:10001/_vti_bin/cmis/rest/af532a1e-a7b4-4a77-8759-f2cc57512484?getObject&objectID=2-512&changeToken=2%2F3%2F2014+3%3A24%3A20+PM
> Headers: {null=[HTTP/1.1 409 The operation is attempting to update
an object that is no longer current.], X-SharePointHealthScore=[0],
MicrosoftSharePointTeamServices=[15.0.0.4420], Content-Length=[75],
request-id=[8a7a759c-8f80-d0b6-7171-52d4a9ad5f23],
Server=[Microsoft-IIS/7.5], X-Powered-By=[ASP.NET],
Cache-Control=[private], X-Content-Type-Options=[nosniff],
SPRequestGuid=[8a7a759c-8f80-d0b6-7171-52d4a9ad5f23],
SPIisLatency=[0], X-AspNet-Version=[4.0.30319], Date=[Tue, 18 Feb 2014
14:52:26 GMT], X-FRAME-OPTIONS=[SAMEORIGIN], X-MS-InvokeApp=[1;
RequireReadOnly], Content-Type=[plain/text; charset=utf-8],
SPRequestDuration=[60]}
15:52:59 ERROR hemistry.opencmis.workbench.ClientHelper:
CmisConstraintException: The operation is attempting to update an
object that is no longer current.
org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException:
The operation is attempting to update an object that is no longer
current.
at
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:482)
at
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.put(AbstractAtomPubService.java:653)
at
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.put(AbstractAtomPubService.java:640)
at
org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.updateProperties(ObjectServiceImpl.java:333)
at
org.apache.chemistry.opencmis.client.runtime.AbstractCmisObject.updateProperties(AbstractCmisObject.java:343)
at
org.apache.chemistry.opencmis.workbench.PropertyEditorFrame.doUpdate(PropertyEditorFrame.java:198)
at
org.apache.chemistry.opencmis.workbench.PropertyEditorFrame.access$000(PropertyEditorFrame.java:76)
at
org.apache.chemistry.opencmis.workbench.PropertyEditorFrame$1.actionPerformed(PropertyEditorFrame.java:166)
at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
15:52:59 ERROR hemistry.opencmis.workbench.ClientHelper: Error code:
0
Julien.
-----Message d'origine-----
De : Florian Müller [mailto:[email protected]]
Envoyé : mardi 18 février 2014 12:43
À : Bittard, Julien
Cc : [email protected]
Objet : Fwd: RE: Error on update document with sharepoint 2013
Hi Julien,
What you are actually seeing is a CmisUpdateConflictException. Some
exceptions are not correctly transported via the AtomPub binding.
Is versioning enabled at your document library? If so, try
refreshing the object before you update it. Or fetch the object
without the cmis:changeToken property in the first place.
- Florian
-------- Original Message --------
Subject: RE: Error on update document with sharepoint 2013
Date: Tue, 18 Feb 2014 11:32:08 +0000
From: "Bittard, Julien" <[email protected]>
To: "[email protected]" <[email protected]>
Reply-To: [email protected]
Hello,
Nobody have try sharepoint 2013 ?
Thank you.
Julien.
-----Message d'origine-----
De : Bittard, Julien [mailto:[email protected]] Envoyé : lundi
3 février 2014 18:57 À : [email protected] Objet : Error on
update document with sharepoint 2013
Hello,
I use opencmis client to connect our application to sharepoint 2013.
I have a problem that I reproduce with the workbench , when I want
to update properties or setcontentstream of an existing document on
sharepoint :
org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException:
The operation is attempting to update an object that is no longer
current.
at
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode(AbstractAtomPubService.java:482)
at
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.put(AbstractAtomPubService.java:653)
at
org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.put(AbstractAtomPubService.java:640)
at
org.apache.chemistry.opencmis.client.bindings.spi.atompub.ObjectServiceImpl.updateProperties(ObjectServiceImpl.java:333)
at
org.apache.chemistry.opencmis.client.runtime.AbstractCmisObject.updateProperties(AbstractCmisObject.java:343)
at
org.apache.chemistry.opencmis.client.runtime.AbstractCmisObject.updateProperties(AbstractCmisObject.java:307)
I use openCmis 0.10.0, with java 1.7.
Have You an idea ?
Thank You.
Julien