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


Reply via email to