You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2015/10/26 21:41:35 UTC

svn commit: r1710690 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java

Author: mreutegg
Date: Mon Oct 26 20:41:34 2015
New Revision: 1710690

URL: http://svn.apache.org/viewvc?rev=1710690&view=rev
Log:
OAK-3551: Failing version restore tests

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java?rev=1710690&r1=1710689&r2=1710690&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java Mon Oct 26 20:41:34 2015
@@ -202,7 +202,7 @@ class VersionableState {
      */
     NodeBuilder create() throws CommitFailedException {
         try {
-            createFrozen(versionable, uuidFromNode(versionable), frozenNode);
+            createFrozen(versionable, uuidFromNode(versionable), frozenNode, VERSION);
             return frozenNode;
         } catch (RepositoryException e) {
             throw new CommitFailedException(CommitFailedException.VERSION,
@@ -453,26 +453,16 @@ class VersionableState {
         }
     }
 
-    private void createFrozen(NodeBuilder src, String srcId, NodeBuilder dest)
+    private void createFrozen(NodeBuilder src, String srcId, NodeBuilder dest, int opva)
             throws CommitFailedException, RepositoryException {
         initFrozen(dest, src, srcId);
-        copyProperties(src, dest, new OPVProvider() {
-            @Override
-            public int getAction(NodeBuilder src,
-                                 NodeBuilder dest,
-                                 PropertyState prop)
-                    throws RepositoryException {
-                String propName = prop.getName();
-                if (BASIC_FROZEN_PROPERTIES.contains(propName)) {
-                    // OAK-940: do not overwrite basic frozen properties
-                    return IGNORE;
-                } else if (isHiddenProperty(propName)) {
-                    // don't copy hidden properties except for :childOrder
-                    return IGNORE;
-                }
-                return getOPV(src, prop);
-            }
-        }, true);
+        OPVProvider opvProvider;
+        if (opva == OnParentVersionAction.COPY) {
+            opvProvider = OPVForceCopy.INSTANCE;
+        } else {
+            opvProvider = new OPVVersion();
+        }
+        copyProperties(src, dest, opvProvider, true);
 
         // add the frozen children and histories
         for (String name : src.getChildNodeNames()) {
@@ -494,10 +484,10 @@ class VersionableState {
                     versionedChild(child, dest.child(name));
                 } else {
                     // else copy
-                    createFrozen(child, childId, dest.child(name));
+                    createFrozen(child, childId, dest.child(name), COPY);
                 }
             } else if (opv == COPY) {
-                createFrozen(child, childId, dest.child(name));
+                createFrozen(child, childId, dest.child(name), COPY);
             }
         }
     }
@@ -609,4 +599,23 @@ class VersionableState {
             return COPY;
         }
     }
+
+    private final class OPVVersion implements OPVProvider {
+
+        @Override
+        public int getAction(NodeBuilder src,
+                             NodeBuilder dest,
+                             PropertyState prop)
+                throws RepositoryException {
+            String propName = prop.getName();
+            if (BASIC_FROZEN_PROPERTIES.contains(propName)) {
+                // OAK-940: do not overwrite basic frozen properties
+                return IGNORE;
+            } else if (isHiddenProperty(propName)) {
+                // don't copy hidden properties except for :childOrder
+                return IGNORE;
+            }
+            return getOPV(src, prop);
+        }
+    }
 }