jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicolas Belisle <Nicolas.Beli...@bibl.ulaval.ca>
Subject Re: Removing a version
Date Fri, 18 Nov 2005 17:34:29 GMT
Hi,

I have already verified that.

The error is for removal of version name : "1.0" and the base version name 
is "1.2".

I've updated the example to make sure it never tries to remove the base 
version :

         Node root1 = session.getRootNode() ;
         Node test1 = root1.addNode("test") ;
         test1.addMixin("mix:versionable");
         test1.setProperty("test", "1");
         session.save();
         test1.checkin();

         test1.checkout();
         test1.setProperty("test", "2");
         session.save();
         test1.checkin();

         test1.checkout();
         test1.setProperty("test", "3");
         session.save();
         test1.checkin();

         String baseVersion = test1.getBaseVersion().getName();
         System.out.println("Base version name: " + baseVersion);

         VersionHistory vh = test1.getVersionHistory();
         for (VersionIterator vi = vh.getAllVersions(); vi.hasNext(); ) {
             Version currenVersion = vi.nextVersion();
             String versionName = currenVersion.getName();
             if (!versionName.equals("jcr:rootVersion") && 
!versionName.equals(baseVersion)) {
                 String propertyValue = 
currenVersion.getNode("jcr:frozenNode").getProperty("test").getString();

                 System.out.println("Removing version : " + versionName + " 
with value: " + propertyValue);
                 vh.removeVersion(versionName);
             }
         }

Thanks,

Nicolas


Le 12:23 2005-11-18, vous avez écrit:
>Hi Nicolas,
>
>  I didn't try your code but I think it throws
>ReferentialIntegrityException because you are trying to remove the
>base version which is referenced by the versioned node.
>
>see http://thread.gmane.org/gmane.comp.apache.jackrabbit.devel/3746
>
>br,
>edgar
>
>
>On 11/18/05, Nicolas Belisle <Nicolas.Belisle@bibl.ulaval.ca> wrote:
> > Hi,
> >
> > I'm trying to remove a version of a Node, but the
> > VersionHistory.removeVersion() method throws :
> > "javax.jcr.ReferentialIntegrityException: Unable to remove version. At
> > least once referenced.".
> >
> > Secton 8.2.2.10 (Removal of Versions) of the specification indicates that
> > the version graph should be automatically repaired upon removal. Then,
> > VersionHistory.removeVersion() should take care of references. In fact, a
> > user cannot alter the references (jcr:predecessors and jcr:successors),
> > since they are protected properties.
> >
> > Here's the example :
> >
> >          Node root1 = session.getRootNode() ;
> >          Node test1 = root1.addNode("test") ;
> >          test1.addMixin("mix:versionable");
> >          test1.setProperty("test", "1");
> >          session.save();
> >          test1.checkin();
> >
> >          test1.checkout();
> >          test1.setProperty("test", "2");
> >          session.save();
> >          test1.checkin();
> >
> >          test1.checkout();
> >          test1.setProperty("test", "3");
> >          session.save();
> >          test1.checkin();
> >
> >          VersionHistory vh = test1.getVersionHistory();
> >          for (VersionIterator vi = vh.getAllVersions(); vi.hasNext(); ) {
> >              Version currenVersion = vi.nextVersion();
> >              String versionName = currenVersion.getName();
> >              if (!versionName.equals("jcr:rootVersion")) {
> >                  String propertyValue =
> > currenVersion.getNode("jcr:frozenNode").getProperty("test").getString();
> >                  System.out.println("Removing version : " + versionName + "
> > with value: " + propertyValue);
> >                  vh.removeVersion(versionName);
> >              }
> >          }
> >
> > Something I do wrong ?
> >
> >
> > Many thanks,
> >
> >
> > Nicolas
> >
> >


Mime
View raw message