Am 22.04.2008 um 20:17 schrieb Julian Reschke:
I think it's correct. The property "testconcurrent/jcr:content/ jcr:data" in session 2 is never put into the transient space *before* session 1 saves. It is fetched for the first time when you modify it. That you

Actually, it *is* fetched before (in the assertEquals).

Yes, but it is fetched for read only.

What I actually meant is fetched *and* modified, but not yet saved. This is the way something goes into the transient space - at least in Jackrabbit's implementation. AFAIK.

Changing the test as suggested doesn't affect the result; still no exception.


Ok, this comes as a surprise. Maybe it's different when you actually get the Node and its Property as object? Like this:

  // modify property in session 1's transient space
  Node content = n1.getNode("jcr:content");
  Property prop = content.getProperty("jcr:data");
  prop.setValue(testcontent + ", as modified by session 1");

  // modify persisted property through session 2
n2.getNode("jcr:content").setProperty("jcr:data", testcontent + ", as modified by session 2");
  n2.save();

  // now try to save session 1... should fail
  n1.save();

But this would be quite awkward.

Another reason might be that you are using a binary property ("jcr:data"). These are handled differently inside Jackrabbit because they tend to be large and are stored in the DataStore for example. (Although this should only apply for larger ones...). Maybe you could try to test with a simple DOUBLE property instead.

Alex

--
Alexander Klimetschek
[EMAIL PROTECTED]

>> Day JCR Cup 08 | Win a MacBook Pro: http://dev.day.com/ <<




Reply via email to