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); + } + } }