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 ju...@apache.org on 2013/09/19 20:49:03 UTC
svn commit: r1524803 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/security/privilege/
main/java/org/apache/jackrabbit/oak/spi/security/privilege/
test/java/org/apache/jackrabbit/oak/security/privilege/
Author: jukka
Date: Thu Sep 19 18:49:02 2013
New Revision: 1524803
URL: http://svn.apache.org/r1524803
Log:
OAK-1027: Avoid turning multivalued properties to String arrays
Use Iterable<String> in the ImmutablePrivilegeDefinition constructor so we don't have to go through a String array or an extra Set instance
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriter.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/ImmutablePrivilegeDefinition.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeUtil.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriterTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriter.java?rev=1524803&r1=1524802&r2=1524803&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriter.java Thu Sep 19 18:49:02 2013
@@ -16,14 +16,18 @@
*/
package org.apache.jackrabbit.oak.security.privilege;
+import static java.util.Arrays.asList;
+
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
+
import javax.annotation.Nonnull;
import javax.jcr.RepositoryException;
import com.google.common.collect.ImmutableMap;
+
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.Root;
import org.apache.jackrabbit.oak.api.Tree;
@@ -169,11 +173,11 @@ class PrivilegeDefinitionWriter implemen
private static Collection<PrivilegeDefinition> getBuiltInDefinitions() {
Map<String, PrivilegeDefinition> definitions = new LinkedHashMap<String, PrivilegeDefinition>();
for (String privilegeName : NON_AGGR_PRIVILEGES) {
- PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false);
+ PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false, null);
definitions.put(privilegeName, def);
}
for (String privilegeName : AGGREGATE_PRIVILEGES.keySet()) {
- PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false, AGGREGATE_PRIVILEGES.get(privilegeName));
+ PrivilegeDefinition def = new ImmutablePrivilegeDefinition(privilegeName, false, asList(AGGREGATE_PRIVILEGES.get(privilegeName)));
definitions.put(privilegeName, def);
}
PrivilegeDefinition all = new ImmutablePrivilegeDefinition(JCR_ALL, false, definitions.keySet());
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/ImmutablePrivilegeDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/ImmutablePrivilegeDefinition.java?rev=1524803&r1=1524802&r2=1524803&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/ImmutablePrivilegeDefinition.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/ImmutablePrivilegeDefinition.java Thu Sep 19 18:49:02 2013
@@ -16,7 +16,6 @@
*/
package org.apache.jackrabbit.oak.spi.security.privilege;
-import java.util.Collections;
import java.util.Set;
import javax.annotation.Nonnull;
@@ -32,20 +31,16 @@ public final class ImmutablePrivilegeDef
private final boolean isAbstract;
private final Set<String> declaredAggregateNames;
- public ImmutablePrivilegeDefinition(String name, boolean isAbstract,
- Set<String> declaredAggregateNames) {
+ public ImmutablePrivilegeDefinition(
+ String name, boolean isAbstract,
+ Iterable<String> declaredAggregateNames) {
this.name = name;
this.isAbstract = isAbstract;
- this.declaredAggregateNames = ImmutableSet.copyOf(declaredAggregateNames);
- }
-
- public ImmutablePrivilegeDefinition(String name, boolean isAbstract,
- String... declaredAggregateNames) {
- this.name = name;
- this.isAbstract = isAbstract;
- this.declaredAggregateNames = (declaredAggregateNames == null) ?
- Collections.<String>emptySet() :
- ImmutableSet.copyOf(declaredAggregateNames);
+ ImmutableSet.Builder<String> builder = ImmutableSet.builder();
+ if (declaredAggregateNames != null) {
+ builder.addAll(declaredAggregateNames);
+ }
+ this.declaredAggregateNames = builder.build();
}
//------------------------------------------------< PrivilegeDefinition >---
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeUtil.java?rev=1524803&r1=1524802&r2=1524803&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeUtil.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/privilege/PrivilegeUtil.java Thu Sep 19 18:49:02 2013
@@ -18,8 +18,10 @@ package org.apache.jackrabbit.oak.spi.se
import javax.annotation.Nonnull;
+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.util.TreeUtil;
/**
@@ -52,8 +54,11 @@ public final class PrivilegeUtil impleme
public static PrivilegeDefinition readDefinition(@Nonnull Tree definitionTree) {
String name = definitionTree.getName();
boolean isAbstract = TreeUtil.getBoolean(definitionTree, REP_IS_ABSTRACT);
- String[] declAggrNames = TreeUtil.getStrings(definitionTree, REP_AGGREGATES);
-
+ Iterable<String> declAggrNames = null;
+ PropertyState property = definitionTree.getProperty(REP_AGGREGATES);
+ if (property != null) {
+ declAggrNames = property.getValue(Type.NAMES);
+ }
return new ImmutablePrivilegeDefinition(name, isAbstract, declAggrNames);
}
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriterTest.java?rev=1524803&r1=1524802&r2=1524803&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriterTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriterTest.java Thu Sep 19 18:49:02 2013
@@ -16,7 +16,6 @@
*/
package org.apache.jackrabbit.oak.security.privilege;
-import java.util.Collections;
import javax.jcr.RepositoryException;
import org.apache.jackrabbit.oak.AbstractSecurityTest;
@@ -31,6 +30,7 @@ import org.apache.jackrabbit.oak.util.Tr
import org.junit.After;
import org.junit.Test;
+import static java.util.Arrays.asList;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -51,7 +51,7 @@ public class PrivilegeDefinitionWriterTe
public void testNameCollision() {
try {
PrivilegeDefinitionWriter writer = new PrivilegeDefinitionWriter(root);
- writer.writeDefinition(new ImmutablePrivilegeDefinition(JCR_READ, true, Collections.<String>emptySet()));
+ writer.writeDefinition(new ImmutablePrivilegeDefinition(JCR_READ, true, null));
fail("name collision");
} catch (RepositoryException e) {
// success
@@ -64,7 +64,7 @@ public class PrivilegeDefinitionWriterTe
Root tmpRoot = repo.login(null, null).getLatestRoot();
try {
PrivilegeDefinitionWriter writer = new PrivilegeDefinitionWriter(tmpRoot);
- writer.writeDefinition(new ImmutablePrivilegeDefinition("newName", true, Collections.<String>emptySet()));
+ writer.writeDefinition(new ImmutablePrivilegeDefinition("newName", true, null));
fail("missing privilege root");
} catch (RepositoryException e) {
// success
@@ -76,7 +76,8 @@ public class PrivilegeDefinitionWriterTe
@Test
public void testWriteDefinition() throws Exception {
PrivilegeDefinitionWriter writer = new PrivilegeDefinitionWriter(root);
- writer.writeDefinition(new ImmutablePrivilegeDefinition("tmp", true, JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL));
+ writer.writeDefinition(new ImmutablePrivilegeDefinition(
+ "tmp", true, asList(JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL)));
Tree privRoot = root.getTree(PRIVILEGES_PATH);
assertTrue(privRoot.hasChild("tmp"));