Thanks for the reply.

I have achieved partial success storing audit info in a child node's stream property. As this stream is a serialized object, it is easy to append audit information to it.

One associated problem, is that sometimes i receive a UUID of the parent document object to perform operations on, and sometimes i receive a UUID of a version of that parent document (by design). In either case, i want to add audit information regarding this operation. The problem is the audit object is hanging off the parent document, not the version, and so if passed a UUID of a version, i need to find the owning document and then navigate to the child audit object.

If i do

Node n = session.getNodeByUUID(uuid);

how do i determine if n is a Node or a Version, and more importantly how do i find the Node from the Version if n is a Version.

I see that if i do

if (n.getParent() instanceof Version)

that seems to determine the first, altho that seems odd to me.

how to I go from the Version to the Node?

Thanks again,
dave

----- Original Message ----- From: "Jukka Zitting" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Saturday, February 16, 2008 5:43 AM
Subject: Re: non versioned attributes on versioned nodes?


Hi,

On Feb 15, 2008 8:36 PM, Dave Brosius <[EMAIL PROTECTED]> wrote:
I am trying to add a stream attribute to a versionable node that represents auditing information regarding access to the node. To that end, i would prefer
that the these updates are not done in a checkout()/checkin() scenario as
i don't want these changes to be represented in the version history.
When i try to set this property however, i get an exception

javax.jcr.nodetype.ConstraintViolationException: cannot set the value of a protected property /jcr:system/jcr:versionStorage/9b/7f/44/9b7f44aa-8299-417f-98c7-29080e7968d7/1.0/jcr:frozenNode/AUDIT

Am I doing something wrong, or is it not possible to update properties outside of versioning, or am i barking up the wrong tree, and there is a better way to do this?

The version storage is write-protected, you can't modify checked in
versions. You should rather modify the checked out copy in your
workspace.

If you don't want the AUDIT property copied to the version storage
during checkin(), you can define it in a node type like the following:

   <my=your namespace>

   [my:auditable] mixin
   - my:audit (BINARY) IGNORE

Also, would something like a multivalued string property or even a set
of more complex child nodes be more convenient for storing audit
trails? Note that binary properties are not appendable in JCR.

BR,

Jukka Zitting

Reply via email to