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:50:12 UTC
svn commit: r1524804 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/
main/java/org/apache/jackrabbit/oak/util/
test/java/org/apache/jackrabbit/oak/ test/java/org/apache/jackrabbit/oak/s...
Author: jukka
Date: Thu Sep 19 18:50:11 2013
New Revision: 1524804
URL: http://svn.apache.org/r1524804
Log:
OAK-1027: Avoid turning multivalued properties to String arrays
Replace String[] with Iterable<String> as getStrings() and getNames() return value
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/NodeUtil.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TreeUtil.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeDefinitionWriterTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImpl.java?rev=1524804&r1=1524803&r2=1524804&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlManagerImpl.java Thu Sep 19 18:50:11 2013
@@ -633,8 +633,8 @@ public class AccessControlManagerImpl im
@Nonnull
private Set<Privilege> getPrivileges(@Nonnull Tree aceTree) throws RepositoryException {
- String[] privNames = checkNotNull(TreeUtil.getStrings(aceTree, REP_PRIVILEGES));
- Set<Privilege> privileges = new HashSet<Privilege>(privNames.length);
+ Iterable<String> privNames = checkNotNull(TreeUtil.getStrings(aceTree, REP_PRIVILEGES));
+ Set<Privilege> privileges = new HashSet<Privilege>();
for (String name : privNames) {
privileges.add(privilegeManager.getPrivilege(name));
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java?rev=1524804&r1=1524803&r2=1524804&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidator.java Thu Sep 19 18:50:11 2013
@@ -16,17 +16,19 @@
*/
package org.apache.jackrabbit.oak.security.authorization.accesscontrol;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
+
import javax.jcr.RepositoryException;
import javax.jcr.security.AccessControlException;
import javax.jcr.security.Privilege;
import com.google.common.base.Objects;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
+
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.PropertyState;
@@ -213,8 +215,8 @@ class AccessControlValidator extends Def
// enforced on the oak level.
}
- private void checkValidPrivileges(String[] privilegeNames) throws CommitFailedException {
- if (privilegeNames == null || privilegeNames.length == 0) {
+ private void checkValidPrivileges(Iterable<String> privilegeNames) throws CommitFailedException {
+ if (privilegeNames == null || Iterables.isEmpty(privilegeNames)) {
throw accessViolation(9, "Missing privileges.");
}
for (String privilegeName : privilegeNames) {
@@ -249,8 +251,8 @@ class AccessControlValidator extends Def
private static void checkMixinTypes(Tree parentTree) throws CommitFailedException {
- String[] mixinNames = TreeUtil.getStrings(parentTree, JcrConstants.JCR_MIXINTYPES);
- if (mixinNames != null && Arrays.asList(mixinNames).contains(MIX_REP_REPO_ACCESS_CONTROLLABLE)) {
+ Iterable<String> mixinNames = TreeUtil.getNames(parentTree, JcrConstants.JCR_MIXINTYPES);
+ if (mixinNames != null && Iterables.contains(mixinNames, MIX_REP_REPO_ACCESS_CONTROLLABLE)) {
checkValidRepoAccessControlled(parentTree);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/NodeUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/NodeUtil.java?rev=1524804&r1=1524803&r2=1524804&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/NodeUtil.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/NodeUtil.java Thu Sep 19 18:50:11 2013
@@ -36,7 +36,9 @@ import javax.jcr.Value;
import javax.jcr.ValueFactory;
import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
+
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
@@ -222,7 +224,7 @@ public class NodeUtil {
}
@CheckForNull
- public String[] getStrings(String name) {
+ public Iterable<String> getStrings(String name) {
return TreeUtil.getStrings(tree, name);
}
@@ -251,15 +253,15 @@ public class NodeUtil {
}
@CheckForNull
- public String[] getNames(String propertyName, String... defaultValues) {
- String[] strings = getStrings(propertyName);
- if (strings == null) {
- strings = defaultValues;
- }
- for (int i = 0; i < strings.length; i++) {
- strings[i] = mapper.getJcrName(strings[i]);
- }
- return strings;
+ public Iterable<String> getNames(String propertyName) {
+ return Iterables.transform(
+ TreeUtil.getNames(tree, propertyName),
+ new Function<String, String>() {
+ @Override
+ public String apply(String input) {
+ return mapper.getJcrName(input);
+ }
+ });
}
public void setNames(String propertyName, String... values) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TreeUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TreeUtil.java?rev=1524804&r1=1524803&r2=1524804&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TreeUtil.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TreeUtil.java Thu Sep 19 18:50:11 2013
@@ -81,12 +81,12 @@ public final class TreeUtil {
}
@CheckForNull
- public static String[] getStrings(Tree tree, String propertyName) {
+ public static Iterable<String> getStrings(Tree tree, String propertyName) {
PropertyState property = tree.getProperty(propertyName);
if (property == null) {
return null;
} else {
- return Iterables.toArray(property.getValue(STRINGS), String.class);
+ return property.getValue(STRINGS);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java?rev=1524804&r1=1524803&r2=1524804&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractSecurityTest.java Thu Sep 19 18:50:11 2013
@@ -16,7 +16,12 @@
*/
package org.apache.jackrabbit.oak;
+import static com.google.common.collect.Lists.newArrayList;
+
+import java.util.Arrays;
+import java.util.List;
import java.util.UUID;
+
import javax.annotation.Nullable;
import javax.jcr.Credentials;
import javax.jcr.NoSuchWorkspaceException;
@@ -159,11 +164,16 @@ public abstract class AbstractSecurityTe
}
protected Privilege[] privilegesFromNames(String... privilegeNames) throws RepositoryException {
- Privilege[] privs = new Privilege[privilegeNames.length];
- for (int i = 0; i < privilegeNames.length; i++) {
- privs[i] = getPrivilegeManager(root).getPrivilege(privilegeNames[i]);
+ return privilegesFromNames(Arrays.asList(privilegeNames));
+ }
+
+ protected Privilege[] privilegesFromNames(Iterable<String> privilegeNames) throws RepositoryException {
+ PrivilegeManager manager = getPrivilegeManager(root);
+ List<Privilege> privs = newArrayList();
+ for (String name : privilegeNames) {
+ privs.add(manager.getPrivilege(name));
}
- return privs;
+ return privs.toArray(new Privilege[privs.size()]);
}
protected PrivilegeManager getPrivilegeManager(Root root) {
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=1524804&r1=1524803&r2=1524804&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:50:11 2013
@@ -30,6 +30,8 @@ import org.apache.jackrabbit.oak.util.Tr
import org.junit.After;
import org.junit.Test;
+import com.google.common.collect.Iterables;
+
import static java.util.Arrays.asList;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertTrue;
@@ -84,7 +86,8 @@ public class PrivilegeDefinitionWriterTe
Tree tmpTree = privRoot.getChild("tmp");
assertTrue(TreeUtil.getBoolean(tmpTree, REP_IS_ABSTRACT));
- assertArrayEquals(new String[] {JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL},
- TreeUtil.getStrings(tmpTree, REP_AGGREGATES));
+ assertArrayEquals(
+ new String[] {JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL},
+ Iterables.toArray(TreeUtil.getStrings(tmpTree, REP_AGGREGATES), String.class));
}
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java?rev=1524804&r1=1524803&r2=1524804&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserInitializerTest.java Thu Sep 19 18:50:11 2013
@@ -19,12 +19,15 @@ package org.apache.jackrabbit.oak.securi
import java.security.PrivilegedExceptionAction;
import java.util.HashMap;
import java.util.Map;
+
import javax.jcr.GuestCredentials;
import javax.jcr.SimpleCredentials;
import javax.security.auth.Subject;
import javax.security.auth.login.LoginException;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Iterables;
+
import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
@@ -126,8 +129,10 @@ public class UserInitializerTest extends
Tree princName = oakIndex.getChild("principalName");
assertIndexDefinition(princName, UserConstants.REP_PRINCIPAL_NAME, true);
- String[] declaringNtNames = TreeUtil.getStrings(princName, IndexConstants.DECLARING_NODE_TYPES);
- assertArrayEquals(new String[]{UserConstants.NT_REP_AUTHORIZABLE}, declaringNtNames);
+ Iterable<String> declaringNtNames = TreeUtil.getStrings(princName, IndexConstants.DECLARING_NODE_TYPES);
+ assertArrayEquals(
+ new String[]{UserConstants.NT_REP_AUTHORIZABLE},
+ Iterables.toArray(declaringNtNames, String.class));
Tree members = oakIndex.getChild("members");
assertIndexDefinition(members, UserConstants.REP_MEMBERS, false);
@@ -237,6 +242,8 @@ public class UserInitializerTest extends
assertTrue(tree.exists());
assertEquals(isUnique, TreeUtil.getBoolean(tree, IndexConstants.UNIQUE_PROPERTY_NAME));
- assertArrayEquals(propName, new String[]{propName}, TreeUtil.getStrings(tree, IndexConstants.PROPERTY_NAMES));
+ assertArrayEquals(
+ propName, new String[]{propName},
+ Iterables.toArray(TreeUtil.getStrings(tree, IndexConstants.PROPERTY_NAMES), String.class));
}
}