You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2022/11/09 16:45:32 UTC

svn commit: r1905205 - in /jackrabbit/branches/2.16: ./ jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/NameTest.java

Author: reschke
Date: Wed Nov  9 16:45:32 2022
New Revision: 1905205

URL: http://svn.apache.org/viewvc?rev=1905205&view=rev
Log:
JCR-4853: add test coverage for creating nodes using expanded names (merged r1904326 and r1904333 into 2.16)

Modified:
    jackrabbit/branches/2.16/   (props changed)
    jackrabbit/branches/2.16/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/NameTest.java

Propchange: jackrabbit/branches/2.16/
------------------------------------------------------------------------------
  Merged /jackrabbit/trunk:r1904326,1904333

Modified: jackrabbit/branches/2.16/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/NameTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.16/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/NameTest.java?rev=1905205&r1=1905204&r2=1905205&view=diff
==============================================================================
--- jackrabbit/branches/2.16/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/NameTest.java (original)
+++ jackrabbit/branches/2.16/jackrabbit-jcr-tests/src/main/java/org/apache/jackrabbit/test/api/NameTest.java Wed Nov  9 16:45:32 2022
@@ -16,16 +16,23 @@
  */
 package org.apache.jackrabbit.test.api;
 
-import org.apache.jackrabbit.test.AbstractJCRTest;
-import org.apache.jackrabbit.test.RepositoryStub;
+import java.util.UUID;
 
+import javax.jcr.ItemExistsException;
 import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.Property;
+import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
-import javax.jcr.ValueFactory;
 import javax.jcr.Value;
-import javax.jcr.PropertyType;
-import javax.jcr.Property;
+import javax.jcr.ValueFactory;
 import javax.jcr.Workspace;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.version.VersionException;
+
+import org.apache.jackrabbit.test.AbstractJCRTest;
+import org.apache.jackrabbit.test.RepositoryStub;
 
 /**
  * <code>NameTest</code>...
@@ -90,6 +97,40 @@ public class NameTest extends AbstractJC
     }
 
     /**
+     * Test whether a node can be created with an expanded name (using a previously unused namespace name).
+     * 
+     * @throws RepositoryException
+     */
+    public void testExpandedNameNodeUnmappedNamespace() throws RepositoryException {
+        String ns = "urn:uuid:" + UUID.randomUUID().toString();
+        String expandedName = "{" + ns + "}test";
+        try {
+            Node createdNode = testRootNode.addNode(expandedName);
+            testRootNode.getSession().save();
+            String qualifiedName = createdNode.getName();
+            assertEquals(expandedName, getExpandedName(qualifiedName));
+        } catch (ItemExistsException | PathNotFoundException | ConstraintViolationException | VersionException | LockException ex) {
+            // those are not acceptable here as per API spec
+            fail("unexpected exception: " + ex);
+        } catch (RepositoryException ex) {
+            // acceptable; but a NamespaceException would really be more correct
+        }
+    }
+
+    /**
+     * Test whether a node can be created with something looking like an expanded name which is not
+     * 
+     * @throws RepositoryException
+     */
+    public void testReallyNotAndExpandedName() throws RepositoryException {
+        String notANamespace = UUID.randomUUID().toString();
+        String name = "{" + notANamespace + "}test";
+        Node createdNode = testRootNode.addNode(name);
+        testRootNode.getSession().save();
+        assertEquals(name, createdNode.getName());
+    }
+
+    /**
      * Test if creating a node with an expanded node type name returns the proper
      * standard JCR node type name, and that it works for {@link Node#setPrimaryType(String)}.
      *