You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2012/08/07 17:54:41 UTC
svn commit: r1370326 - in /jackrabbit/trunk/jackrabbit-core/src:
main/java/org/apache/jackrabbit/core/
main/java/org/apache/jackrabbit/core/security/user/
test/java/org/apache/jackrabbit/core/security/user/
Author: angela
Date: Tue Aug 7 15:54:40 2012
New Revision: 1370326
URL: http://svn.apache.org/viewvc?rev=1370326&view=rev
Log:
Improvements for UserManagement implementation:
- move configuration code to UserManagerConfig
- rename public method getGroupMembershipSplitSize to getMemberSplitSize
- add method hasMemberSplitSize and replace usage of getGroupMembershipSplitSize() > 0
- remove old class name from javadoc in NodeCreationTest
Added:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerConfig.java
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/DefaultSecurityManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/UserPerWorkspaceSecurityManager.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserAccessControlProvider.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImporter.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserPerWorkspaceUserManager.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeCreationTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImporterTest.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/DefaultSecurityManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/DefaultSecurityManager.java?rev=1370326&r1=1370325&r2=1370326&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/DefaultSecurityManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/DefaultSecurityManager.java Tue Aug 7 15:54:40 2012
@@ -462,12 +462,6 @@ public class DefaultSecurityManager impl
*/
protected UserManagerImpl createUserManager(SessionImpl session) throws RepositoryException {
UserManagerConfig umc = getConfig().getUserManagerConfig();
- Properties params = (umc == null) ? null : umc.getParameters();
-
- // since users are stored in and retrieved from a dedicated workspace
- // only the system session assigned with that workspace will get the
- // system user manager (special implementation that asserts the existence
- // of the admin user).
UserManagerImpl um;
if (umc != null) {
Class<?>[] paramTypes = new Class[] {
@@ -476,12 +470,9 @@ public class DefaultSecurityManager impl
Properties.class,
MembershipCache.class};
um = (UserManagerImpl) umc.getUserManager(UserManagerImpl.class,
- paramTypes, session, adminId, params, getMembershipCache(session));
- // TODO: should we make sure the implementation doesn't allow
- // TODO: to change the autosave behavior? since the user manager
- // TODO: writes to a separate workspace this would cause troubles.
+ paramTypes, session, adminId, umc.getParameters(), getMembershipCache(session));
} else {
- um = new UserManagerImpl(session, adminId, params, getMembershipCache(session));
+ um = new UserManagerImpl(session, adminId, null, getMembershipCache(session));
}
if (umc != null && !(session instanceof SystemSession)) {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/UserPerWorkspaceSecurityManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/UserPerWorkspaceSecurityManager.java?rev=1370326&r1=1370325&r2=1370326&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/UserPerWorkspaceSecurityManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/UserPerWorkspaceSecurityManager.java Tue Aug 7 15:54:40 2012
@@ -219,8 +219,6 @@ public class UserPerWorkspaceSecurityMan
@Override
protected UserManagerImpl createUserManager(SessionImpl session) throws RepositoryException {
UserManagerConfig umc = getConfig().getUserManagerConfig();
- Properties params = (umc == null) ? null : umc.getParameters();
-
UserManagerImpl umgr;
// in contrast to the DefaultSecurityManager users are not retrieved
// from a dedicated workspace: the system session of each workspace must
@@ -232,9 +230,9 @@ public class UserPerWorkspaceSecurityMan
Properties.class,
MembershipCache.class};
umgr = (UserPerWorkspaceUserManager) umc.getUserManager(UserPerWorkspaceUserManager.class,
- paramTypes, session, adminId, params, getMembershipCache(session));
+ paramTypes, session, adminId, umc.getParameters(), getMembershipCache(session));
} else {
- umgr = new UserPerWorkspaceUserManager(session, adminId, params, getMembershipCache(session));
+ umgr = new UserPerWorkspaceUserManager(session, adminId, null, getMembershipCache(session));
}
if (umc != null && !(session instanceof SystemSession)) {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java?rev=1370326&r1=1370325&r2=1370326&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java Tue Aug 7 15:54:40 2012
@@ -202,7 +202,7 @@ class GroupImpl extends AuthorizableImpl
*/
private MembershipProvider getMembershipProvider(NodeImpl node) throws RepositoryException {
MembershipProvider msp;
- if (userManager.getGroupMembershipSplitSize() > 0) {
+ if (userManager.hasMemberSplitSize()) {
if (node.hasNode(N_MEMBERS) || !node.hasProperty(P_MEMBERS)) {
msp = new NodeBasedMembershipProvider(node);
} else {
@@ -214,7 +214,7 @@ class GroupImpl extends AuthorizableImpl
if (node.hasProperty(P_MEMBERS) && node.hasNode(N_MEMBERS)) {
log.warn("Found members node and members property on node {}. Ignoring {} members", node,
- userManager.getGroupMembershipSplitSize() > 0 ? "property" : "node");
+ userManager.hasMemberSplitSize() ? "property" : "node");
}
return msp;
@@ -267,7 +267,7 @@ class GroupImpl extends AuthorizableImpl
static PropertySequence getPropertySequence(Node nMembers, UserManagerImpl userManager) throws RepositoryException {
Comparator<String> order = Rank.comparableComparator();
- int maxChildren = userManager.getGroupMembershipSplitSize();
+ int maxChildren = userManager.getMemberSplitSize();
int minChildren = maxChildren / 2;
TreeManager treeManager = new BTreeManager(nMembers, minChildren, maxChildren, order,
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserAccessControlProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserAccessControlProvider.java?rev=1370326&r1=1370325&r2=1370326&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserAccessControlProvider.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserAccessControlProvider.java Tue Aug 7 15:54:40 2012
@@ -182,7 +182,7 @@ public class UserAccessControlProvider e
usersPath = (uMgr instanceof UserManagerImpl) ? ((UserManagerImpl) uMgr).getUsersPath() : UserConstants.USERS_PATH;
groupsPath = (uMgr instanceof UserManagerImpl) ? ((UserManagerImpl) uMgr).getGroupsPath() : UserConstants.GROUPS_PATH;
- membersInProperty = (!(uMgr instanceof UserManagerImpl)) || ((UserManagerImpl) uMgr).getGroupMembershipSplitSize() <= 0;
+ membersInProperty = !(uMgr instanceof UserManagerImpl) || !((UserManagerImpl) uMgr).hasMemberSplitSize();
if (configuration.containsKey(PARAM_ANONYMOUS_ID)) {
anonymousId = (String) configuration.get(PARAM_ANONYMOUS_ID);
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImporter.java?rev=1370326&r1=1370325&r2=1370326&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImporter.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImporter.java Tue Aug 7 15:54:40 2012
@@ -440,7 +440,7 @@ public class UserImporter implements Pro
log.info("ImportBehavior.BESTEFFORT: Found " + nonExisting.size() + " entries of rep:members pointing to non-existing authorizables. Adding to rep:members.");
final NodeImpl groupNode = ((AuthorizableImpl) gr).getNode();
- if (userManager.getGroupMembershipSplitSize() > 0) {
+ if (userManager.hasMemberSplitSize()) {
userManager.performProtectedOperation((SessionImpl) session, new SessionWriteOperation<Object>() {
public Boolean perform(SessionContext context) throws RepositoryException {
NodeImpl nMembers = (groupNode.hasNode(UserConstants.N_MEMBERS)
Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerConfig.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerConfig.java?rev=1370326&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerConfig.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerConfig.java Tue Aug 7 15:54:40 2012
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core.security.user;
+
+import org.apache.jackrabbit.core.security.user.action.AuthorizableAction;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Properties;
+
+/**
+ * Utility to retrieve configuration parameters for UserManagerImpl
+ */
+class UserManagerConfig {
+
+ private static final Logger log = LoggerFactory.getLogger(UserManagerImpl.class);
+
+ private final Properties config;
+ private final String adminId;
+ /**
+ * Authorizable actions that will all be executed upon creation and removal
+ * of authorizables in the order they are contained in the array.<p/>
+ * Note, that if {@link #isAutoSave() autosave} is turned on, the configured
+ * actions are executed before persisting the creation or removal.
+ */
+ private AuthorizableAction[] actions;
+
+ UserManagerConfig(Properties config, String adminId, AuthorizableAction[] actions) {
+ this.config = config;
+ this.adminId = adminId;
+ this.actions = (actions == null) ? new AuthorizableAction[0] : actions;
+ }
+
+ public <T> T getConfigValue(String key, T defaultValue) {
+ if (config != null && config.containsKey(key)) {
+ return convert(config.get(key), defaultValue);
+ } else {
+ return defaultValue;
+ }
+ }
+
+ public String getAdminId() {
+ return adminId;
+ }
+
+ public AuthorizableAction[] getAuthorizableActions() {
+ return actions;
+ }
+
+ public void setAuthorizableActions(AuthorizableAction[] actions) {
+ if (actions != null) {
+ this.actions = actions;
+ }
+ }
+
+ //--------------------------------------------------------< private >---
+ private <T> T convert(Object v, T defaultValue) {
+ if (v == null) {
+ return null;
+ }
+
+ T value;
+ String str = v.toString();
+ Class targetClass = (defaultValue == null) ? String.class : defaultValue.getClass();
+ try {
+ if (targetClass == String.class) {
+ value = (T) str;
+ } else if (targetClass == Integer.class) {
+ value = (T) Integer.valueOf(str);
+ } else if (targetClass == Long.class) {
+ value = (T) Long.valueOf(str);
+ } else if (targetClass == Double.class) {
+ value = (T) Double.valueOf(str);
+ } else if (targetClass == Boolean.class) {
+ value = (T) Boolean.valueOf(str);
+ } else {
+ // unsupported target type
+ log.warn("Unsupported target type {} for value {}", targetClass.getName(), v);
+ throw new IllegalArgumentException("Cannot convert config entry " + v + " to " + targetClass.getName());
+ }
+ } catch (NumberFormatException e) {
+ log.warn("Invalid value {}; cannot be parsed into {}", v, targetClass.getName());
+ value = defaultValue;
+ }
+
+ return value;
+ }
+}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java?rev=1370326&r1=1370325&r2=1370326&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java Tue Aug 7 15:54:40 2012
@@ -231,11 +231,13 @@ public class UserManagerImpl extends Pro
public static final String PARAM_AUTO_EXPAND_SIZE = "autoExpandSize";
/**
- * If this parameter is present group memberships are collected in a node
+ * If this parameter is present group members are collected in a node
* structure below {@link UserConstants#N_MEMBERS} instead of the default
* multi valued property {@link UserConstants#P_MEMBERS}. Its value determines
* the maximum number of member properties until additional intermediate nodes
- * are inserted. Valid values are integers > 4.
+ * are inserted. Valid values are integers > 4. The default value is 0 and
+ * indicates that the {@link UserConstants#P_MEMBERS} property is used to
+ * record group members.
*/
public static final String PARAM_GROUP_MEMBERSHIP_SPLIT_SIZE = "groupMembershipSplitSize";
@@ -245,51 +247,13 @@ public class UserManagerImpl extends Pro
private final String adminId;
private final NodeResolver authResolver;
private final NodeCreator nodeCreator;
+ private final UserManagerConfig config;
- /**
- * Configuration value defining the node where User nodes will be created.
- * Default value is {@link UserConstants#USERS_PATH}.
- */
private final String usersPath;
-
- /**
- * Configuration value defining the node where Group nodes will be created.
- * Default value is {@link UserConstants#GROUPS_PATH}.
- */
private final String groupsPath;
-
- /**
- * Flag indicating if {@link #getAuthorizable(String)} should be able to deal
- * with users or groups created with Jackrabbit < 2.0.<br>
- * As of 2.0 authorizables are created using a defined logic that allows
- * to retrieve them without searching/traversing. If this flag is
- * <code>true</code> this method will try to find authorizables using the
- * <code>authResolver</code> if not found otherwise.
- */
- private final boolean compatibleJR16;
-
- /**
- * Maximum number of properties on the group membership node structure under
- * {@link UserConstants#N_MEMBERS} until additional intermediate nodes are inserted.
- * If 0 (default), {@link UserConstants#P_MEMBERS} is used to record group
- * memberships.
- */
- private final int groupMembershipSplitSize;
-
- /**
- * The membership cache.
- */
private final MembershipCache membershipCache;
/**
- * Authorizable actions that will all be executed upon creation and removal
- * of authorizables in the order they are contained in the array.<p/>
- * Note, that if {@link #isAutoSave() autosave} is turned on, the configured
- * actions are executed before persisting the creation or removal.
- */
- private AuthorizableAction[] authorizableActions = new AuthorizableAction[0];
-
- /**
* Create a new <code>UserManager</code> with the default configuration.
*
* @param session The editing/reading session.
@@ -336,27 +300,31 @@ public class UserManagerImpl extends Pro
*/
public UserManagerImpl(SessionImpl session, String adminId, Properties config,
MembershipCache mCache) throws RepositoryException {
+ this(session, new UserManagerConfig(config, adminId, null), mCache);
+ }
+
+ /**
+ * Create a new <code>UserManager</code> for the given <code>session</code>.
+ *
+ * @param session The editing/reading session.
+ * @param config The user manager configuration.
+ * @param mCache The shared membership cache.
+ * @throws RepositoryException If an error occurs.
+ */
+ private UserManagerImpl(SessionImpl session, UserManagerConfig config, MembershipCache mCache) throws RepositoryException {
this.session = session;
- this.adminId = adminId;
+ this.adminId = config.getAdminId();
+ this.config = config;
nodeCreator = new NodeCreator(config);
- Object param = (config != null) ? config.get(PARAM_USERS_PATH) : null;
- usersPath = (param != null) ? param.toString() : USERS_PATH;
-
- param = (config != null) ? config.get(PARAM_GROUPS_PATH) : null;
- groupsPath = (param != null) ? param.toString() : GROUPS_PATH;
-
- param = (config != null) ? config.get(PARAM_COMPATIBLE_JR16) : null;
- compatibleJR16 = (param != null) && Boolean.parseBoolean(param.toString());
-
- param = (config != null) ? config.get(PARAM_GROUP_MEMBERSHIP_SPLIT_SIZE) : null;
- groupMembershipSplitSize = parseMembershipSplitSize(param);
+ this.usersPath = config.getConfigValue(PARAM_USERS_PATH, USERS_PATH);
+ this.groupsPath = config.getConfigValue(PARAM_GROUPS_PATH, GROUPS_PATH);
if (mCache != null) {
membershipCache = mCache;
} else {
- membershipCache = new MembershipCache(session, groupsPath, groupMembershipSplitSize > 0);
+ membershipCache = new MembershipCache(session, groupsPath, hasMemberSplitSize());
}
NodeResolver nr;
@@ -407,8 +375,25 @@ public class UserManagerImpl extends Pro
*
* @return The maximum number of group members before splitting up the structure.
*/
- public int getGroupMembershipSplitSize() {
- return groupMembershipSplitSize;
+ public int getMemberSplitSize() {
+ int splitSize = config.getConfigValue(PARAM_GROUP_MEMBERSHIP_SPLIT_SIZE, 0);
+ if (splitSize < 4) {
+ log.warn("Invalid value {} for {}. Expected integer >= 4", splitSize, PARAM_GROUP_MEMBERSHIP_SPLIT_SIZE);
+ splitSize = 0;
+ }
+ return splitSize;
+ }
+
+ /**
+ * Returns <code>true</code> if the split-member configuration parameter
+ * is greater or equal than 4 indicating that group members should be stored
+ * in a tree instead of a single multivalued property.
+ *
+ * @return true if group members are being stored in a tree instead of a
+ * single multivalued property.
+ */
+ public boolean hasMemberSplitSize() {
+ return getMemberSplitSize() >= 4;
}
/**
@@ -418,9 +403,7 @@ public class UserManagerImpl extends Pro
* @param authorizableActions An array of authorizable actions.
*/
public void setAuthorizableActions(AuthorizableAction[] authorizableActions) {
- if (authorizableActions != null) {
- this.authorizableActions = authorizableActions;
- }
+ config.setAuthorizableActions(authorizableActions);
}
//--------------------------------------------------------< UserManager >---
@@ -596,8 +579,7 @@ public class UserManagerImpl extends Pro
/**
* @see UserManager#createGroup(String)
*/
- public Group createGroup(String groupID)
- throws AuthorizableExistsException, RepositoryException {
+ public Group createGroup(String groupID) throws AuthorizableExistsException, RepositoryException {
return createGroup(groupID, new PrincipalImpl(groupID), null);
}
@@ -850,6 +832,7 @@ public class UserManagerImpl extends Pro
try {
n = session.getNodeById(nodeId);
} catch (ItemNotFoundException e) {
+ boolean compatibleJR16 = config.getConfigValue(PARAM_COMPATIBLE_JR16, false);
if (compatibleJR16) {
// backwards-compatibility with JR < 2.0 user/group structure that doesn't
// allow to determine existence of an authorizable from the id directly.
@@ -1037,27 +1020,6 @@ public class UserManagerImpl extends Pro
}
}
- private static int parseMembershipSplitSize(Object param) {
- int n = 0;
- if (param != null) {
- try {
- n = Integer.parseInt(param.toString());
- if (n < 4) {
- n = 0;
- }
- }
- catch (NumberFormatException e) {
- n = 0;
- }
- if (n == 0) {
- log.warn("Invalid value {} for {}. Expected integer >= 4",
- param.toString(), PARAM_GROUP_MEMBERSHIP_SPLIT_SIZE);
- }
- }
-
- return n;
- }
-
//--------------------------------------------------------------------------
/**
* Let the configured <code>AuthorizableAction</code>s perform additional
@@ -1069,7 +1031,7 @@ public class UserManagerImpl extends Pro
* @throws RepositoryException If an exception occurs.
*/
void onCreate(User user, String pw) throws RepositoryException {
- for (AuthorizableAction action : authorizableActions) {
+ for (AuthorizableAction action : config.getAuthorizableActions()) {
action.onCreate(user, pw, session);
}
}
@@ -1083,7 +1045,7 @@ public class UserManagerImpl extends Pro
* @throws RepositoryException If an exception occurs.
*/
void onCreate(Group group) throws RepositoryException {
- for (AuthorizableAction action : authorizableActions) {
+ for (AuthorizableAction action : config.getAuthorizableActions()) {
action.onCreate(group, session);
}
}
@@ -1097,7 +1059,7 @@ public class UserManagerImpl extends Pro
* @throws RepositoryException If an exception occurs.
*/
void onRemove(Authorizable authorizable) throws RepositoryException {
- for (AuthorizableAction action : authorizableActions) {
+ for (AuthorizableAction action : config.getAuthorizableActions()) {
action.onRemove(authorizable, session);
}
}
@@ -1112,7 +1074,7 @@ public class UserManagerImpl extends Pro
* @throws RepositoryException If an exception occurs.
*/
void onPasswordChange(User user, String password) throws RepositoryException {
- for (AuthorizableAction action : authorizableActions) {
+ for (AuthorizableAction action : config.getAuthorizableActions()) {
action.onPasswordChange(user, password, session);
}
}
@@ -1350,36 +1312,22 @@ public class UserManagerImpl extends Pro
// all child nodes.
private final long autoExpandSize;
- private NodeCreator(Properties config) {
+ private NodeCreator(UserManagerConfig config) {
int d = DEFAULT_DEPTH;
boolean expand = false;
long size = DEFAULT_SIZE;
if (config != null) {
- if (config.containsKey(PARAM_DEFAULT_DEPTH)) {
- try {
- d = Integer.parseInt(config.get(PARAM_DEFAULT_DEPTH).toString());
- if (d <= 0) {
- log.warn("Invalid defaultDepth '" + d + "' -> using default.");
- d = DEFAULT_DEPTH;
- }
- } catch (NumberFormatException e) {
- log.warn("Unable to parse defaultDepth config parameter -> using default.", e);
- }
+ d = config.getConfigValue(PARAM_DEFAULT_DEPTH, DEFAULT_DEPTH);
+ if (d <= 0) {
+ log.warn("Invalid defaultDepth '" + d + "' -> using default.");
+ d = DEFAULT_DEPTH;
}
- if (config.containsKey(PARAM_AUTO_EXPAND_TREE)) {
- expand = Boolean.parseBoolean(config.get(PARAM_AUTO_EXPAND_TREE).toString());
- }
- if (config.containsKey(PARAM_AUTO_EXPAND_SIZE)) {
- try {
- size = Integer.parseInt(config.get(PARAM_AUTO_EXPAND_SIZE).toString());
- if (expand && size <= 0) {
- log.warn("Invalid autoExpandSize '" + size + "' -> using default.");
- size = DEFAULT_SIZE;
- }
- } catch (NumberFormatException e) {
- log.warn("Unable to parse autoExpandSize config parameter -> using default.", e);
- }
+ expand = config.getConfigValue(PARAM_AUTO_EXPAND_TREE, false);
+ size = config.getConfigValue(PARAM_AUTO_EXPAND_SIZE, DEFAULT_SIZE);
+ if (expand && size <= 0) {
+ log.warn("Invalid autoExpandSize '" + size + "' -> using default.");
+ size = DEFAULT_SIZE;
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserPerWorkspaceUserManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserPerWorkspaceUserManager.java?rev=1370326&r1=1370325&r2=1370326&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserPerWorkspaceUserManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserPerWorkspaceUserManager.java Tue Aug 7 15:54:40 2012
@@ -117,6 +117,7 @@ public class UserPerWorkspaceUserManager
* @return The path of the node.
* @throws RepositoryException If an error occurs while retrieving the path.
*/
+ @Override
String getPath(Node authorizableNode) throws RepositoryException {
return authorizableNode.getPath();
}
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeCreationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeCreationTest.java?rev=1370326&r1=1370325&r2=1370326&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeCreationTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeCreationTest.java Tue Aug 7 15:54:40 2012
@@ -38,7 +38,7 @@ import java.util.Map;
import java.util.Properties;
/**
- * <code>IdResolverTest</code>...
+ * <code>NodeCreationTest</code>...
*/
public class NodeCreationTest extends AbstractUserTest {
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImporterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImporterTest.java?rev=1370326&r1=1370325&r2=1370326&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImporterTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImporterTest.java Tue Aug 7 15:54:40 2012
@@ -860,7 +860,7 @@ public class UserImporterTest extends Ab
}
public void testImportNonExistingMemberBestEffort() throws IOException, RepositoryException, SAXException, NotExecutableException {
- if (umgr.getGroupMembershipSplitSize() > 0) {
+ if (umgr.hasMemberSplitSize()) {
throw new NotExecutableException();
}
@@ -914,7 +914,7 @@ public class UserImporterTest extends Ab
String g1Id = "0120a4f9-196a-3f9e-b9f5-23f31f914da7";
String nonExistingId = "b2f5ff47-4366-31b6-a533-d8dc3614845d"; // groupId of 'g' group.
- if (umgr.getAuthorizable("g") != null || umgr.getGroupMembershipSplitSize() > 0) {
+ if (umgr.getAuthorizable("g") != null || umgr.hasMemberSplitSize()) {
throw new NotExecutableException();
}