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>