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" +