You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2006/07/20 16:20:27 UTC
svn commit: r423943 -
/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/
Author: tripod
Date: Thu Jul 20 07:20:26 2006
New Revision: 423943
URL: http://svn.apache.org/viewvc?rev=423943&view=rev
Log:
JCR-486: Removed version is not invalidated
Modified:
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFreezeImpl.java
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNode.java
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionImpl.java
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionItemImpl.java
jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java?rev=423943&r1=423942&r2=423943&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/AbstractVersionManager.java Thu Jul 20 07:20:26 2006
@@ -451,4 +451,13 @@
*/
protected void versionDestroyed(InternalVersion version) {
}
+
+ /**
+ * Invoked by the internal version item itself, when it's underlying
+ * persistence state was discarded.
+ *
+ * @param item
+ */
+ protected void itemDiscarded(InternalVersionItem item) {
+ }
}
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFreezeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFreezeImpl.java?rev=423943&r1=423942&r2=423943&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFreezeImpl.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFreezeImpl.java Thu Jul 20 07:20:26 2006
@@ -33,8 +33,8 @@
* @param vMgr
* @param parent
*/
- protected InternalFreezeImpl(AbstractVersionManager vMgr, InternalVersionItem parent) {
- super(vMgr);
+ protected InternalFreezeImpl(AbstractVersionManager vMgr, NodeStateEx node, InternalVersionItem parent) {
+ super(vMgr, node);
this.parent = parent;
}
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNode.java?rev=423943&r1=423942&r2=423943&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNode.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNode.java Thu Jul 20 07:20:26 2006
@@ -72,6 +72,6 @@
* @return <code>true</code> if this node has the history;
* <code>false</code> otherwise.
*/
- boolean hasFrozenHistory(UUID uud);
+ boolean hasFrozenHistory(UUID uuid);
}
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java?rev=423943&r1=423942&r2=423943&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java Thu Jul 20 07:20:26 2006
@@ -61,11 +61,6 @@
private static final int MODE_COPY_RECURSIVE = 3;
/**
- * the underlying persistance node
- */
- private NodeStateEx node;
-
- /**
* the list of frozen properties
*/
private PropertyState[] frozenProperties;
@@ -99,8 +94,7 @@
public InternalFrozenNodeImpl(AbstractVersionManager vMgr, NodeStateEx node,
InternalVersionItem parent)
throws RepositoryException {
- super(vMgr, parent);
- this.node = node;
+ super(vMgr, node, parent);
// init the frozen properties
PropertyState[] props;
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java?rev=423943&r1=423942&r2=423943&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java Thu Jul 20 07:20:26 2006
@@ -30,19 +30,13 @@
implements InternalFrozenVersionHistory {
/**
- * the underlying persistence node
- */
- private NodeStateEx node;
-
- /**
* Creates a new frozen version history.
*
* @param node
*/
public InternalFrozenVHImpl(AbstractVersionManager vMgr, NodeStateEx node,
InternalVersionItem parent) {
- super(vMgr, parent);
- this.node = node;
+ super(vMgr, node, parent);
}
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java?rev=423943&r1=423942&r2=423943&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionHistoryImpl.java Thu Jul 20 07:20:26 2006
@@ -74,11 +74,6 @@
private HashMap tempVersionCache = new HashMap();
/**
- * The nodes state of this version history
- */
- private NodeStateEx node;
-
- /**
* the node that holds the label nodes
*/
private NodeStateEx labelNode;
@@ -98,8 +93,7 @@
*/
public InternalVersionHistoryImpl(AbstractVersionManager vMgr, NodeStateEx node)
throws RepositoryException {
- super(vMgr);
- this.node = node;
+ super(vMgr, node);
init();
}
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionImpl.java?rev=423943&r1=423942&r2=423943&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionImpl.java Thu Jul 20 07:20:26 2006
@@ -37,11 +37,6 @@
implements InternalVersion {
/**
- * the underlying persistance node of this version
- */
- private NodeStateEx node;
-
- /**
* the date when this version was created
*/
private Calendar created;
@@ -74,9 +69,8 @@
* @param node
*/
public InternalVersionImpl(InternalVersionHistoryImpl vh, NodeStateEx node, QName name) {
- super(vh.getVersionManager());
+ super(vh.getVersionManager(), node);
this.versionHistory = vh;
- this.node = node;
this.name = name;
// init internal values
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionItemImpl.java?rev=423943&r1=423942&r2=423943&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionItemImpl.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/InternalVersionItemImpl.java Thu Jul 20 07:20:26 2006
@@ -17,11 +17,18 @@
package org.apache.jackrabbit.core.version;
import org.apache.jackrabbit.core.NodeId;
+import org.apache.jackrabbit.core.state.ItemStateListener;
+import org.apache.jackrabbit.core.state.ItemState;
/**
* Implements a <code>InternalVersionItem</code>.
*/
-abstract class InternalVersionItemImpl implements InternalVersionItem {
+abstract class InternalVersionItemImpl implements InternalVersionItem, ItemStateListener {
+
+ /**
+ * the underlying persistance node
+ */
+ protected final NodeStateEx node;
/**
* the version manager
@@ -33,8 +40,13 @@
*
* @param vMgr
*/
- protected InternalVersionItemImpl(AbstractVersionManager vMgr) {
+ protected InternalVersionItemImpl(AbstractVersionManager vMgr, NodeStateEx node) {
this.vMgr = vMgr;
+ this.node = node;
+ // register as listener. this is not the best solution since this item
+ // could be discarded by the GC and then later be recreated. this will
+ // unnecessarily increase the number of listeners.
+ node.getState().addListener(this);
}
/**
@@ -59,5 +71,41 @@
* @return the parent version item or <code>null</code>.
*/
public abstract InternalVersionItem getParent();
+
+ //-----------------------------------------------------< ItemStateListener >
+ // handle notifications from underlying item states. currently, we only need
+ // to care about removals, since the versioning items do not cache their
+ // values
+
+ /**
+ * {@inheritDoc}
+ */
+ public void stateCreated(ItemState item) {
+ // ignore
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void stateModified(ItemState item) {
+ // ignore
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void stateDestroyed(ItemState item) {
+ vMgr.itemDiscarded(this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void stateDiscarded(ItemState item) {
+ // ignore
+ }
+
+
+
}
Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java?rev=423943&r1=423942&r2=423943&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java Thu Jul 20 07:20:26 2006
@@ -252,6 +252,8 @@
} else {
return null;
}
+ } else {
+ return null;
}
versionItems.put(id, item);
}
@@ -368,6 +370,16 @@
} finally {
releaseReadLock();
}
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected void itemDiscarded(InternalVersionItem item) {
+ // evict removed item from cache
+ aquireReadLock();
+ versionItems.remove(item.getId());
+ releaseReadLock();
}
/**