jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nicolas Belisle (JIRA)" <j...@apache.org>
Subject [jira] Created: (JCR-272) Removal of versions throws javax.jcr.ReferentialIntegrityException
Date Sat, 19 Nov 2005 03:59:45 GMT
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  
    Versions: 1.0    
 Environment: CVS build (2005-11-16) and DerbyPersistenceManager
    Reporter: Nicolas Belisle


>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


Mime
View raw message