Tobias,

thanks for the response. My question is, why is the predecessor empty?
Didn't I created new version
with the document.checkin(), document.checkout()? The modification worked,
when I retrieve the modified data
by using the modified document node directly, the new data are there. But
where is the previous version?
When I repeat the process I still get only predecessors.length == 1. So I
must be doing something wrong in trying to create
new version it the code:

       document.checkout();
       Node content = (Node)document.getPrimaryItem();
       content.setProperty("jcr:data", new
ByteArrayInputStream(zipContents));
       content.setProperty("jcr:lastModified", Calendar.getInstance());
       this.session.save();
       document.checkin();

It looks like I am updating the current node without creating a new version?
And why in this case predecessors.length == 1? Shouldn't it be 0?

To be honest, even after re-reading the JSR-170 spec several times on
versioning,
it is hard for me to get my head around it. Is there any tutorial and or
book I can use
to learn more about the versioning topic?

I looked at the browser (nice tool 8-), but I still cannot see how to
dereference baseVersion
or predecessors. But that might be because I am not creating new versions in
the code above.

Thanks, Lubos

On 3/15/07, Tobias Bocanegra <[EMAIL PROTECTED]> wrote:

hi,
please note that in you case the version only has one predecessor, the
rootVersion. and it does contains an empty frozen node. thats probably
where your PathNotFoundException is comming from.

regards, toby

ps: play around with the jcr-browser at http://jcr.day.com
open the content explorer, click on 'view settings' and clear all
filters. then you can browse the jcr:system/jcr:versionStorage. maybe
that clarifies the structure of the version storage.

On 3/15/07, Lubos and Alena Pochman <[EMAIL PROTECTED]> wrote:
> I create nt:file node like:
>
>         Node root = session.getRootNode();
>         document = root.addNode(instanceName, "nt:file");
>         document.addMixin("mix:versionable");  // Make document
referencable
> and versionable
>         Node content = document.addNode("jcr:content", "nt:resource");
>         content.setProperty("jcr:mimeType", "application/zip");
>         content.setProperty("jcr:data", new
> ByteArrayInputStream(zipContents));
>         content.setProperty("jcr:lastModified", Calendar.getInstance());
>         this.session.save();
>
> Then I create a new version like:
>
>         document.checkout();
>         Node content = (Node)document.getPrimaryItem();
>         content.setProperty("jcr:data", new
> ByteArrayInputStream(zipContents));
>         content.setProperty("jcr:lastModified", Calendar.getInstance());
>         this.session.save();
>         document.checkin();
>
> Then I try to retrieve current version data (that works OK):
>
>         node = this.session.getNodeByUUID(id);
>         Property prop = node.getProperty("jcr:content/jcr:data");
>         InputStream is = prop.getStream();
>
> But then I try to retrieve previous version of the node, it fails with
> "PathNotFoundException: jcr:frozenNode/jcr:content/jcr:data" exception
when
> calling getProperty("jcr:frozenNode/jcr:content/jcr:data"):
>
>             Node document = this.session.getNodeByUUID(id);
>             Version base = document.getBaseVersion();
>             Version[] predecessors = base.getPredecessors();
>              for (int i = 0; i < predecessors.length; i++) {
>                        System.out.println(predecessors[i].getCreated() +
":
> "
>                                +
>
predecessors[i].getProperty("jcr:frozenNode/jcr:content/jcr:data").getLength());
>
> How do I access and read properties of previous versions of a node?
>
> Thanks, Lubos
>


--
-----------------------------------------< [EMAIL PROTECTED] >---
Tobias Bocanegra, Day Management AG, Barfuesserplatz 6, CH - 4001 Basel
T +41 61 226 98 98, F +41 61 226 98 97
-----------------------------------------------< http://www.day.com >---

Reply via email to