You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Jukka Zitting (JIRA)" <ji...@apache.org> on 2006/03/07 08:33:49 UTC

[jira] Updated: (JCR-272) Removal of versions throws javax.jcr.ReferentialIntegrityException

     [ http://issues.apache.org/jira/browse/JCR-272?page=all ]

Jukka Zitting updated JCR-272:
------------------------------

    Fix Version: 1.1
                     (was: 1.0)

> Removal of versions throws javax.jcr.ReferentialIntegrityException
> ------------------------------------------------------------------
>
>          Key: JCR-272
>          URL: http://issues.apache.org/jira/browse/JCR-272
>      Project: Jackrabbit
>         Type: Bug
>   Components: versioning
>  Environment: CVS build (2005-11-16) and DerbyPersistenceManager
>     Reporter: Nicolas Belisle
>     Assignee: Tobias Bocanegra
>      Fix For: 1.1

>
> From the following thread : http://www.mail-archive.com/jackrabbit-dev%40incubator.apache.org/msg03483.html
> When trying to remove a version of a Node  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 (*updated) :
> 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);
>     }
> }
> Regards, 
> Nicolas

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira