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 2004/12/20 14:03:57 UTC
svn commit: r122849 - in incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version: . persistence
Author: tripod
Date: Mon Dec 20 05:03:55 2004
New Revision: 122849
URL: http://svn.apache.org/viewcvs?view=rev&rev=122849
Log:
- predecessors were not exposed
Modified:
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionHistoryImpl.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionImpl.java
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/NativePVM.java
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java
Url: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java?view=diff&rev=122849&p1=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java&r1=122848&p2=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java&r2=122849
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionItemStateProvider.java Mon Dec 20 05:03:55 2004
@@ -16,7 +16,6 @@
package org.apache.jackrabbit.core.version;
import org.apache.jackrabbit.core.*;
-import org.apache.jackrabbit.core.version.*;
import org.apache.jackrabbit.core.util.uuid.UUID;
import org.apache.jackrabbit.core.nodetype.*;
import org.apache.jackrabbit.core.state.*;
@@ -52,9 +51,9 @@
*/
private final NodeTypeManagerImpl ntMgr;
/**
- * the version histories. key=ItemId, value=ItemState
+ * the cache node states. key=ItemId, value=ItemState
*/
- private Map items = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.SOFT);
+ private Map nodes = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.SOFT);
/**
* node def id for a unstructured node state
*/
@@ -92,11 +91,7 @@
* @see ItemStateProvider#hasItemState(org.apache.jackrabbit.core.ItemId)
*/
public boolean hasItemState(ItemId id) {
-
- // check cache
- if (items.containsKey(id)) {
- return true;
- } else if (id instanceof NodeId) {
+ if (id instanceof NodeId) {
return hasNodeState((NodeId) id);
} else {
return hasPropertyState((PropertyId) id);
@@ -109,18 +104,11 @@
public ItemState getItemState(ItemId id)
throws NoSuchItemStateException, ItemStateException {
- ItemState state = (ItemState) items.get(id);
- if (state==null) {
- if (id instanceof NodeId) {
- state = getNodeState((NodeId) id);
- } else {
- state = getPropertyState((PropertyId) id);
- }
- // add state to cache
- items.put(id, state);
- log.info("item added to cache. size=" + items.size());
+ if (id instanceof NodeId) {
+ return getNodeState((NodeId) id);
+ } else {
+ return getPropertyState((PropertyId) id);
}
- return state;
}
/**
@@ -163,10 +151,13 @@
* @see VirtualItemStateProvider#hasNodeState(NodeId)
*/
public boolean hasNodeState(NodeId id) {
- if (id.equals(root.getId())) {
+ if (nodes.containsKey(id)) {
+ return true;
+ } else if (id.equals(root.getId())) {
return true;
+ } else {
+ return vMgr.hasItem(id.getUUID());
}
- return vMgr.hasItem(id.getUUID());
}
/**
@@ -180,55 +171,60 @@
return root;
}
- try {
- InternalVersionItem vi = vMgr.getItem(id.getUUID());
- if (vi instanceof InternalVersionHistory) {
- VersionHistoryNodeState ns = new VersionHistoryNodeState(this, (InternalVersionHistory) vi, root.getUUID());
- ns.setDefinitionId(NDEF_VERSION_HISTORY);
- return ns;
-
- } else if (vi instanceof InternalVersion) {
- InternalVersion v = (InternalVersion) vi;
- VersionNodeState ns = new VersionNodeState(this, v, vi.getParent().getId());
- ns.setDefinitionId(NDEF_VERSION);
- ns.setPropertyValue(VersionManager.PROPNAME_CREATED, InternalValue.create(v.getCreated()));
- ns.setPropertyValue(VersionManager.PROPNAME_FROZEN_UUID, InternalValue.create(v.getFrozenNode().getFrozenUUID()));
- ns.setPropertyValue(VersionManager.PROPNAME_FROZEN_PRIMARY_TYPE, InternalValue.create(v.getFrozenNode().getFrozenPrimaryType()));
- ns.setPropertyValues(VersionManager.PROPNAME_FROZEN_MIXIN_TYPES, PropertyType.NAME, InternalValue.create(v.getFrozenNode().getFrozenMixinTypes()));
- ns.setPropertyValues(VersionManager.PROPNAME_VERSION_LABELS, PropertyType.STRING, InternalValue.create(v.getLabels()));
- ns.setPropertyValues(VersionManager.PROPNAME_PREDECESSORS, PropertyType.REFERENCE, new InternalValue[0]);
- ns.setPropertyValues(VersionManager.PROPNAME_SUCCESSORS, PropertyType.REFERENCE, new InternalValue[0]);
- return ns;
-
- } else if (vi instanceof InternalFrozenNode) {
- InternalFrozenNode fn = (InternalFrozenNode) vi;
- VirtualNodeState parent = getNodeState(new NodeId(fn.getParent().getId()));
- VirtualNodeState state = createNodeState(
- parent,
- VersionManager.NODENAME_FROZEN,
- id.getUUID(),
- fn.getFrozenPrimaryType());
- mapFrozenNode(state, fn);
- return state;
-
- } else if (vi instanceof InternalFrozenVersionHistory) {
- InternalFrozenVersionHistory fn = (InternalFrozenVersionHistory) vi;
- VirtualNodeState parent = getNodeState(new NodeId(fn.getParent().getId()));
- VirtualNodeState state = createNodeState(
- parent,
- VersionManager.NODENAME_FROZEN,
- id.getUUID(),
- NodeTypeRegistry.NT_FROZEN_VERSIONABLE_CHILD);
- mapFrozenNode(state, fn);
- return state;
+ // check cache
+ VirtualNodeState state = (VirtualNodeState) nodes.get(id);
+ if (state==null) {
+ try {
+ InternalVersionItem vi = vMgr.getItem(id.getUUID());
+ if (vi instanceof InternalVersionHistory) {
+ state = new VersionHistoryNodeState(this, (InternalVersionHistory) vi, root.getUUID());
+ state.setDefinitionId(NDEF_VERSION_HISTORY);
+
+ } else if (vi instanceof InternalVersion) {
+ InternalVersion v = (InternalVersion) vi;
+ state = new VersionNodeState(this, v, vi.getParent().getId());
+ state.setDefinitionId(NDEF_VERSION);
+ state.setPropertyValue(VersionManager.PROPNAME_CREATED, InternalValue.create(v.getCreated()));
+ state.setPropertyValue(VersionManager.PROPNAME_FROZEN_UUID, InternalValue.create(v.getFrozenNode().getFrozenUUID()));
+ state.setPropertyValue(VersionManager.PROPNAME_FROZEN_PRIMARY_TYPE, InternalValue.create(v.getFrozenNode().getFrozenPrimaryType()));
+ state.setPropertyValues(VersionManager.PROPNAME_FROZEN_MIXIN_TYPES, PropertyType.NAME, InternalValue.create(v.getFrozenNode().getFrozenMixinTypes()));
+ state.setPropertyValues(VersionManager.PROPNAME_VERSION_LABELS, PropertyType.STRING, InternalValue.create(v.getLabels()));
+ state.setPropertyValues(VersionManager.PROPNAME_PREDECESSORS, PropertyType.REFERENCE, new InternalValue[0]);
+ state.setPropertyValues(VersionManager.PROPNAME_SUCCESSORS, PropertyType.REFERENCE, new InternalValue[0]);
+
+ } else if (vi instanceof InternalFrozenNode) {
+ InternalFrozenNode fn = (InternalFrozenNode) vi;
+ VirtualNodeState parent = getNodeState(new NodeId(fn.getParent().getId()));
+ state = createNodeState(
+ parent,
+ VersionManager.NODENAME_FROZEN,
+ id.getUUID(),
+ fn.getFrozenPrimaryType());
+ mapFrozenNode(state, fn);
+
+ } else if (vi instanceof InternalFrozenVersionHistory) {
+ InternalFrozenVersionHistory fn = (InternalFrozenVersionHistory) vi;
+ VirtualNodeState parent = getNodeState(new NodeId(fn.getParent().getId()));
+ state = createNodeState(
+ parent,
+ VersionManager.NODENAME_FROZEN,
+ id.getUUID(),
+ NodeTypeRegistry.NT_FROZEN_VERSIONABLE_CHILD);
+ mapFrozenNode(state, fn);
+ } else {
+ // not found, throw
+ throw new NoSuchItemStateException(id.toString());
+ }
+ } catch (RepositoryException e) {
+ log.error("Unable to check for item:" + e.toString());
+ throw new ItemStateException(e);
}
- } catch (RepositoryException e) {
- log.error("Unable to check for item:" + e.toString());
- throw new ItemStateException(e);
- }
- // not found, throw
- throw new NoSuchItemStateException(id.toString());
+ // add state to cache
+ nodes.put(id, state);
+ log.info("item added to cache. size=" + nodes.size());
+ }
+ return state;
}
/**
@@ -278,7 +274,6 @@
prop.setType(type);
prop.setMultiValued(multiValued);
prop.setDefinitionId(new PropDefId(def.unwrap()));
- items.put(prop.getId(), prop);
return prop;
}
@@ -318,7 +313,7 @@
state = new VirtualNodeState(this, parent.getUUID(), uuid, nodeTypeName, new QName[0]);
state.setDefinitionId(new NodeDefId(def.unwrap()));
- items.put(state.getId(), state);
+ nodes.put(state.getId(), state);
return state;
}
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionHistoryImpl.java
Url: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionHistoryImpl.java?view=diff&rev=122849&p1=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionHistoryImpl.java&r1=122848&p2=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionHistoryImpl.java&r2=122849
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionHistoryImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionHistoryImpl.java Mon Dec 20 05:03:55 2004
@@ -105,7 +105,7 @@
labelNode = child;
continue;
}
- InternalVersionImpl v = new InternalVersionImpl(getVersionManager(), this, child);
+ InternalVersionImpl v = new InternalVersionImpl(this, child);
versionCache.put(v.getId(), v);
if (v.isRootVersion()) {
rootVersion = v;
@@ -356,7 +356,7 @@
store();
// update version graph
- InternalVersionImpl version = new InternalVersionImpl(getVersionManager(), this, vNode);
+ InternalVersionImpl version = new InternalVersionImpl(this, vNode);
version.resolvePredecessors();
// update cache
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionImpl.java
Url: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionImpl.java?view=diff&rev=122849&p1=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionImpl.java&r1=122848&p2=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionImpl.java&r2=122849
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/InternalVersionImpl.java Mon Dec 20 05:03:55 2004
@@ -79,12 +79,13 @@
/**
* Creates a new internal version with the given version history and
- * persistance node
+ * persistance node. please note, that versions must be created by the
+ * version history.
*
* @param node
*/
- InternalVersionImpl(PersistentVersionManager vMgr, InternalVersionHistory vh, PersistentNode node) {
- super(vMgr);
+ InternalVersionImpl(InternalVersionHistoryImpl vh, PersistentNode node) {
+ super(vh.getVersionManager());
this.versionHistory = vh;
this.node = node;
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/NativePVM.java
Url: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/NativePVM.java?view=diff&rev=122849&p1=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/NativePVM.java&r1=122848&p2=incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/NativePVM.java&r2=122849
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/NativePVM.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/persistence/NativePVM.java Mon Dec 20 05:03:55 2004
@@ -418,7 +418,7 @@
} else if (pid.type == PersistentId.TYPE_FROZEN_HISTORY) {
item = new InternalFrozenVHImpl(this, pNode, pid.externalId, parent);
} else if (pid.type == PersistentId.TYPE_VERSION) {
- item = new InternalVersionImpl(this, (InternalVersionHistory) parent, pNode);
+ item = ((InternalVersionHistory) parent).getVersion(pid.externalId);
} else if (pid.type == PersistentId.TYPE_HISTORY) {
item = new InternalVersionHistoryImpl(this, pNode);
} else {