You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2008/04/22 02:47:58 UTC

svn commit: r650335 - in /jackrabbit/branches/1.4/jackrabbit-core/src: main/java/org/apache/jackrabbit/core/version/ test/java/org/apache/jackrabbit/core/version/

Author: jukka
Date: Mon Apr 21 17:47:56 2008
New Revision: 650335

URL: http://svn.apache.org/viewvc?rev=650335&view=rev
Log:
1.4: Merged revisions 637891 and 638430 (JCR-1481)

Added:
    jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/CheckinRemoveVersionTest.java
      - copied, changed from r637891, jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/CheckinRemoveVersionTest.java
Modified:
    jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java
    jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java
    jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java
    jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java

Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java?rev=650335&r1=650334&r2=650335&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java Mon Apr 21 17:47:56 2008
@@ -32,8 +32,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.List;
-
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.Value;
@@ -287,16 +285,20 @@
     protected abstract boolean hasItem(NodeId id);
 
     /**
-     * Returns the item references that reference the given version item.
-     * Subclass responsiblity.
+     * Checks if there are item references (from outside the version storage)
+     * that reference the given version item. Subclass responsiblity.
      * <p/>
      * Please note, that the overridden method must aquire the readlock before
      * reading the state manager.
      *
      * @param item version item
-     * @return list of item references, may be empty.
+     * @return <code>true</code> if there are item references from outside the
+     *         version storage; <code>false</code> otherwise.
+     * @throws RepositoryException if an error occurs while reading from the
+     *                             repository.
      */
-    protected abstract List getItemReferences(InternalVersionItem item);
+    protected abstract boolean hasItemReferences(InternalVersionItem item)
+            throws RepositoryException;
 
     /**
      * Creates a new Version History.

Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java?rev=650335&r1=650334&r2=650335&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java Mon Apr 21 17:47:56 2008
@@ -37,7 +37,6 @@
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Set;
 
 /**
@@ -360,8 +359,7 @@
             throw new VersionException(msg);
         }
         // check if any references (from outside the version storage) exist on this version
-        List refs = vMgr.getItemReferences(v);
-        if (!refs.isEmpty()) {
+        if (vMgr.hasItemReferences(v)) {
             throw new ReferentialIntegrityException("Unable to remove version. At least once referenced.");
         }
 

Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java?rev=650335&r1=650334&r2=650335&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java Mon Apr 21 17:47:56 2008
@@ -41,6 +41,7 @@
 import org.apache.jackrabbit.core.state.PropertyState;
 import org.apache.jackrabbit.core.state.SharedItemStateManager;
 import org.apache.jackrabbit.core.state.ISMLocking;
+import org.apache.jackrabbit.core.state.NoSuchItemStateException;
 import org.apache.jackrabbit.core.value.InternalValue;
 import org.apache.jackrabbit.core.virtual.VirtualItemStateProvider;
 import org.apache.jackrabbit.spi.Path;
@@ -52,7 +53,6 @@
 import org.slf4j.LoggerFactory;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -398,13 +398,16 @@
     /**
      * {@inheritDoc}
      */
-    protected List getItemReferences(InternalVersionItem item) {
+    protected boolean hasItemReferences(InternalVersionItem item)
+            throws RepositoryException {
         try {
             NodeReferences refs = stateMgr.getNodeReferences(
                     new NodeReferencesId(item.getId()));
-            return refs.getReferences();
+            return refs.hasReferences();
+        } catch (NoSuchItemStateException e) {
+            return false;
         } catch (ItemStateException e) {
-            return Collections.EMPTY_LIST;
+            throw new RepositoryException(e);
         }
     }
 

Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java?rev=650335&r1=650334&r2=650335&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/XAVersionManager.java Mon Apr 21 17:47:56 2008
@@ -48,7 +48,6 @@
 import javax.jcr.version.VersionException;
 import javax.jcr.version.VersionHistory;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -343,8 +342,9 @@
     /**
      * {@inheritDoc}
      */
-    protected List getItemReferences(InternalVersionItem item) {
-        return vMgr.getItemReferences(item);
+    protected boolean hasItemReferences(InternalVersionItem item)
+            throws RepositoryException {
+        return session.getNodeById(item.getId()).getReferences().hasNext();
     }
 
     /**

Copied: jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/CheckinRemoveVersionTest.java (from r637891, jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/CheckinRemoveVersionTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/CheckinRemoveVersionTest.java?p2=jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/CheckinRemoveVersionTest.java&p1=jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/CheckinRemoveVersionTest.java&r1=637891&r2=650335&rev=650335&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/CheckinRemoveVersionTest.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/CheckinRemoveVersionTest.java Mon Apr 21 17:47:56 2008
@@ -36,6 +36,7 @@
         tx.begin();
         try {
             Version v10 = n.checkin();
+            assertTrue("Version.getReferences() must return base version", v10.getReferences().hasNext());
             try {
                 n.getVersionHistory().removeVersion(v10.getName());
                 fail("VersionHistory.removeVersion() must throw ReferentialIntegrityException when" +