chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thanh Phan <pdthan...@gmail.com>
Subject Re: Question about Adobe Drive Checkins new file mechanism
Date Tue, 29 Mar 2016 15:46:10 GMT
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 <pdthanh06@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 <pdthanh06@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 <fmui@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 <fmui@apache.org
>>> > <mailto:fmui@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.
>>> >     >
>>> >
>>> >
>>>
>>>
>>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message