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 ch...@apache.org on 2017/07/10 08:47:47 UTC
svn commit: r1801426 - in /jackrabbit/oak/trunk/oak-lucene/src:
main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java
test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtilsTest.java
Author: chetanm
Date: Mon Jul 10 08:47:47 2017
New Revision: 1801426
URL: http://svn.apache.org/viewvc?rev=1801426&view=rev
Log:
OAK-6437 - NodeStateCopyUtils should not copy hidden props and node in JCR mode
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtilsTest.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java?rev=1801426&r1=1801425&r2=1801426&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java Mon Jul 10 08:47:47 2017
@@ -27,12 +27,14 @@ import javax.jcr.Value;
import javax.jcr.ValueFactory;
import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.commons.JcrUtils;
import org.apache.jackrabbit.oak.api.Blob;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.tree.TreeFactory;
import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.jackrabbit.oak.api.Type.NAMES;
@@ -58,8 +60,13 @@ final class NodeStateCopyUtils {
Tree src = TreeFactory.createReadOnlyTree(state);
for (Tree srcChild : src.getChildren()){
String childName = srcChild.getName();
+
+ if (NodeStateUtils.isHidden(childName)){
+ continue;
+ }
+
NodeState childState = state.getChildNode(childName);
- Node child = node.addNode(childName, primaryType(childState));
+ Node child = JcrUtils.getOrAddNode(node, childName, primaryType(childState));
copyToNode(childState, child);
}
}
@@ -88,6 +95,10 @@ final class NodeStateCopyUtils {
continue;
}
+ if (NodeStateUtils.isHidden(name)){
+ continue;
+ }
+
if (ps.isArray()){
Value[] values = new Value[ps.count()];
for (int i = 0; i < ps.count(); i++) {
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtilsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtilsTest.java?rev=1801426&r1=1801425&r2=1801426&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtilsTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtilsTest.java Mon Jul 10 08:47:47 2017
@@ -132,6 +132,27 @@ public class NodeStateCopyUtilsTest {
}
@Test
+ public void copyToJcrAndHiddenProps() throws Exception{
+ repository = new Jcr().with(new OpenSecurityProvider()).createRepository();
+
+ Tree srcTree = TreeFactory.createTree(builder);
+ srcTree.addChild("a").setProperty("foo", "y");
+ srcTree.addChild("a").setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_OAK_UNSTRUCTURED, Type.NAME);
+ builder.child(":hidden-node").setProperty("x", "y");
+ builder.setProperty(":hidden-prop", "y");
+
+ Session session = repository.login(null, null);
+ Node node = session.getRootNode();
+ Node test = node.addNode("test", NT_OAK_UNSTRUCTURED);
+
+ NodeStateCopyUtils.copyToNode(builder.getNodeState(), test);
+ session.save();
+
+ test = session.getNode("/test");
+ assertEquals("y", test.getProperty("a/foo").getString());
+ }
+
+ @Test
public void copyToJcrVariousProps() throws Exception{
repository = new Jcr().with(new OpenSecurityProvider()).createRepository();