Hi, There is no (pessimistic) locking in CMIS. So, it's difficult to interpret this error message.
Here is a guess. The property cmis:isVersionSeriesCheckedOut is false. From a client perspective the document has not been checked out. That is, a check-in doesn't make sense. Maybe Adobe Drive is complaining about that... - Florian Am 29.03.2016 um 17:46 schrieb Thanh Phan: > Hi again, > > I have to bother you guys again. I' now stuck against Adobe Drive 5. There > are 2 ways to create new files in AD5 with the first being the one i > mentioned earlier, the second is when we you one of their software suites > (photoshop etc) and click on the save as or checkin button with the target > being the AD5. > > With what I could observe, AD5 first send a CREATE request to the children > collection (empty file, versionstate: checkedout), and then proceed to GET > the object. However, it now complains that: 2016/03/29 17:36:58,722 > [JobHandler-3] ERROR CheckIn - Caught exception > > com.adobe.drive.data.model.DriveException: testu.ai is not locked! > at > com.adobe.drive.internal.biz.versioncue.service.call.CheckIn.checkConflict(CheckIn.java:134) > > > Here is my Response to the request by path below. Can anyone confirm that > it is possible that my atom entry is not correct, thus preventing the AD5 > to work properly? if I understandf correctly, locking in CMIS means that we > provides a change token (and possibly not allowing to perform some > update/delete operations, right?) > > Thanks in advance. > > > *<?xml version="1.0" encoding="utf-8" standalone="yes"?>* > *<atom:entry xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/ > <http://docs.oasis-open.org/ns/cmis/core/200908/>" > xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/ > <http://docs.oasis-open.org/ns/cmis/restatom/200908/>" > xmlns:app="http://www.w3.org/2007/app <http://www.w3.org/2007/app>" > xmlns:atom="http://www.w3.org/2005/Atom <http://www.w3.org/2005/Atom>">* > * <atom:author>* > * <atom:name>puppy</atom:name>* > * </atom:author>* > * <atom:id>http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai > <http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai></atom:id>* > * <atom:published>2016-03-29T00:00:00+02:00</atom:published>* > * <atom:title>testu.ai <http://testu.ai></atom:title>* > * <atom:edited>2016-03-29T00:00:00+02:00</atom:edited>* > * <atom:updated>2016-03-29T00:00:00+02:00</atom:updated>* > * <atom:link href="http://localhost:58176/api/v1.0/ > <http://localhost:58176/api/v1.0/>" rel="service" > type="application/atomsvc+xml" />* > * <atom:link > href="http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai > <http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai>" rel="self" > type="application/atom+xml;type=entry" />* > * <atom:link > href="http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai > <http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai>" rel="enclosure" > type="application/atom+xml;type=entry" />* > * <atom:link > href="http://localhost:58176/api/v1.0/type?id=cmis%3Adocument > <http://localhost:58176/api/v1.0/type?id=cmis%3Adocument>" > rel="describedby" type="application/atom+xml;type=entry" />* > * <atom:link > href="http://localhost:58176/api/v1.0/allowableactions?id=/docs/testu.ai > <http://localhost:58176/api/v1.0/allowableactions?id=/docs/testu.ai>" > rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions > <http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions>" > type="application/cmis+xml;type=allowableActions" />* > * <atom:link > href="http://localhost:58176/api/v1.0/parents?id=/docs/testu.ai > <http://localhost:58176/api/v1.0/parents?id=/docs/testu.ai>" rel="up" > type="application/atom+xml;type=feed" />* > * <atom:link > href="http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai > <http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai>" rel="edit" > type="application/atom+xml;type=entry" />* > * <cmisra:object > xmlns:ns3="http://docs.oasis-open.org/ns/cmis/messaging/200908/ > <http://docs.oasis-open.org/ns/cmis/messaging/200908/>">* > * <cmis:properties>* > * <cmis:propertyId propertyDefinitionId="cmis:baseTypeId" > localName="BaseTypeId" displayName="Base Type Id" > queryName="cmis:baseTypeId">* > * <cmis:value>cmis:document</cmis:value>* > * </cmis:propertyId>* > * <cmis:propertyId propertyDefinitionId="cmis:objectTypeId" > localName="ObjectTypeId" displayName="Object Type Id" > queryName="cmis:objectTypeId">* > * <cmis:value>cmis:document</cmis:value>* > * </cmis:propertyId>* > * <cmis:propertyString propertyDefinitionId="cmis:name" > localName="Name" displayName="Name" queryName="cmis:name">* > * <cmis:value>testu.ai <http://testu.ai></cmis:value>* > * </cmis:propertyString>* > * <cmis:propertyId propertyDefinitionId="cmis:objectId" > localName="ObjectId" displayName="Object Id" queryName="cmis:objectId">* > * <cmis:value>/docs/testu.ai <http://testu.ai></cmis:value>* > * </cmis:propertyId>* > * <cmis:propertyString propertyDefinitionId="cmis:createdBy" > localName="CreatedBy" displayName="Created By" queryName="cmis:createdBy">* > * <cmis:value>puppy</cmis:value>* > * </cmis:propertyString>* > * <cmis:propertyDateTime > propertyDefinitionId="cmis:creationDate" localName="CreationDate" > displayName="Creation Date" queryName="cmis:creationDate">* > * <cmis:value>2016-03-29T00:00:00+02:00</cmis:value>* > * </cmis:propertyDateTime>* > * <cmis:propertyString > propertyDefinitionId="cmis:lastModifiedBy" localName="LastModifiedBy" > displayName="Last Modified By" queryName="cmis:lastModifiedBy">* > * <cmis:value>puppy</cmis:value>* > * </cmis:propertyString>* > * <cmis:propertyDateTime > propertyDefinitionId="cmis:lastModificationDate" > localName="LastModificationDate" displayName="Last Modification Date" > queryName="cmis:lastModificationDate">* > * <cmis:value>2016-03-29T00:00:00+02:00</cmis:value>* > * </cmis:propertyDateTime>* > * <cmis:propertyString propertyDefinitionId="cmis:changeToken" > localName="ChangeToken" displayName="Change Token" > queryName="cmis:changeToken">* > * <cmis:value>8383</cmis:value>* > * </cmis:propertyString>* > * <cmis:propertyBoolean propertyDefinitionId="cmis:isImmutable" > localName="cmis:isImmutable" displayName="cmis:isImmutable" > queryName="cmis:isImmutable">* > * <cmis:value>true</cmis:value>* > * </cmis:propertyBoolean>* > * <cmis:propertyBoolean > propertyDefinitionId="cmis:isMajorVersion" localName="IsMajorVersion" > displayName="Is Major Version" queryName="cmis:isMajorVersion">* > * <cmis:value>true</cmis:value>* > * </cmis:propertyBoolean>* > * <cmis:propertyBoolean > propertyDefinitionId="cmis:isPrivateWorkingCopy" > localName="IsPrivateWorkingCopy" displayName="Is Private Working Copy" > queryName="cmis:isPrivateWorkingCopy">* > * <cmis:value>false</cmis:value>* > * </cmis:propertyBoolean>* > * <cmis:propertyBoolean > propertyDefinitionId="cmis:isLatestVersion" localName="IsLatestVersion" > displayName="Is Latest Version" queryName="cmis:isLatestVersion">* > * <cmis:value>true</cmis:value>* > * </cmis:propertyBoolean>* > * <cmis:propertyBoolean > propertyDefinitionId="cmis:isLatestMajorVersion" > localName="IsLatestMajorVersion" displayName="Is Latest Major Version" > queryName="cmis:isLatestMajorVersion">* > * <cmis:value>true</cmis:value>* > * </cmis:propertyBoolean>* > * <cmis:propertyString propertyDefinitionId="cmis:versionLabel" > localName="VersionLabel" displayName="Version Label" > queryName="cmis:versionLabel">* > * <cmis:value>1.0</cmis:value>* > * </cmis:propertyString>* > * <cmis:propertyId propertyDefinitionId="cmis:versionSeriesId" > localName="VersionSeriesId" displayName="Version Series ID" > queryName="cmis:versionSeriesId">* > * <cmis:value>testu.ai-1.0..ai</cmis:value>* > * </cmis:propertyId>* > * <cmis:propertyBoolean > propertyDefinitionId="cmis:isVersionSeriesCheckedOut" > localName="IsVersionSeriesCheckedOut" displayName="Is Version Series > Checked Out" queryName="cmis:isVersionSeriesCheckedOut">* > * <cmis:value>false</cmis:value>* > * </cmis:propertyBoolean>* > * <cmis:propertyString > propertyDefinitionId="cmis:versionSeriesCheckedOutBy" > localName="VersionSeriesCheckedOutBy" displayName="Version Series Checked > Out By" queryName="cmis:versionSeriesCheckedOutBy">* > * <cmis:value />* > * </cmis:propertyString>* > * <cmis:propertyId > propertyDefinitionId="cmis:versionSeriesCheckedOutId" > localName="VersionSeriesCheckedOutId" displayName="Version Series Checked > Out ID" queryName="cmis:versionSeriesCheckedOutId">* > * <cmis:value />* > * </cmis:propertyId>* > * <cmis:propertyString > propertyDefinitionId="cmis:checkinComment" localName="CheckinComment" > displayName="Checking Comment" queryName="cmis:checkinComment">* > * <cmis:value />* > * </cmis:propertyString>* > * <cmis:propertyInteger > propertyDefinitionId="cmis:contentStreamLength" > localName="ContentStreamLength" displayName="Content Stream Length" > queryName="cmis:contentStreamLength">* > * <cmis:value>0</cmis:value>* > * </cmis:propertyInteger>* > * <cmis:propertyString > propertyDefinitionId="cmis:contentStreamMimeType" > localName="ContentStreamMimeType" displayName="Content Stream MIME Type" > queryName="cmis:contentStreamMimeType">* > * <cmis:value>application/postscript</cmis:value>* > * </cmis:propertyString>* > * <cmis:propertyString > propertyDefinitionId="cmis:contentStreamFileName" > localName="ContentStreamFileName" displayName="Content Stream File Name" > queryName="cmis:contentStreamFileName">* > * <cmis:value>testu.ai <http://testu.ai></cmis:value>* > * </cmis:propertyString>* > * <cmis:propertyId propertyDefinitionId="cmis:contentStreamId" > localName="ContentStreamId" displayName="Content Stream ID" > queryName="cmis:contentStreamId">* > * <cmis:value>/docs/testu.ai <http://testu.ai></cmis:value>* > * </cmis:propertyId>* > * <cmis:propertyId propertyDefinitionId="cmis:parentId" > localName="ParentId" displayName="Parent Id" queryName="cmis:parentId">* > * <cmis:value>/docs</cmis:value>* > * </cmis:propertyId>* > * <cmis:propertyString propertyDefinitionId="cmis:path" > localName="Path" displayName="Path" queryName="cmis:path">* > * <cmis:value>/docs/testu.ai <http://testu.ai></cmis:value>* > * </cmis:propertyString>* > * </cmis:properties>* > * <cmis:allowableActions>* > * <cmis:canGetDescendants>false</cmis:canGetDescendants>* > * <cmis:canGetFolderTree>false</cmis:canGetFolderTree>* > * <cmis:canGetChildren>false</cmis:canGetChildren>* > * <cmis:canGetFolderParent>false</cmis:canGetFolderParent>* > * <cmis:canGetObjectParents>true</cmis:canGetObjectParents>* > * <cmis:canCreateDocument>false</cmis:canCreateDocument>* > * <cmis:canCreateFolder>false</cmis:canCreateFolder>* > * <cmis:canCreateRelationship>false</cmis:canCreateRelationship>* > * <cmis:canGetProperties>true</cmis:canGetProperties>* > * <cmis:canGetRenditions>false</cmis:canGetRenditions>* > * <cmis:canGetContentStream>true</cmis:canGetContentStream>* > * <cmis:canUpdateProperties>false</cmis:canUpdateProperties>* > * <cmis:canMoveObject>false</cmis:canMoveObject>* > * <cmis:canDeleteObject>false</cmis:canDeleteObject>* > * <cmis:canSetContentStream>false</cmis:canSetContentStream>* > * > <cmis:canDeleteContentStream>false</cmis:canDeleteContentStream>* > * <cmis:canDeleteTree>false</cmis:canDeleteTree>* > * <cmis:canAddObjectToFolder>true</cmis:canAddObjectToFolder>* > * > <cmis:canRemoveObjectFromFolder>false</cmis:canRemoveObjectFromFolder>* > * <cmis:canCheckOut>true</cmis:canCheckOut>* > * <cmis:canCancelCheckOut>false</cmis:canCancelCheckOut>* > * <cmis:canCheckIn>true</cmis:canCheckIn>* > * <cmis:canGetAllVersions>true</cmis:canGetAllVersions>* > * > <cmis:canGetObjectRelationships>false</cmis:canGetObjectRelationships>* > * <cmis:canApplyPolicy>false</cmis:canApplyPolicy>* > * <cmis:canRemovePolicy>false</cmis:canRemovePolicy>* > * <cmis:canGetAppliedPolicies>false</cmis:canGetAppliedPolicies>* > * <cmis:canGetACL>false</cmis:canGetACL>* > * <cmis:canApplyACL>false</cmis:canApplyACL>* > * </cmis:allowableActions>* > * </cmisra:object>* > * <cmisra:pathSegment>testu.ai <http://testu.ai></cmisra:pathSegment>* > * <atom:content > src="http://localhost:58176/api/v1.0/content?id=/docs/testu.ai > <http://localhost:58176/api/v1.0/content?id=/docs/testu.ai>" > type="application/postscript" />* > * <atom:link > href="http://localhost:58176/api/v1.0/content?id=/docs/testu.ai > <http://localhost:58176/api/v1.0/content?id=/docs/testu.ai>" > rel="edit-media" type="application/postscript" />* > *</atom:entry>* > > On Mon, Mar 28, 2016 at 10:50 PM, Thanh Phan <pdthan...@gmail.com> wrote: > >> Hi again, >> >> Thanks to your pointers, Florian, I figured it out how AD5 works (at least >> for "checkin the new content"). >> >> It's like you suspected, Adobe will first perform a Post to create a new >> empty document like I mentioned earlier and then subsequently a PUT to >> modify the content, using the "content-edit" URI. The content of the file >> is the body of this PUT request. >> >> Earlier I was not able to catch the PUT request there's some issue with >> Adobe Drive 5 cache. >> >> Hope some souls out there who gotta deal with AD5 can find this >> information useful. >> >> >> >> On Mon, Mar 28, 2016 at 8:40 PM, Thanh Phan <pdthan...@gmail.com> wrote: >> >>> Youre absolutely right about it's not a checkin request. The first time a >>> document is added for versioning in Adobe Drive they perform a "Check In", >>> which I believe, is similar to a Document Creation request. >>> >>> I think they expect some thing in order to proceed but I have no clue >>> what it is. >>> >>> Since the operation fails, there are no subsequent PUT requests. >>> >>> On Sun, Mar 27, 2016 at 7:34 PM, Florian Müller <f...@apache.org> wrote: >>> >>>> Hi, >>>> >>>> This is not a checkin request. This is an invalid create document >>>> request. (The property cmis:name is missing). >>>> Could you please check if there is a PUT request against the PWC >>>> resource? That would be the checkin call. >>>> >>>> - Florian >>>> >>>> >>>>> Hello Florian, I'm extremely appreciate that you take time to reply. >>>>> >>>>> I just tested again the InMemory Latest Build. What I tried is to >>>>> checkin a new file called "test.txt". >>>>> >>>>> I also tried to capture the POST request using rawcap, basically they >>>>> send out an /POST >>>>> /inmemory/atom/A1/children?id=125&versioningState=checkedout / >>>>> / >>>>> / >>>>> with the body being >>>>> >>>>> / <?xml version="1.0" encoding="utf-8"?> >>>>> / >>>>> /<entry xmlns="http://www.w3.org/2005/Atom"/ >>>>> /xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"/ >>>>> /xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/">/ >>>>> / <title>test.txt</title>/ >>>>> / <cmisra:object>/ >>>>> /<cmis:properties>/ >>>>> /<cmis:propertyId propertyDefinitionId="cmis:objectTypeId">/ >>>>> /<cmis:value>cmis:document</cmis:value>/ >>>>> /</cmis:propertyId>/ >>>>> /</cmis:properties>/ >>>>> / </cmisra:object>/ >>>>> /</entry>/ >>>>> >>>>> Again we got an error with the relevant Log in Adobe Drive 5: >>>>> >>>>> com.adobe.drive.data.model.DriveException: Error checking in: Conflict >>>>> at >>>> com.adobe.drive.internal.data.manager.DataManager.executeCheckIn(DataManager.java:5680) >>>>> at >>>> com.adobe.drive.internal.data.manager.DataManager.checkIn(DataManager.java:5305) >>>>> at >>>> com.adobe.drive.internal.data.manager.DataManager.checkLocalAssetPostClose(DataManager.java:10324) >>>>> at >>>> com.adobe.drive.internal.data.manager.DataManager.close(DataManager.java:3423) >>>>> at >>>> com.adobe.drive.internal.biz.filesystem.FileSystemService$10.execute(FileSystemService.java:839) >>>>> at >>>> com.adobe.drive.internal.biz.filesystem.FileSystemService$10.execute(FileSystemService.java:1) >>>>> at >>>> com.adobe.drive.internal.biz.filesystem.FileSystemService$FSCallable.run(FileSystemService.java:1793) >>>>> at >>>> com.adobe.drive.data.internal.persistence.PersistenceRunner$2.runWithTransaction(PersistenceRunner.java:186) >>>>> at >>>> com.adobe.drive.data.internal.persistence.PersistenceModificationCallable.run(PersistenceModificationCallable.java:71) >>>>> at >>>> com.adobe.drive.data.internal.persistence.PersistenceRunner.run(PersistenceRunner.java:119) >>>>> at >>>> com.adobe.drive.data.internal.persistence.PersistenceRunner.runWithTransaction(PersistenceRunner.java:181) >>>>> at >>>> com.adobe.drive.internal.biz.filesystem.FileSystemService.runWithTransaction(FileSystemService.java:1748) >>>>> at >>>> com.adobe.drive.internal.biz.filesystem.FileSystemService.runWithTransaction(FileSystemService.java:1727) >>>>> at >>>> com.adobe.drive.internal.biz.filesystem.FileSystemService.close(FileSystemService.java:821) >>>>> at >>>> com.adobe.drive.ifs.job.CloseHandler$1.call(CloseHandler.java:67) >>>>> at >>>> com.adobe.drive.ifs.job.CloseHandler$1.call(CloseHandler.java:1) >>>>> at com.adobe.drive.model.context.Context.run(Context.java:88) >>>>> at >>>> com.adobe.drive.ifs.internal.IFSConnection.dispatch(IFSConnection.java:187) >>>>> at >>>> com.adobe.drive.ifs.internal.IFSConnection.run(IFSConnection.java:142) >>>>> >>>>> It;'s frustrating with AD5 really since I have no Idea what they are >>>>> expecting after that call. >>>>> >>>>> On Sun, Mar 27, 2016 at 4:54 PM, Florian Müller <f...@apache.org >>>>> <mailto:f...@apache.org>> wrote: >>>>> >>>>> Hi, >>>>> >>>>> Do you think you can capture this POST request? >>>>> I don't think this is an OpenCMIS server framework problem, but we >>>>> should check. At least the InMemory server should be more robust. >>>>> >>>>> - Florian >>>>> >>>>> >>>>> > Hello everyone, >>>>> > >>>>> > I know it's not a Adobe Drive 5 (AD5) place but i'm pretty >>>>> desperate now >>>>> > trying to uderstand the underlying actions. I would be very >>>>> grateful if >>>>> > someone knows how the checkin new files works for AD5 (latest >>>>> build)? >>>>> > >>>>> > It does not seem to work with the latest build from Alfresco and >>>> the >>>>> > InMemory OpenCMIS server. The one from InMemory got an >>>>> NullPointerReference >>>>> > error while Alfresco produces an empty file and an other emoty >>>>> PWC, and AD5 >>>>> > has an Not Allowed Action Error. >>>>> > >>>>> > I seems to me that it sends a POST request to the parent >>>>> folder's children >>>>> > service with a checked out requests but without any content. >>>>> Why is that? >>>>> > It seems also expect a Private Working Copy >>>>> > >>>>> > Thanks very much in advance. >>>>> > >>>>> >>>>> >>>> >>>> >>> >> >