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 <tobias.bocanegra@day.com> 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 <pochmans@gmail.com> 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
> >
>
>
> --
> -----------------------------------------< tobias.bocanegra@day.com >---
> 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 >---
>
|