Author: angela
Date: Wed Feb 24 15:29:02 2016
New Revision: 1732170
URL: http://svn.apache.org/viewvc?rev=1732170&view=rev
Log:
OAK-3930 : Sysview import of single valued mv property creates sv property
Added:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/xml/ImportMvPropertyTest.java
- copied, changed from r1732042,
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/xml/ImportTest.java
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SysViewImportHandler.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserImportHistoryTest.java
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SysViewImportHandler.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SysViewImportHandler.java?rev=1732170&r1=1732169&r2=1732170&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SysViewImportHandler.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/SysViewImportHandler.java
Wed Feb 24 15:29:02 2016
@@ -277,7 +277,8 @@ class SysViewImportHandler extends Targe
PropInfo prop = new PropInfo(
currentPropName == null ? null :
currentPropName.getRepoQualifiedName(),
currentPropType,
- currentPropValues);
+ currentPropValues,
+ currentPropMultipleStatus);
state.props.add(prop);
}
// reset temp fields
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserImportHistoryTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserImportHistoryTest.java?rev=1732170&r1=1732169&r2=1732170&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserImportHistoryTest.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserImportHistoryTest.java
Wed Feb 24 15:29:02 2016
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.oak.jcr.security.user;
import javax.jcr.Node;
+import javax.jcr.Value;
import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
@@ -80,6 +81,8 @@ public class UserImportHistoryTest exten
Node pwdNode = userNode.getNode(UserConstants.REP_PWD);
assertTrue(pwdNode.hasProperty(UserConstants.REP_PWD_HISTORY));
- assertEquals("{sha1}8efd86fb78a56a5145ed7739dcb00c78581c5375",
pwdNode.getProperty(UserConstants.REP_PWD_HISTORY).getString());
+ Value[] vs =
pwdNode.getProperty(UserConstants.REP_PWD_HISTORY).getValues();
+ assertEquals(1, vs.length);
+ assertEquals("{sha1}8efd86fb78a56a5145ed7739dcb00c78581c5375",
vs[0].getString());
}
}
Copied:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/xml/ImportMvPropertyTest.java
(from r1732042,
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/xml/ImportTest.java)
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/xml/ImportMvPropertyTest.java?p2=jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/xml/ImportMvPropertyTest.java&p1=jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/xml/ImportTest.java&r1=1732042&r2=1732170&rev=1732170&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/xml/ImportTest.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/xml/ImportMvPropertyTest.java
Wed Feb 24 15:29:02 2016
@@ -24,206 +24,89 @@ import java.io.OutputStream;
import javax.jcr.ImportUUIDBehavior;
import javax.jcr.ItemExistsException;
import javax.jcr.Node;
+import javax.jcr.Property;
import javax.jcr.RepositoryException;
+import javax.jcr.Value;
+import javax.jcr.ValueFactory;
import javax.jcr.nodetype.ConstraintViolationException;
import org.apache.jackrabbit.test.AbstractJCRTest;
+import org.junit.Assert;
-public class ImportTest extends AbstractJCRTest {
+/**
+ * @see <a href="https://issues.apache.org/jira/browse/OAK-3930">OAK-3930</a>
+ */
+public class ImportMvPropertyTest extends AbstractJCRTest {
+
+ private ValueFactory vf;
- private String uuid;
private String path;
- private String siblingPath;
+ private String targetPath;
@Override
protected void setUp() throws Exception {
super.setUp();
- Node node = testRootNode.addNode(nodeName1);
- node.addMixin(mixReferenceable);
-
- Node sibling = testRootNode.addNode(nodeName2);
+ vf = superuser.getValueFactory();
- uuid = node.getIdentifier();
+ Node node = testRootNode.addNode(nodeName4);
path = node.getPath();
- siblingPath = sibling.getPath();
- }
-
- private InputStream getImportStream() throws RepositoryException,
IOException {
- OutputStream out = new ByteArrayOutputStream();
- superuser.exportSystemView(path, out, true, false);
- return new ByteArrayInputStream(out.toString().getBytes());
- }
-
- public void testReplaceUUID() throws Exception {
- superuser.save();
-
- superuser.importXML(siblingPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);
- superuser.save();
-
- // original node must have been replaced (but no child node added)
- assertTrue(testRootNode.hasNode(nodeName1));
- Node n2 = testRootNode.getNode(nodeName1);
- assertTrue(n2.isNodeType(mixReferenceable));
- assertEquals(uuid, n2.getIdentifier());
-
- Node sibling = superuser.getNode(siblingPath);
- assertFalse(sibling.hasNode(nodeName1));
- }
-
- /**
- * @see <a
href="https://issues.apache.org/jira/browse/OAK-2246">OAK-2246</a>
- */
- public void testTransientReplaceUUID() throws Exception {
- superuser.importXML(path, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);
- superuser.save();
-
- // original node must have been replaced (but no child node added)
- superuser.importXML(siblingPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);
- superuser.save();
-
- // original node must have been replaced (but no child node added)
- assertTrue(testRootNode.hasNode(nodeName1));
- Node n2 = testRootNode.getNode(nodeName1);
- assertTrue(n2.isNodeType(mixReferenceable));
- assertEquals(uuid, n2.getIdentifier());
-
- Node sibling = superuser.getNode(siblingPath);
- assertFalse(sibling.hasNode(nodeName1));
- }
-
- public void testReplaceUUIDSameTree() throws Exception {
- superuser.save();
- superuser.importXML(path, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);
- superuser.save();
+ Node n1 = node.addNode(nodeName1, "test:setProperty");
+ n1.setProperty("test:multiProperty", "v1");
- // original node must have been replaced (but no child node added)
- assertTrue(testRootNode.hasNode(nodeName1));
- Node n2 = testRootNode.getNode(nodeName1);
- assertTrue(n2.isNodeType(mixReferenceable));
- assertEquals(uuid, n2.getIdentifier());
- assertFalse(n2.hasNode(nodeName1));
- }
+ Node n2 = node.addNode(nodeName2, "test:setProperty");
+ n2.setProperty("test:multiProperty", new String[] {"v1", "v2"});
- /**
- * @see <a
href="https://issues.apache.org/jira/browse/OAK-2246">OAK-2246</a>
- */
- public void testTransientReplaceUUIDSameTree() throws Exception {
- superuser.importXML(path, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);
- superuser.save();
+ Node n3 = node.addNode(nodeName3, "test:setProperty");
+ n3.setProperty("test:multiProperty", new String[] {});
- // original node must have been replaced (but no child node added)
- assertTrue(testRootNode.hasNode(nodeName1));
- Node n2 = testRootNode.getNode(nodeName1);
- assertTrue(n2.isNodeType(mixReferenceable));
- assertEquals(uuid, n2.getIdentifier());
- assertFalse(n2.hasNode(nodeName1));
- }
+ targetPath = testRootNode.addNode("target").getPath();
- public void testRemoveUUID() throws Exception {
superuser.save();
- superuser.importXML(siblingPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING);
- superuser.save();
-
- // original node must have been removed
- assertFalse(testRootNode.hasNode(nodeName1));
-
- Node sibling = superuser.getNode(siblingPath);
- assertTrue(sibling.hasNode(nodeName1));
-
- Node imported = sibling.getNode(nodeName1);
- assertTrue(imported.isNodeType(mixReferenceable));
- assertEquals(uuid, imported.getIdentifier());
}
- public void testTransientRemoveUUID() throws Exception {
- superuser.importXML(siblingPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING);
- superuser.save();
-
- // original node must have been removed
- assertFalse(testRootNode.hasNode(nodeName1));
-
- Node sibling = superuser.getNode(siblingPath);
- assertTrue(sibling.hasNode(nodeName1));
-
- Node imported = sibling.getNode(nodeName1);
- assertTrue(imported.isNodeType(mixReferenceable));
- assertEquals(uuid, imported.getIdentifier());
- }
-
- public void testRemoveUUIDSameTree() throws Exception {
- superuser.save();
-
- try {
- superuser.importXML(path, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING);
- fail("ConstraintViolationException expected");
- } catch (ConstraintViolationException e) {
- // success
- }
- }
-
- public void testTransientRemoveUUIDSameTree() throws Exception {
- try {
- superuser.importXML(path, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING);
- fail("ConstraintViolationException expected");
- } catch (ConstraintViolationException e) {
- // success
- }
+ private InputStream getImportStream() throws RepositoryException,
IOException {
+ OutputStream out = new ByteArrayOutputStream();
+ superuser.exportSystemView(path, out, true, false);
+ return new ByteArrayInputStream(out.toString().getBytes());
}
- public void testCreateNewUUID() throws Exception {
+ public void testSingleValues() throws Exception {
+ superuser.importXML(targetPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
superuser.save();
- superuser.importXML(siblingPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
- superuser.save();
-
- // original node must still exist
- assertTrue(testRootNode.hasNode(nodeName1));
+ Node n = superuser.getNode(targetPath).getNode(nodeName4);
+ Property p = n.getNode(nodeName1).getProperty("test:multiProperty");
- // verify the import produced the expected new node
- Node sibling = superuser.getNode(siblingPath);
- assertTrue(sibling.hasNode(nodeName1));
-
- Node imported = sibling.getNode(nodeName1);
- assertTrue(imported.isNodeType(mixReferenceable));
- assertFalse(uuid.equals(imported.getIdentifier()));
+ assertTrue(p.isMultiple());
+ assertTrue(p.getDefinition().isMultiple());
+ Assert.assertArrayEquals(new Value[]{vf.createValue("v1")},
p.getValues());
}
- public void testTransientCreateNewUUID() throws Exception {
- superuser.importXML(siblingPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
+ public void testMultiValues() throws Exception {
+ superuser.importXML(targetPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
superuser.save();
- // original node must still exist
- assertTrue(testRootNode.hasNode(nodeName1));
+ Node n = superuser.getNode(targetPath).getNode(nodeName4);
+ Property p = n.getNode(nodeName2).getProperty("test:multiProperty");
- // verify the import produced the expected new node
- Node sibling = superuser.getNode(siblingPath);
- assertTrue(sibling.hasNode(nodeName1));
-
- Node imported = sibling.getNode(nodeName1);
- assertTrue(imported.isNodeType(mixReferenceable));
- assertFalse(uuid.equals(imported.getIdentifier()));
+ assertTrue(p.isMultiple());
+ assertTrue(p.getDefinition().isMultiple());
+ Value[] expected = new Value[] {vf.createValue("v1"),
vf.createValue("v2")};
+ Assert.assertArrayEquals(expected, p.getValues());
}
- public void testThrow() throws Exception {
+ public void testEmptyValues() throws Exception {
+ superuser.importXML(targetPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
superuser.save();
- try {
- superuser.importXML(siblingPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW);
- fail("ItemExistsException expected");
- } catch (ItemExistsException e) {
- // success
- }
- }
+ Node n = superuser.getNode(targetPath).getNode(nodeName4);
+ Property p = n.getNode(nodeName3).getProperty("test:multiProperty");
- public void testTransientThrow() throws Exception {
- try {
- superuser.importXML(siblingPath, getImportStream(),
ImportUUIDBehavior.IMPORT_UUID_COLLISION_THROW);
- fail("ItemExistsException expected");
- } catch (ItemExistsException e) {
- // success
- }
+ assertTrue(p.isMultiple());
+ assertTrue(p.getDefinition().isMultiple());
+ Assert.assertArrayEquals(new String[0], p.getValues());
}
}
\ No newline at end of file