jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Angela Schreiber <anch...@adobe.com>
Subject Re: Adding nodes with references within a single transaction via webdav
Date Thu, 16 Jun 2011 08:38:52 GMT
hi johannes

from the webdav server side it should be possible to create
referenceable node and a property referring to it in a single
save call.

but you have to know the jcr:uuid in order to set it in the
referenceable property. however, the format of that uuid is
implementation specific. in other words: you would make sure
you create the nodes and the ref-properties with a value
valid for the backend.

so, i guess at the moment it would be the responsibility of your
PHP JCR API implementation to generated a valid uuid since
there is no way to call "generateUUID" neither on SPI nor on the
DAV-server implementation.

regards
angela


On 6/14/11 10:55 AM, Johannes Stark wrote:
> Hi Angela,
>
> we are using the Jackrabbit Standalone Server and access it via WebDav. So it's case
b_.
> Well what we do is to rebuild the JCR API in PHP. We have a PHP session that simulates
the JCR session. All changes made are cached by the PHP session. On $session->save() all
changes are written to Jackrabbit via webdav. It's working great unless for references to
new nodes within a session due to the unavailability of uuids. So our thought for the proceeding
within PHP was the following:
>
> - start a PHP session
> - begin transaction
> - do some work in the PHP cache like adding nodes and properties (unless poperties containing
references)
> - save session (write everything to Jackrabbit, uuids of new referencable nodes should
be available after that)
> - create all references in the PHP cache
> - save session again (write references to Jackrabbit)
> - commit transaction
>
> We would like to do it this way because that would give us the ability to do a rollback
in case of an error during all the writing.
>
> So I would be great if uuids of new referenceable nodes would be available immediately
after they were created via webdav within a transaction.
>
>
> Kind regards,
> Johannes
>
> -------- Original-Nachricht --------
>> Datum: Fri, 10 Jun 2011 10:27:31 +0200
>> Von: Angela Schreiber<anchela@adobe.com>
>> An: users@jackrabbit.apache.org
>> Betreff: Re: Adding nodes with references within a single transaction via webdav
>
>> hi johannes
>>
>> the subject "Adding nodes with references within a single transaction
>> via webdav" somehow leaves me uncertain if i understand your issue.
>>
>> a_ are you taking about a jcr2spi repository?
>> b_ or are you talking about the webdav server implementation?
>>
>>> What we definitely need for our CMF are references between JCR nodes.
>> E.g. you would like to assign pages to menu items or you would like to have a
>> picture on several pages and so on.
>>> But one big problem for us is that you are not able to reference a node
>> until it is persisted. We also had a look at transactions: same issue.
>> Referenceable nodes will get their uuid not before the transaction is
>> committed. So we are not able to persist two or more content items with references
>> to each other within the same transaction. Well this behavior is totally in
>> accordance to the spec.
>>
>> in case of a_:
>>
>> that's correct. node are only referenceable once the jcr:uuid property
>> has been persisted. the reason for this is that the final nature of the
>> uuid is defined by the backend and there is little jcr2spi can do about
>> this (except if there was an explicit call to the spi-implementation to
>> generate the uuid which would as well generated some extra round trips).
>>
>> in case of b_:
>> i think that should be possible as the underlying jcr implementation is
>> a jackrabbit-core which makes a node referenceable immediately.
>>
>> kind regards
>> angela
>

Mime
View raw message