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 2013/04/02 13:07:30 UTC
svn commit: r1463483 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user:
AuthorizableImpl.java AuthorizablePropertiesImpl.java UserManagerImpl.java
Author: angela
Date: Tue Apr 2 11:07:29 2013
New Revision: 1463483
URL: http://svn.apache.org/r1463483
Log:
OAK-690: adjust user management to reflect changes made to oak API
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizablePropertiesImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java?rev=1463483&r1=1463482&r2=1463483&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java Tue Apr 2 11:07:29 2013
@@ -47,6 +47,7 @@ abstract class AuthorizableImpl implemen
private static final Logger log = LoggerFactory.getLogger(AuthorizableImpl.class);
private final String id;
+ private final Tree tree;
private final String principalName;
private final UserManagerImpl userManager;
@@ -58,6 +59,7 @@ abstract class AuthorizableImpl implemen
checkValidTree(tree);
this.id = id;
+ this.tree = tree;
this.userManager = userManager;
PropertyState pNameProp = tree.getProperty(REP_PRINCIPAL_NAME);
@@ -179,7 +181,11 @@ abstract class AuthorizableImpl implemen
//--------------------------------------------------------------------------
@Nonnull
Tree getTree() {
- return userManager.getAuthorizableTree(id);
+ if (tree.isConnected()) {
+ return tree;
+ } else {
+ throw new IllegalStateException("Authorizable " + id + ": underlying tree has been disconnected.");
+ }
}
@Nonnull
@@ -218,11 +224,10 @@ abstract class AuthorizableImpl implemen
* Retrieve authorizable properties for property related operations.
*
* @return The authorizable properties for this user/group.
- * @throws RepositoryException If an error occurs.
*/
- private AuthorizableProperties getAuthorizableProperties() throws RepositoryException {
+ private AuthorizableProperties getAuthorizableProperties() {
if (properties == null) {
- properties = userManager.getAuthorizableProperties(id);
+ properties = new AuthorizablePropertiesImpl(this);
}
return properties;
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizablePropertiesImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizablePropertiesImpl.java?rev=1463483&r1=1463482&r2=1463483&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizablePropertiesImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizablePropertiesImpl.java Tue Apr 2 11:07:29 2013
@@ -52,15 +52,10 @@ class AuthorizablePropertiesImpl impleme
private static final Logger log = LoggerFactory.getLogger(AuthorizablePropertiesImpl.class);
- private final UserManagerImpl userManager;
- private final String id;
- private final ReadOnlyNodeTypeManager nodeTypeManager;
-
- AuthorizablePropertiesImpl(String id, UserManagerImpl userManager,
- ReadOnlyNodeTypeManager nodeTypeManager) {
- this.userManager = userManager;
- this.id = id;
- this.nodeTypeManager = nodeTypeManager;
+ private final AuthorizableImpl authorizable;
+
+ AuthorizablePropertiesImpl(AuthorizableImpl authorizable) {
+ this.authorizable = authorizable;
}
//---------------------------------------------< AuthorizableProperties >---
@@ -106,7 +101,7 @@ class AuthorizablePropertiesImpl impleme
Value[] values = null;
PropertyState property = getAuthorizableProperty(tree, getLocation(tree, relPath), true);
if (property != null) {
- NamePathMapper npMapper = userManager.getNamePathMapper();
+ NamePathMapper npMapper = authorizable.getUserManager().getNamePathMapper();
if (property.isArray()) {
List<Value> vs = ValueFactoryImpl.createValues(property, npMapper);
values = vs.toArray(new Value[vs.size()]);
@@ -184,7 +179,7 @@ class AuthorizablePropertiesImpl impleme
//------------------------------------------------------------< private >---
@Nonnull
private Tree getTree() {
- return userManager.getAuthorizableTree(id);
+ return authorizable.getTree();
}
/**
@@ -243,6 +238,7 @@ class AuthorizablePropertiesImpl impleme
log.debug("Unable to determine definition of authorizable property at " + propertyLocation.getPath());
return null;
}
+ ReadOnlyNodeTypeManager nodeTypeManager = authorizable.getUserManager().getNodeTypeManager();
PropertyDefinition def = nodeTypeManager.getDefinition(parent, property, true);
if (def.isProtected() || (authorizablePath.equals(parent.getPath())
&& !def.getDeclaringNodeType().isNodeType(UserConstants.NT_REP_AUTHORIZABLE))) {
@@ -253,8 +249,8 @@ class AuthorizablePropertiesImpl impleme
}
private void checkProtectedProperty(Tree parent, PropertyState property) throws RepositoryException {
- PropertyDefinition def =
- nodeTypeManager.getDefinition(parent, property, false);
+ ReadOnlyNodeTypeManager nodeTypeManager = authorizable.getUserManager().getNodeTypeManager();
+ PropertyDefinition def = nodeTypeManager.getDefinition(parent, property, false);
if (def.isProtected()) {
throw new ConstraintViolationException(
"Attempt to set an protected property " + property.getName());
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java?rev=1463483&r1=1463482&r2=1463483&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java Tue Apr 2 11:07:29 2013
@@ -71,6 +71,7 @@ public class UserManagerImpl implements
private final List<AuthorizableAction> authorizableActions;
private UserQueryManager queryManager;
+ private ReadOnlyNodeTypeManager ntMgr;
public UserManagerImpl(Root root, NamePathMapper namePathMapper, SecurityProvider securityProvider) {
this.root = root;
@@ -278,15 +279,6 @@ public class UserManagerImpl implements
}
//--------------------------------------------------------------------------
- @Nonnull
- Tree getAuthorizableTree(String id) {
- Tree tree = userProvider.getAuthorizable(id);
- if (tree == null) {
- throw new IllegalStateException("Authorizable not associated with an existing tree (WAITING FOR OAK-343 TO BE FIXED)");
- }
- return tree;
- }
-
@CheckForNull
Authorizable getAuthorizable(Tree tree) throws RepositoryException {
if (tree == null) {
@@ -296,13 +288,16 @@ public class UserManagerImpl implements
}
@Nonnull
- AuthorizableProperties getAuthorizableProperties(String id) throws RepositoryException {
- return new AuthorizablePropertiesImpl(id, this, ReadOnlyNodeTypeManager.getInstance(root, NamePathMapper.DEFAULT));
+ NamePathMapper getNamePathMapper() {
+ return namePathMapper;
}
@Nonnull
- NamePathMapper getNamePathMapper() {
- return namePathMapper;
+ ReadOnlyNodeTypeManager getNodeTypeManager() {
+ if (ntMgr == null) {
+ ntMgr = ReadOnlyNodeTypeManager.getInstance(root, NamePathMapper.DEFAULT);
+ }
+ return ntMgr;
}
@Nonnull