Return-Path: X-Original-To: apmail-chemistry-dev-archive@www.apache.org Delivered-To: apmail-chemistry-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0E5E019F46 for ; Tue, 29 Mar 2016 16:45:20 +0000 (UTC) Received: (qmail 62439 invoked by uid 500); 29 Mar 2016 16:45:19 -0000 Delivered-To: apmail-chemistry-dev-archive@chemistry.apache.org Received: (qmail 62377 invoked by uid 500); 29 Mar 2016 16:45:19 -0000 Mailing-List: contact dev-help@chemistry.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@chemistry.apache.org Delivered-To: mailing list dev@chemistry.apache.org Received: (qmail 62365 invoked by uid 99); 29 Mar 2016 16:45:19 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 29 Mar 2016 16:45:19 +0000 Received: from [192.168.178.42] (ip5f5bcb11.dynamic.kabel-deutschland.de [95.91.203.17]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id E1DB61A0048; Tue, 29 Mar 2016 16:45:18 +0000 (UTC) Subject: Re: Question about Adobe Drive Checkins new file mechanism To: dev@chemistry.apache.org, Thanh Phan References: <56F7F43F.90707@apache.org> <56F819C3.3040409@apache.org> From: =?UTF-8?Q?Florian_M=c3=bcller?= Message-ID: <56FAB11A.1000603@apache.org> Date: Tue, 29 Mar 2016 18:45:14 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit 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. > > > ** > * xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/ > " > xmlns:app="http://www.w3.org/2007/app " > xmlns:atom="http://www.w3.org/2005/Atom ">* > * * > * puppy* > * * > * http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai > * > * 2016-03-29T00:00:00+02:00* > * testu.ai * > * 2016-03-29T00:00:00+02:00* > * 2016-03-29T00:00:00+02:00* > * type="application/atomsvc+xml" />* > * href="http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai > " rel="self" > type="application/atom+xml;type=entry" />* > * href="http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai > " rel="enclosure" > type="application/atom+xml;type=entry" />* > * href="http://localhost:58176/api/v1.0/type?id=cmis%3Adocument > " > rel="describedby" type="application/atom+xml;type=entry" />* > * href="http://localhost:58176/api/v1.0/allowableactions?id=/docs/testu.ai > " > rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions > " > type="application/cmis+xml;type=allowableActions" />* > * href="http://localhost:58176/api/v1.0/parents?id=/docs/testu.ai > " rel="up" > type="application/atom+xml;type=feed" />* > * href="http://localhost:58176/api/v1.0/entry?id=/docs/testu.ai > " rel="edit" > type="application/atom+xml;type=entry" />* > * xmlns:ns3="http://docs.oasis-open.org/ns/cmis/messaging/200908/ > ">* > * * > * localName="BaseTypeId" displayName="Base Type Id" > queryName="cmis:baseTypeId">* > * cmis:document* > * * > * localName="ObjectTypeId" displayName="Object Type Id" > queryName="cmis:objectTypeId">* > * cmis:document* > * * > * localName="Name" displayName="Name" queryName="cmis:name">* > * testu.ai * > * * > * localName="ObjectId" displayName="Object Id" queryName="cmis:objectId">* > * /docs/testu.ai * > * * > * localName="CreatedBy" displayName="Created By" queryName="cmis:createdBy">* > * puppy* > * * > * propertyDefinitionId="cmis:creationDate" localName="CreationDate" > displayName="Creation Date" queryName="cmis:creationDate">* > * 2016-03-29T00:00:00+02:00* > * * > * propertyDefinitionId="cmis:lastModifiedBy" localName="LastModifiedBy" > displayName="Last Modified By" queryName="cmis:lastModifiedBy">* > * puppy* > * * > * propertyDefinitionId="cmis:lastModificationDate" > localName="LastModificationDate" displayName="Last Modification Date" > queryName="cmis:lastModificationDate">* > * 2016-03-29T00:00:00+02:00* > * * > * localName="ChangeToken" displayName="Change Token" > queryName="cmis:changeToken">* > * 8383* > * * > * localName="cmis:isImmutable" displayName="cmis:isImmutable" > queryName="cmis:isImmutable">* > * true* > * * > * propertyDefinitionId="cmis:isMajorVersion" localName="IsMajorVersion" > displayName="Is Major Version" queryName="cmis:isMajorVersion">* > * true* > * * > * propertyDefinitionId="cmis:isPrivateWorkingCopy" > localName="IsPrivateWorkingCopy" displayName="Is Private Working Copy" > queryName="cmis:isPrivateWorkingCopy">* > * false* > * * > * propertyDefinitionId="cmis:isLatestVersion" localName="IsLatestVersion" > displayName="Is Latest Version" queryName="cmis:isLatestVersion">* > * true* > * * > * propertyDefinitionId="cmis:isLatestMajorVersion" > localName="IsLatestMajorVersion" displayName="Is Latest Major Version" > queryName="cmis:isLatestMajorVersion">* > * true* > * * > * localName="VersionLabel" displayName="Version Label" > queryName="cmis:versionLabel">* > * 1.0* > * * > * localName="VersionSeriesId" displayName="Version Series ID" > queryName="cmis:versionSeriesId">* > * testu.ai-1.0..ai* > * * > * propertyDefinitionId="cmis:isVersionSeriesCheckedOut" > localName="IsVersionSeriesCheckedOut" displayName="Is Version Series > Checked Out" queryName="cmis:isVersionSeriesCheckedOut">* > * false* > * * > * propertyDefinitionId="cmis:versionSeriesCheckedOutBy" > localName="VersionSeriesCheckedOutBy" displayName="Version Series Checked > Out By" queryName="cmis:versionSeriesCheckedOutBy">* > * * > * * > * propertyDefinitionId="cmis:versionSeriesCheckedOutId" > localName="VersionSeriesCheckedOutId" displayName="Version Series Checked > Out ID" queryName="cmis:versionSeriesCheckedOutId">* > * * > * * > * propertyDefinitionId="cmis:checkinComment" localName="CheckinComment" > displayName="Checking Comment" queryName="cmis:checkinComment">* > * * > * * > * propertyDefinitionId="cmis:contentStreamLength" > localName="ContentStreamLength" displayName="Content Stream Length" > queryName="cmis:contentStreamLength">* > * 0* > * * > * propertyDefinitionId="cmis:contentStreamMimeType" > localName="ContentStreamMimeType" displayName="Content Stream MIME Type" > queryName="cmis:contentStreamMimeType">* > * application/postscript* > * * > * propertyDefinitionId="cmis:contentStreamFileName" > localName="ContentStreamFileName" displayName="Content Stream File Name" > queryName="cmis:contentStreamFileName">* > * testu.ai * > * * > * localName="ContentStreamId" displayName="Content Stream ID" > queryName="cmis:contentStreamId">* > * /docs/testu.ai * > * * > * localName="ParentId" displayName="Parent Id" queryName="cmis:parentId">* > * /docs* > * * > * localName="Path" displayName="Path" queryName="cmis:path">* > * /docs/testu.ai * > * * > * * > * * > * false* > * false* > * false* > * false* > * true* > * false* > * false* > * false* > * true* > * false* > * true* > * false* > * false* > * false* > * false* > * > false* > * false* > * true* > * > false* > * true* > * false* > * true* > * true* > * > false* > * false* > * false* > * false* > * false* > * false* > * * > * * > * testu.ai * > * src="http://localhost:58176/api/v1.0/content?id=/docs/testu.ai > " > type="application/postscript" />* > * href="http://localhost:58176/api/v1.0/content?id=/docs/testu.ai > " > rel="edit-media" type="application/postscript" />* > ** > > On Mon, Mar 28, 2016 at 10:50 PM, Thanh Phan 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 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 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 >>>>> >>>>> / >>>>> / >>>>> />>>> /xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"/ >>>>> /xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/">/ >>>>> / test.txt/ >>>>> / / >>>>> // >>>>> // >>>>> /cmis:document/ >>>>> // >>>>> // >>>>> / / >>>>> // >>>>> >>>>> 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 >>>> > 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. >>>>> > >>>>> >>>>> >>>> >>>> >>> >> >