jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lubos and Alena Pochman" <pochm...@gmail.com>
Subject Re: Cannot update previous version of nt:file node
Date Thu, 15 Mar 2007 16:12:57 GMT
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 >---
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message