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. >>> > > >>> > >>> > >>> >>> >> >