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 2021/10/06 14:32:18 UTC

svn commit: r1893936 - in /jackrabbit/branches/2.20: ./ jackrabbit-core/ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/ jackrabbit-jcr-rmi/ jackrabbit-jcr2dav/ jackrab...

Author: reschke
Date: Wed Oct  6 14:32:18 2021
New Revision: 1893936

URL: http://svn.apache.org/viewvc?rev=1893936&view=rev
Log:
JCR-4680: ConstraintViolationException in VersionManagerImplRestore when target node has a property definition unknown by the frozen node (merged r1888505 into 2.20)

Modified:
    jackrabbit/branches/2.20/   (props changed)
    jackrabbit/branches/2.20/jackrabbit-core/pom.xml
    jackrabbit/branches/2.20/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplRestore.java
    jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RestoreTest.java
    jackrabbit/branches/2.20/jackrabbit-jcr-rmi/pom.xml
    jackrabbit/branches/2.20/jackrabbit-jcr2dav/pom.xml
    jackrabbit/branches/2.20/jackrabbit-spi2jcr/pom.xml

Propchange: jackrabbit/branches/2.20/
------------------------------------------------------------------------------
  Merged /jackrabbit/trunk:r1888505

Modified: jackrabbit/branches/2.20/jackrabbit-core/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.20/jackrabbit-core/pom.xml?rev=1893936&r1=1893935&r2=1893936&view=diff
==============================================================================
--- jackrabbit/branches/2.20/jackrabbit-core/pom.xml (original)
+++ jackrabbit/branches/2.20/jackrabbit-core/pom.xml Wed Oct  6 14:32:18 2021
@@ -114,7 +114,6 @@ org.apache.jackrabbit.core.security.user
 org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testStringLiteralInvalidName        <!-- OAK-3265 -->
 org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testPathLiteral                     <!-- OAK-3265 -->
 org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testURILiteral                      <!-- OAK-3265 -->
-org.apache.jackrabbit.test.api.version.RestoreTest#testRestoreRemovesMixin                     <!-- JCR-4680 -->
               </value>
             </property>
             <property>

Modified: jackrabbit/branches/2.20/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplRestore.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.20/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplRestore.java?rev=1893936&r1=1893935&r2=1893936&view=diff
==============================================================================
--- jackrabbit/branches/2.20/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplRestore.java (original)
+++ jackrabbit/branches/2.20/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplRestore.java Wed Oct  6 14:32:18 2021
@@ -22,6 +22,7 @@ import javax.jcr.ItemExistsException;
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.version.OnParentVersionAction;
 import javax.jcr.version.Version;
 import javax.jcr.version.VersionException;
@@ -407,7 +408,13 @@ abstract public class VersionManagerImpl
         for (PropertyState prop: state.getProperties()) {
             Name propName = prop.getName();
             if (!propNames.contains(propName)) {
-                int opv = state.getDefinition(prop).getOnParentVersion();
+                int opv;
+                try {
+                    opv = state.getDefinition(prop).getOnParentVersion();
+                } catch (ConstraintViolationException ignore) {
+                    // N/P definition no longer exists (like from a mixin on N but not on F, already removed above)
+                    opv = OnParentVersionAction.ABORT;
+                }
                 if (opv == OnParentVersionAction.COPY
                         || opv == OnParentVersionAction.VERSION
                         || opv == OnParentVersionAction.ABORT) {
@@ -679,4 +686,4 @@ abstract public class VersionManagerImpl
         }
         return values;
     }
-}
\ No newline at end of file
+}

Modified: jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RestoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RestoreTest.java?rev=1893936&r1=1893935&r2=1893936&view=diff
==============================================================================
--- jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RestoreTest.java (original)
+++ jackrabbit/branches/2.20/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RestoreTest.java Wed Oct  6 14:32:18 2021
@@ -21,6 +21,7 @@ import org.apache.jackrabbit.core.UserTr
 
 import javax.jcr.Node;
 import javax.jcr.version.Version;
+import javax.jcr.version.VersionManager;
 
 /**
  * Test case for JCR-1476.
@@ -39,4 +40,22 @@ public class RestoreTest extends Abstrac
         assertEquals("Wrong version restored", versionName, n.getBaseVersion().getName());
         tx.commit();
     }
+
+    public void testRestoreToNodeWithAnUnknownPropertyType() throws Exception {
+        // create n from a type without jcr:title and no matching residual properties, unlike default nt:unstructured
+        Node n = testRootNode.addNode(nodeName1, "nt:query");
+        n.addMixin(mixVersionable);
+        superuser.save();
+        VersionManager versionManager = superuser.getWorkspace().getVersionManager();
+        Version v10 = versionManager.checkin(n.getPath());
+        versionManager.checkout(n.getPath());
+        // use mix:title to allow adding property jcr:title
+        n.addMixin("mix:title");
+        // add jcr:title property which is *not* allowed by the frozen node its type alone (nt:query)
+        n.setProperty("jcr:title", "title");
+        superuser.save();
+        // restore base version without mix:title mixin, removing jcr:title property
+        versionManager.restore(v10, true);
+        assertFalse(n.hasProperty("jcr:title"));
+    }
 }

Modified: jackrabbit/branches/2.20/jackrabbit-jcr-rmi/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.20/jackrabbit-jcr-rmi/pom.xml?rev=1893936&r1=1893935&r2=1893936&view=diff
==============================================================================
--- jackrabbit/branches/2.20/jackrabbit-jcr-rmi/pom.xml (original)
+++ jackrabbit/branches/2.20/jackrabbit-jcr-rmi/pom.xml Wed Oct  6 14:32:18 2021
@@ -486,7 +486,6 @@ org.apache.jackrabbit.test.api.security.
 org.apache.jackrabbit.test.api.security.RSessionAccessControlPolicyTest#testSetPolicy
 <!-- JCR-3206 -->
 org.apache.jackrabbit.test.api.observation.EventJournalTest
-org.apache.jackrabbit.test.api.version.RestoreTest#testRestoreRemovesMixin                     <!-- JCR-4680 -->
                   </value>
                 </property>
                 <property>

Modified: jackrabbit/branches/2.20/jackrabbit-jcr2dav/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.20/jackrabbit-jcr2dav/pom.xml?rev=1893936&r1=1893935&r2=1893936&view=diff
==============================================================================
--- jackrabbit/branches/2.20/jackrabbit-jcr2dav/pom.xml (original)
+++ jackrabbit/branches/2.20/jackrabbit-jcr2dav/pom.xml Wed Oct  6 14:32:18 2021
@@ -125,7 +125,6 @@
                      org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testURILiteral                      <!-- OAK-3265, JCR-3913 -->
                      <!-- JCR-3995 -->
                      org.apache.jackrabbit.jcr2spi.security.authorization.jackrabbit.acl.AccessControlManagerImplTest#testAddingFourAccessControlEntries
-                     org.apache.jackrabbit.test.api.version.RestoreTest#testRestoreRemovesMixin                     <!-- JCR-4680 -->
                   </value>
                 </property>
                 <property>

Modified: jackrabbit/branches/2.20/jackrabbit-spi2jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.20/jackrabbit-spi2jcr/pom.xml?rev=1893936&r1=1893935&r2=1893936&view=diff
==============================================================================
--- jackrabbit/branches/2.20/jackrabbit-spi2jcr/pom.xml (original)
+++ jackrabbit/branches/2.20/jackrabbit-spi2jcr/pom.xml Wed Oct  6 14:32:18 2021
@@ -79,7 +79,6 @@ org.apache.jackrabbit.test.api.query.qom
                org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testStringLiteralInvalidName        <!-- OAK-3265, JCR-3913 -->
                org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testPathLiteral                     <!-- OAK-3265, JCR-3913 -->
                org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testURILiteral                      <!-- OAK-3265, JCR-3913 -->
-               org.apache.jackrabbit.test.api.version.RestoreTest#testRestoreRemovesMixin                     <!-- JCR-4680 -->
               </value>
             </property>
           </systemProperties>