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 2005/06/17 20:39:54 UTC

svn commit: r191181 - in /incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version: InternalFrozenNodeImpl.java InternalFrozenVHImpl.java VersionManagerImpl.java

Author: tripod
Date: Fri Jun 17 11:39:52 2005
New Revision: 191181

URL: http://svn.apache.org/viewcvs?rev=191181&view=rev
Log:
- some versioning issues

Modified:
    incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java
    incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java
    incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java?rev=191181&r1=191180&r2=191181&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java Fri Jun 17 11:39:52 2005
@@ -21,6 +21,7 @@
 import org.apache.jackrabbit.core.NodeImpl;
 import org.apache.jackrabbit.core.PropertyImpl;
 import org.apache.jackrabbit.core.QName;
+import org.apache.jackrabbit.core.util.uuid.UUID;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
 import org.apache.jackrabbit.core.state.ItemStateException;
 import org.apache.jackrabbit.core.state.NodeState;
@@ -320,10 +321,12 @@
                     if (child.isNodeType(MIX_VERSIONABLE)) {
                         // create frozen versionable child
                         NodeStateEx newChild = node.addNode(child.getQName(), NT_VERSIONEDCHILD, null, false);
-                        newChild.setPropertyValue(JCR_VERSIONHISTORY,
-                                InternalValue.create(child.getVersionHistory().getUUID()));
+                        newChild.setPropertyValue(JCR_CHILDVERSIONHISTORY,
+                                InternalValue.create(new UUID(child.getVersionHistory().getUUID())));
+                        /*
                         newChild.setPropertyValue(JCR_BASEVERSION,
                                 InternalValue.create(child.getBaseVersion().getUUID()));
+                        */
                         break;
                     }
                     // else copy but do not recurse

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java?rev=191181&r1=191180&r2=191181&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/InternalFrozenVHImpl.java Fri Jun 17 11:39:52 2005
@@ -18,6 +18,7 @@
 
 import org.apache.jackrabbit.core.Constants;
 import org.apache.jackrabbit.core.QName;
+import org.apache.jackrabbit.core.util.uuid.UUID;
 
 import javax.jcr.RepositoryException;
 import javax.jcr.version.VersionException;
@@ -63,7 +64,7 @@
      * {@inheritDoc}
      */
     public String getVersionHistoryId() {
-        return (String) node.getPropertyValue(Constants.JCR_VERSIONHISTORY).internalValue();
+        return node.getPropertyValue(Constants.JCR_CHILDVERSIONHISTORY).internalValue().toString();
     }
 
     /**

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java?rev=191181&r1=191180&r2=191181&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java Fri Jun 17 11:39:52 2005
@@ -353,9 +353,17 @@
      * @return
      * @throws RepositoryException
      */
-    public Version checkin(NodeImpl node) throws RepositoryException {
+    public synchronized Version checkin(NodeImpl node) throws RepositoryException {
         SessionImpl session = (SessionImpl) node.getSession();
         InternalVersion version = internalCheckin(node);
+        // need to recalc successor prop
+        InternalVersion[] preds = version.getPredecessors();
+        for (int i=0; i<preds.length; i++) {
+            ItemState state = (ItemState) items.remove(new PropertyId(preds[i].getId(), JCR_SUCCESSORS));
+            if (state != null) {
+                state.discard();
+            }
+        }
         invalidateItem(new NodeId(version.getVersionHistory().getId()), true);
         VersionImpl v = (VersionImpl) session.getNodeByUUID(version.getId());
 
@@ -687,21 +695,19 @@
      * @param id
      */
     private void invalidateItem(ItemId id, boolean recursive) {
-        ItemState state = (ItemState) items.remove(id);
+        ItemState state = (ItemState) items.get(id);
         if (state != null) {
-            if (recursive) {
-                if (state instanceof NodeState) {
-                    NodeState nState = (NodeState) state;
-                    Iterator iter = nState.getPropertyEntries().iterator();
-                    while (iter.hasNext()) {
-                        NodeState.PropertyEntry pe = (NodeState.PropertyEntry) iter.next();
-                        invalidateItem(new PropertyId(nState.getUUID(), pe.getName()), false);
-                    }
-                    iter = nState.getChildNodeEntries().iterator();
-                    while (iter.hasNext()) {
-                        NodeState.ChildNodeEntry pe = (NodeState.ChildNodeEntry) iter.next();
-                        invalidateItem(new NodeId(pe.getUUID()), true);
-                    }
+            if (recursive && state instanceof NodeState) {
+                NodeState nState = (NodeState) state;
+                Iterator iter = nState.getPropertyEntries().iterator();
+                while (iter.hasNext()) {
+                    NodeState.PropertyEntry pe = (NodeState.PropertyEntry) iter.next();
+                    invalidateItem(new PropertyId(nState.getUUID(), pe.getName()), false);
+                }
+                iter = nState.getChildNodeEntries().iterator();
+                while (iter.hasNext()) {
+                    NodeState.ChildNodeEntry pe = (NodeState.ChildNodeEntry) iter.next();
+                    invalidateItem(new NodeId(pe.getUUID()), true);
                 }
             }
             state.notifyStateUpdated();