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 2012/07/19 12:33:01 UTC
svn commit: r1363287 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak:
security/privilege/PrivilegeRegistry.java util/TODO.java
Author: jukka
Date: Thu Jul 19 10:33:00 2012
New Revision: 1363287
URL: http://svn.apache.org/viewvc?rev=1363287&view=rev
Log:
OAK-64: Privilege Management
Use the TODO class from OAK-193 to control the dummy registerDefinition() implementation.
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TODO.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java?rev=1363287&r1=1363286&r2=1363287&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java Thu Jul 19 10:33:00 2012
@@ -17,13 +17,17 @@
package org.apache.jackrabbit.oak.security.privilege;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.Callable;
+
import javax.annotation.Nonnull;
import javax.jcr.RepositoryException;
import org.apache.jackrabbit.oak.api.ContentSession;
import org.apache.jackrabbit.oak.util.ArrayUtils;
+import org.apache.jackrabbit.oak.util.TODO;
import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeDefinition;
import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeProvider;
@@ -60,7 +64,7 @@ public class PrivilegeRegistry implement
// TODO: define where custom privileges are being stored.
for (String privilegeName : SIMPLE_PRIVILEGES) {
- PrivilegeDefinition def = new PrivilegeDefinitionImpl(privilegeName, false, new String[0]);
+ PrivilegeDefinition def = new PrivilegeDefinitionImpl(privilegeName, false);
definitions.put(privilegeName, def);
}
@@ -70,11 +74,11 @@ public class PrivilegeRegistry implement
}
// TODO: jcr:all needs to be recalculated if custom privileges are registered
- definitions.put(JCR_ALL, new PrivilegeDefinitionImpl(JCR_ALL, false, new String[] {
+ definitions.put(JCR_ALL, new PrivilegeDefinitionImpl(JCR_ALL, false,
JCR_READ, JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL,
JCR_VERSION_MANAGEMENT, JCR_LOCK_MANAGEMENT, JCR_LIFECYCLE_MANAGEMENT,
JCR_RETENTION_MANAGEMENT, JCR_WORKSPACE_MANAGEMENT, JCR_NODE_TYPE_DEFINITION_MANAGEMENT,
- JCR_NAMESPACE_MANAGEMENT, REP_PRIVILEGE_MANAGEMENT, REP_WRITE}));
+ JCR_NAMESPACE_MANAGEMENT, REP_PRIVILEGE_MANAGEMENT, REP_WRITE));
}
//--------------------------------------------------< PrivilegeProvider >---
@@ -90,15 +94,22 @@ public class PrivilegeRegistry implement
}
@Override
- public PrivilegeDefinition registerDefinition(String privilegeName,
- boolean isAbstract,
- Set<String> declaredAggregateNames) throws RepositoryException {
+ public PrivilegeDefinition registerDefinition(
+ final String privilegeName, final boolean isAbstract,
+ final Set<String> declaredAggregateNames)
+ throws RepositoryException {
// TODO: check permission, validate and persist the custom definition
- PrivilegeDefinition definition = new PrivilegeDefinitionImpl(
- privilegeName, isAbstract,
- declaredAggregateNames.toArray(new String[declaredAggregateNames.size()]));
- definitions.put(privilegeName, definition);
- return definition;
+ return TODO.dummyImplementation().call(new Callable<PrivilegeDefinition>() {
+ @Override
+ public PrivilegeDefinition call() throws Exception {
+ PrivilegeDefinition definition = new PrivilegeDefinitionImpl(
+ privilegeName, isAbstract,
+ new HashSet<String>(declaredAggregateNames));
+ // TODO: update jcr:all
+ definitions.put(privilegeName, definition);
+ return definition;
+ }
+ });
}
@@ -111,10 +122,15 @@ public class PrivilegeRegistry implement
private final Set<String> declaredAggregateNames;
private PrivilegeDefinitionImpl(String name, boolean isAbstract,
- String[] declaredAggregateNames) {
+ Set<String> declaredAggregateNames) {
this.name = name;
this.isAbstract = isAbstract;
- this.declaredAggregateNames = ArrayUtils.toSet(declaredAggregateNames);
+ this.declaredAggregateNames = declaredAggregateNames;
+ }
+
+ private PrivilegeDefinitionImpl(String name, boolean isAbstract,
+ String... declaredAggregateNames) {
+ this(name, isAbstract, ArrayUtils.toSet(declaredAggregateNames));
}
//--------------------------------------------< PrivilegeDefinition >---
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TODO.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TODO.java?rev=1363287&r1=1363286&r2=1363287&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TODO.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/TODO.java Thu Jul 19 10:33:00 2012
@@ -16,8 +16,11 @@
*/
package org.apache.jackrabbit.oak.util;
+import java.util.concurrent.Callable;
+
import javax.jcr.UnsupportedRepositoryOperationException;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,6 +42,10 @@ public class TODO {
return new TODO("unimplemented");
}
+ public static TODO dummyImplementation() {
+ return new TODO("dummy implementation");
+ }
+
private final UnsupportedOperationException exception;
private final Logger logger;
@@ -68,4 +75,21 @@ public class TODO {
logger.warn(message, exception);
}
}
+
+ public <T> T call(Callable<T> callable)
+ throws UnsupportedRepositoryOperationException {
+ if (strict) {
+ throw new UnsupportedRepositoryOperationException(
+ message, exception);
+ } else if (log) {
+ logger.warn(message, exception);
+ }
+ try {
+ return callable.call();
+ } catch (Exception e) {
+ throw new UnsupportedRepositoryOperationException(
+ message + " failure", e);
+ }
+ }
+
}