You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2018/05/09 15:38:38 UTC
svn commit: r1831261 [2/2] - in /jackrabbit/oak/trunk:
oak-authorization-cug/src/test/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/impl/
oak-core/src/main/java/org/apa...
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java?rev=1831261&r1=1831260&r2=1831261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderCustomMixTest.java Wed May 9 15:38:38 2018
@@ -16,19 +16,16 @@
*/
package org.apache.jackrabbit.oak.security.authorization.composite;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_NAMESPACE_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_NODE_TYPE_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_READ;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_WRITE;
-import static org.junit.Assert.assertEquals;
-
import java.util.List;
import java.util.Map;
import java.util.Set;
-
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.api.PropertyState;
@@ -48,10 +45,11 @@ import org.apache.jackrabbit.oak.spi.sta
import org.junit.Assert;
import org.junit.Test;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
+import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_NAMESPACE_MANAGEMENT;
+import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_NODE_TYPE_MANAGEMENT;
+import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_READ;
+import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_WRITE;
+import static org.junit.Assert.assertEquals;
public class CompositeProviderCustomMixTest extends AbstractSecurityTest {
@@ -232,7 +230,7 @@ public class CompositeProviderCustomMixT
AuthorizationConfiguration config = getConfig(AuthorizationConfiguration.class);
List<AggregatedPermissionProvider> composite = ImmutableList.of(a1, a2);
- return new CompositePermissionProvider(root, composite, config.getContext(), type, getRootProvider());
+ return new CompositePermissionProvider(root, composite, config.getContext(), type, getRootProvider(), getTreeProvider());
}
private static class CustomProvider implements AggregatedPermissionProvider {
@@ -351,7 +349,7 @@ public class CompositeProviderCustomMixT
}
}
- private static class CustomTreePermission implements TreePermission {
+ private static final class CustomTreePermission implements TreePermission {
private final Set<String> granted;
private final Map<String, Long> grantMap;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderNoScopeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderNoScopeTest.java?rev=1831261&r1=1831260&r2=1831261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderNoScopeTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderNoScopeTest.java Wed May 9 15:38:38 2018
@@ -30,7 +30,6 @@ import org.apache.jackrabbit.api.Jackrab
import org.apache.jackrabbit.oak.api.ContentSession;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.commons.PathUtils;
-import org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree;
import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
import org.apache.jackrabbit.oak.spi.security.authorization.permission.AggregatedPermissionProvider;
import org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider;
@@ -124,7 +123,7 @@ public class CompositeProviderNoScopeTes
List<String> childNames = ImmutableList.of("test", "a", "b", "c", "nonexisting");
Tree rootTree = readOnlyRoot.getTree(ROOT_PATH);
- NodeState ns = ((ImmutableTree) rootTree).getNodeState();
+ NodeState ns = getTreeProvider().asNodeState(rootTree);
TreePermission tp = createPermissionProvider().getTreePermission(rootTree, TreePermission.EMPTY);
assertCompositeTreePermission(tp);
@@ -141,7 +140,7 @@ public class CompositeProviderNoScopeTes
List<String> childNames = ImmutableList.of("test", "a", "b", "c", "nonexisting");
Tree rootTree = readOnlyRoot.getTree(ROOT_PATH);
- NodeState ns = ((ImmutableTree) rootTree).getNodeState();
+ NodeState ns = getTreeProvider().asNodeState(rootTree);
TreePermission tp = createPermissionProviderOR().getTreePermission(rootTree, TreePermission.EMPTY);
assertCompositeTreePermission(tp);
@@ -438,7 +437,7 @@ public class CompositeProviderNoScopeTes
Tree rootTree = readOnlyRoot.getTree(ROOT_PATH);
- NodeState ns = ((ImmutableTree) rootTree).getNodeState();
+ NodeState ns = getTreeProvider().asNodeState(rootTree);
TreePermission tp = cppTestUser.getTreePermission(rootTree, TreePermission.EMPTY);
assertEquals(2, ((TreePermission[]) tpField.get(tp)).length);
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeTreePermissionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeTreePermissionTest.java?rev=1831261&r1=1831260&r2=1831261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeTreePermissionTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeTreePermissionTest.java Wed May 9 15:38:38 2018
@@ -26,7 +26,6 @@ import org.apache.jackrabbit.oak.api.Roo
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
-import org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree;
import org.apache.jackrabbit.oak.security.authorization.composite.CompositeAuthorizationConfiguration.CompositionType;
import org.apache.jackrabbit.oak.spi.security.Context;
import org.apache.jackrabbit.oak.spi.security.authorization.permission.AggregatedPermissionProvider;
@@ -43,7 +42,7 @@ import static org.junit.Assert.assertSam
public class CompositeTreePermissionTest extends AbstractSecurityTest {
private Root readOnlyRoot;
- private ImmutableTree rootTree;
+ private Tree rootTree;
private AggregatedPermissionProvider fullScopeProvider;
@@ -56,7 +55,7 @@ public class CompositeTreePermissionTest
root.commit();
readOnlyRoot = getRootProvider().createReadOnlyRoot(root);
- rootTree = (ImmutableTree) readOnlyRoot.getTree("/");
+ rootTree = readOnlyRoot.getTree("/");
fullScopeProvider = new FullScopeProvider(readOnlyRoot);
}
@@ -73,7 +72,7 @@ public class CompositeTreePermissionTest
}
private TreePermission createRootTreePermission(AggregatedPermissionProvider... providers) {
- return new CompositePermissionProvider(readOnlyRoot, Arrays.asList(providers), Context.DEFAULT, CompositionType.AND, getRootProvider())
+ return new CompositePermissionProvider(readOnlyRoot, Arrays.asList(providers), Context.DEFAULT, CompositionType.AND, getRootProvider(), getTreeProvider())
.getTreePermission(rootTree, TreePermission.EMPTY);
}
@@ -96,7 +95,7 @@ public class CompositeTreePermissionTest
assertCompositeTreePermission(false, rootTp);
assertEquals(expected, rootTp.getClass());
- TreePermission testTp = rootTp.getChildPermission("test", rootTree.getChild("test").getNodeState());
+ TreePermission testTp = rootTp.getChildPermission("test", getTreeProvider().asNodeState(rootTree.getChild("test")));
assertEquals(expected, testTp.getClass());
}
@@ -105,7 +104,7 @@ public class CompositeTreePermissionTest
TreePermission rootTp = createRootTreePermission(fullScopeProvider, fullScopeProvider);
assertCompositeTreePermission(true, rootTp);
- TreePermission testTp = rootTp.getChildPermission("test", rootTree.getChild("test").getNodeState());
+ TreePermission testTp = rootTp.getChildPermission("test", getTreeProvider().asNodeState(rootTree.getChild("test")));
assertCompositeTreePermission(true, testTp);
}
@@ -114,7 +113,7 @@ public class CompositeTreePermissionTest
TreePermission rootTp = createRootTreePermission(new NoScopeProvider(root), new NoScopeProvider(root));
assertCompositeTreePermission(true, rootTp);
- assertSame(TreePermission.EMPTY, rootTp.getChildPermission("test", rootTree.getChild("test").getNodeState()));
+ assertSame(TreePermission.EMPTY, rootTp.getChildPermission("test", getTreeProvider().asNodeState(rootTree.getChild("test"))));
}
@Test
@@ -122,7 +121,7 @@ public class CompositeTreePermissionTest
TreePermission rootTp = createRootTreePermission(fullScopeProvider, new NoScopeProvider(root), new NoScopeProvider(root));
assertCompositeTreePermission(true, rootTp);
- NodeState childState = rootTree.getChild("test").getNodeState();
+ NodeState childState = getTreeProvider().asNodeState(rootTree.getChild("test"));
TreePermission testTp = rootTp.getChildPermission("test", childState);
TreePermission expected = fullScopeProvider.getTreePermission(rootTree, TreePermission.EMPTY).getChildPermission("test", childState);
assertEquals(expected.getClass(), testTp.getClass());
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/FullScopeProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/FullScopeProvider.java?rev=1831261&r1=1831260&r2=1831261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/FullScopeProvider.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/FullScopeProvider.java Wed May 9 15:38:38 2018
@@ -31,7 +31,6 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions;
import org.apache.jackrabbit.oak.spi.security.authorization.permission.RepositoryPermission;
import org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission;
-import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeBits;
import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
import org.apache.jackrabbit.oak.spi.state.NodeState;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/VersionTreePermissionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/VersionTreePermissionTest.java?rev=1831261&r1=1831260&r2=1831261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/VersionTreePermissionTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/permission/VersionTreePermissionTest.java Wed May 9 15:38:38 2018
@@ -32,7 +32,6 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
-import org.apache.jackrabbit.oak.plugins.tree.impl.ImmutableTree;
import org.apache.jackrabbit.oak.plugins.version.ReadOnlyVersionManager;
import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
import org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionProvider;
@@ -165,17 +164,17 @@ public class VersionTreePermissionTest e
public void testGetChild() throws Exception {
Tree versionHistory = checkNotNull(vMgr.getVersionHistory(testTree));
- ImmutableTree t = (ImmutableTree) getRootProvider().createReadOnlyRoot(root).getTree("/");
+ Tree t = getRootProvider().createReadOnlyRoot(root).getTree("/");
TreePermission tp = pp.getTreePermission(t, TreePermission.EMPTY);
for (String name : PathUtils.elements(versionHistory.getPath())) {
t = t.getChild(name);
- tp = tp.getChildPermission(name, t.getNodeState());
+ tp = tp.getChildPermission(name, getTreeProvider().asNodeState(t));
}
String expectedPath = "/test";
assertVersionPermission(tp, "/test", true);
- NodeState ns = t.getChild("1.0").getNodeState();
+ NodeState ns = getTreeProvider().asNodeState(t.getChild("1.0"));
tp = tp.getChildPermission("1.0", ns);
assertVersionPermission(tp, "/test", true);
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImplTest.java?rev=1831261&r1=1831260&r2=1831261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeConfigurationImplTest.java Wed May 9 15:38:38 2018
@@ -24,6 +24,7 @@ import org.apache.jackrabbit.api.securit
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.namepath.NamePathMapper;
import org.apache.jackrabbit.oak.plugins.tree.impl.RootProviderService;
+import org.apache.jackrabbit.oak.plugins.tree.impl.TreeProviderService;
import org.apache.jackrabbit.oak.spi.commit.CommitHook;
import org.apache.jackrabbit.oak.spi.commit.MoveTracker;
import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
@@ -43,6 +44,7 @@ public class PrivilegeConfigurationImplT
@Before
public void before() {
configuration.setRootProvider(new RootProviderService());
+ configuration.setTreeProvider(new TreeProviderService());
}
@Test
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorTest.java?rev=1831261&r1=1831260&r2=1831261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorTest.java Wed May 9 15:38:38 2018
@@ -25,6 +25,7 @@ import org.apache.jackrabbit.JcrConstant
import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
@@ -64,10 +65,19 @@ public class PrivilegeValidatorTest exte
return privTree;
}
+ private void register(@Nonnull String privName, @Nonnull String... aggr) throws Exception {
+ getPrivilegeManager(root).registerPrivilege(privName, false, aggr);
+ }
+
private static void setPrivilegeBits(Tree tree, String name, long value) {
tree.setProperty(PropertyStates.createProperty(name, Collections.singleton(value), Type.LONGS));
}
+ private PrivilegeValidator createPrivilegeValidator() {
+ Root immutable = getRootProvider().createReadOnlyRoot(root);
+ return new PrivilegeValidator(immutable, immutable, getTreeProvider());
+ }
+
@Test
public void testMissingPrivilegeBits() {
try {
@@ -180,7 +190,7 @@ public class PrivilegeValidatorTest exte
NodeState privilegeDefinition = nb.getNodeState();
assertTrue(NT_REP_PRIVILEGE.equals(NodeStateUtils.getPrimaryTypeName(privilegeDefinition)));
- PrivilegeValidator pv = new PrivilegeValidator(root, root);
+ PrivilegeValidator pv = new PrivilegeValidator(root, root, getTreeProvider());
try {
pv.childNodeChanged("test", privilegeDefinition, EmptyNodeState.EMPTY_NODE);
} catch (CommitFailedException e) {
@@ -199,7 +209,7 @@ public class PrivilegeValidatorTest exte
NodeState privilegeDefinition = nb.getNodeState();
assertTrue(NT_REP_PRIVILEGE.equals(NodeStateUtils.getPrimaryTypeName(privilegeDefinition)));
- PrivilegeValidator pv = new PrivilegeValidator(root, root);
+ PrivilegeValidator pv = new PrivilegeValidator(root, root, getTreeProvider());
assertNull(pv.childNodeChanged("test", privilegeDefinition, privilegeDefinition));
}
@@ -227,7 +237,7 @@ public class PrivilegeValidatorTest exte
PropertyState before = PropertyStates.createProperty(REP_AGGREGATES, ImmutableList.of(REP_READ_NODES, REP_READ_PROPERTIES), Type.NAMES);
PropertyState after = PropertyStates.createProperty(REP_AGGREGATES, ImmutableList.of(REP_READ_NODES), Type.NAMES);
- PrivilegeValidator validator = new PrivilegeValidator(root, root);
+ PrivilegeValidator validator = new PrivilegeValidator(root, root, getTreeProvider());
validator.propertyChanged(before, after);
fail("modifying property in privilege store must fail.");
} catch (CommitFailedException e) {
@@ -242,7 +252,7 @@ public class PrivilegeValidatorTest exte
try {
PropertyState before = PropertyStates.createProperty(REP_AGGREGATES, ImmutableList.of(REP_READ_NODES, REP_READ_PROPERTIES), Type.NAMES);
- PrivilegeValidator validator = new PrivilegeValidator(root, root);
+ PrivilegeValidator validator = new PrivilegeValidator(root, root, getTreeProvider());
validator.propertyDeleted(before);
fail("removing property from privilege store must fail.");
} catch (CommitFailedException e) {
@@ -272,7 +282,7 @@ public class PrivilegeValidatorTest exte
.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_PRIVILEGE)
.getNodeState();
- PrivilegeValidator validator = new PrivilegeValidator(root, root);
+ PrivilegeValidator validator = createPrivilegeValidator();
validator.childNodeAdded("test", newDef);
fail("missing priv bits must be detected.");
} catch (CommitFailedException e) {
@@ -290,7 +300,7 @@ public class PrivilegeValidatorTest exte
.setProperty(REP_AGGREGATES, ImmutableList.of("unknown", JCR_READ), Type.NAMES)
.getNodeState();
- PrivilegeValidator validator = new PrivilegeValidator(root, root);
+ PrivilegeValidator validator = createPrivilegeValidator();
validator.childNodeAdded("test", newDef);
fail("unknown aggregate must be detected.");
} catch (CommitFailedException e) {
@@ -300,9 +310,9 @@ public class PrivilegeValidatorTest exte
}
@Test
- public void testCircularAggregate() {
+ public void testCircularAggregate() throws Exception {
try {
- createPrivilegeTree("test");
+ register("test");
NodeState newDef = new MemoryNodeBuilder(EmptyNodeState.EMPTY_NODE)
.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_PRIVILEGE)
@@ -310,9 +320,9 @@ public class PrivilegeValidatorTest exte
.setProperty(REP_AGGREGATES, ImmutableList.of("test", JCR_READ), Type.NAMES)
.getNodeState();
- PrivilegeValidator validator = new PrivilegeValidator(root, root);
+ PrivilegeValidator validator = createPrivilegeValidator();
validator.childNodeAdded("test", newDef);
- fail("unknown aggregate must be detected.");
+ fail("circular aggregate must be detected.");
} catch (CommitFailedException e) {
assertTrue(e.isConstraintViolation());
assertEquals(52, e.getCode());
@@ -320,9 +330,10 @@ public class PrivilegeValidatorTest exte
}
@Test
- public void testCircularAggregate2() {
+ public void testCircularAggregate2() throws Exception {
try {
- createPrivilegeTree("test2", "test");
+ register("test");
+ register("test2", "test", PrivilegeConstants.JCR_READ);
NodeState newDef = new MemoryNodeBuilder(EmptyNodeState.EMPTY_NODE)
.setProperty(JcrConstants.JCR_PRIMARYTYPE, NT_REP_PRIVILEGE)
@@ -330,9 +341,9 @@ public class PrivilegeValidatorTest exte
.setProperty(REP_AGGREGATES, ImmutableList.of("test2", JCR_READ), Type.NAMES)
.getNodeState();
- PrivilegeValidator validator = new PrivilegeValidator(root, root);
+ PrivilegeValidator validator = createPrivilegeValidator();
validator.childNodeAdded("test", newDef);
- fail("unknown aggregate must be detected.");
+ fail("circular aggregate must be detected.");
} catch (CommitFailedException e) {
assertTrue(e.isConstraintViolation());
assertEquals(52, e.getCode());
Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeProvider.java?rev=1831261&r1=1831260&r2=1831261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeProvider.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeProvider.java Wed May 9 15:38:38 2018
@@ -30,4 +30,7 @@ public interface TreeProvider {
@Nonnull
Tree createReadOnlyTree(@Nonnull Tree readOnlyParent, @Nonnull String childName, @Nonnull NodeState childState);
+
+ @Nonnull
+ NodeState asNodeState(@Nonnull Tree readOnlyTree);
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/package-info.java?rev=1831261&r1=1831260&r2=1831261&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/package-info.java Wed May 9 15:38:38 2018
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("3.0.1")
+@Version("3.1.0")
package org.apache.jackrabbit.oak.plugins.tree;
import org.osgi.annotation.versioning.Version;