You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2018/03/19 20:51:16 UTC
svn commit: r1827242 - in /jackrabbit/trunk:
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/securit...
Author: stillalex
Date: Mon Mar 19 20:51:16 2018
New Revision: 1827242
URL: http://svn.apache.org/viewvc?rev=1827242&view=rev
Log:
JCR-4246 java.security.acl deprecated in Java 10, marked for removal in Java 11
Added:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/GroupPrincipals.java (with props)
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/JackrabbitRepositoryStub.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/authorization/acl/Entry.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalProvider.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleLoginModule.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleSecurityManager.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/ImpersonationImpl.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserAccessControlProvider.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/principal/PrincipalManagerTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/NodeImplTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/GroupImplTest.java
jackrabbit/trunk/jackrabbit-jcr-rmi/pom.xml
jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/LocalAdapterFactory.java
jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/principal/RemoteGroup.java
jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/ServerAdapterFactory.java
jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/principal/ServerGroup.java
jackrabbit/trunk/jackrabbit-jcr-rmi/src/test/java/org/apache/jackrabbit/rmi/RepositoryStubImpl.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=1827242&r1=1827241&r2=1827242&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 Mon Mar 19 20:51:16 2018
@@ -59,6 +59,7 @@ import org.apache.jackrabbit.core.securi
import org.apache.jackrabbit.core.security.principal.AbstractPrincipalProvider;
import org.apache.jackrabbit.core.security.principal.AdminPrincipal;
import org.apache.jackrabbit.core.security.principal.DefaultPrincipalProvider;
+import org.apache.jackrabbit.core.security.principal.GroupPrincipals;
import org.apache.jackrabbit.core.security.principal.PrincipalManagerImpl;
import org.apache.jackrabbit.core.security.principal.PrincipalProvider;
import org.apache.jackrabbit.core.security.principal.PrincipalProviderRegistry;
@@ -354,7 +355,7 @@ public class DefaultSecurityManager impl
Set<Principal> s = subject.getPrincipals(cl);
if (!s.isEmpty()) {
for (Principal p : s) {
- if (!(p instanceof java.security.acl.Group)) {
+ if (!GroupPrincipals.isGroup(p)) {
return p.getName();
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java Mon Mar 19 20:51:16 2018
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -33,6 +32,7 @@ import javax.jcr.Session;
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.apache.jackrabbit.core.security.principal.GroupPrincipals;
import org.apache.jackrabbit.test.NotExecutableException;
import org.apache.jackrabbit.test.RepositoryStub;
import org.apache.jackrabbit.test.RepositoryStubException;
@@ -208,7 +208,7 @@ public class JackrabbitRepositoryStub ex
if (session instanceof SessionImpl) {
for (Principal p : ((SessionImpl)session).getSubject().getPrincipals()) {
- if (! (p instanceof Group)) {
+ if (!GroupPrincipals.isGroup(p)) {
knownPrincipal = p;
}
}
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=1827242&r1=1827241&r2=1827242&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 Mon Mar 19 20:51:16 2018
@@ -25,6 +25,7 @@ import org.apache.jackrabbit.core.securi
import org.apache.jackrabbit.core.security.authorization.WorkspaceAccessManager;
import org.apache.jackrabbit.core.security.principal.AbstractPrincipalProvider;
import org.apache.jackrabbit.core.security.principal.DefaultPrincipalProvider;
+import org.apache.jackrabbit.core.security.principal.GroupPrincipals;
import org.apache.jackrabbit.core.security.principal.PrincipalManagerImpl;
import org.apache.jackrabbit.core.security.principal.PrincipalProvider;
import org.apache.jackrabbit.core.security.principal.PrincipalProviderRegistry;
@@ -40,7 +41,6 @@ import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.security.auth.Subject;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -361,7 +361,7 @@ public class UserPerWorkspaceSecurityMan
} else {
UserManager umgr = UserPerWorkspaceSecurityManager.this.getSystemUserManager(workspaceName);
for (Principal principal : principals) {
- if (!(principal instanceof Group)) {
+ if (!GroupPrincipals.isGroup(principal)) {
// check if the workspace identified by the given workspace
// name contains a user with this principal
if (umgr.getAuthorizable(principal) != null) {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/Entry.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/Entry.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/Entry.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/Entry.java Mon Mar 19 20:51:16 2018
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.core.security.authorization.acl;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.ArrayList;
import java.util.List;
import javax.jcr.NodeIterator;
@@ -33,6 +32,7 @@ import org.apache.jackrabbit.core.securi
import org.apache.jackrabbit.core.security.authorization.GlobPattern;
import org.apache.jackrabbit.core.security.authorization.PrivilegeBits;
import org.apache.jackrabbit.core.security.authorization.PrivilegeManagerImpl;
+import org.apache.jackrabbit.core.security.principal.GroupPrincipals;
import org.apache.jackrabbit.core.value.InternalValue;
import org.apache.jackrabbit.spi.Name;
import org.slf4j.Logger;
@@ -87,7 +87,7 @@ class Entry implements AccessControlCons
boolean isGroupEntry = false;
Principal princ = principalMgr.getPrincipal(principalName);
if (princ != null) {
- isGroupEntry = (princ instanceof Group);
+ isGroupEntry = GroupPrincipals.isGroup(princ);
}
InternalValue[] privValues = aceNode.getProperty(P_PRIVILEGES).internalGetValues();
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/EveryonePrincipal.java Mon Mar 19 20:51:16 2018
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.core.security.principal;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.principal.JackrabbitPrincipal;
import java.security.Principal;
@@ -24,7 +25,7 @@ import java.util.Enumeration;
/**
* The EveryonePrincipal contains all principals (excluding itself).
*/
-public final class EveryonePrincipal implements java.security.acl.Group, JackrabbitPrincipal {
+public final class EveryonePrincipal implements java.security.acl.Group, GroupPrincipal, JackrabbitPrincipal {
public static final String NAME = "everyone";
private static final EveryonePrincipal INSTANCE = new EveryonePrincipal();
Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/GroupPrincipals.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/GroupPrincipals.java?rev=1827242&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/GroupPrincipals.java (added)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/GroupPrincipals.java Mon Mar 19 20:51:16 2018
@@ -0,0 +1,61 @@
+package org.apache.jackrabbit.core.security.principal;
+
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Collections;
+import java.util.Enumeration;
+
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
+
+/**
+ * Helper class to deal with the migration between the 2 types of groups
+ *
+ */
+public final class GroupPrincipals {
+
+ private GroupPrincipals() {
+ }
+
+ /**
+ * Checks if the provided principal is a group.
+ *
+ * @param principal
+ * to be checked.
+ *
+ * @return true if the principal is of type group.
+ */
+ public static boolean isGroup(Principal principal) {
+ return principal instanceof Group || principal instanceof GroupPrincipal;
+ }
+
+ /**
+ * Returns an enumeration of the members in the group.
+ * @param principal the principal whose membership is listed.
+ * @return an enumeration of the group members.
+ */
+ public static Enumeration<? extends Principal> members(Principal principal) {
+ if (principal instanceof Group) {
+ return ((Group) principal).members();
+ }
+ if (principal instanceof GroupPrincipal) {
+ return ((GroupPrincipal) principal).members();
+ }
+ return Collections.emptyEnumeration();
+ }
+
+ /**
+ * Returns true if the passed principal is a member of the group.
+ * @param principal the principal whose members are being checked.
+ * @param member the principal whose membership is to be checked.
+ * @return true if the principal is a member of this group, false otherwise.
+ */
+ public static boolean isMember(Principal principal, Principal member) {
+ if (principal instanceof Group) {
+ return ((Group) principal).isMember(member);
+ }
+ if (principal instanceof GroupPrincipal) {
+ return ((GroupPrincipal) principal).isMember(member);
+ }
+ return false;
+ }
+}
Propchange: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/GroupPrincipals.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerImpl.java Mon Mar 19 20:51:16 2018
@@ -27,6 +27,7 @@ import java.util.List;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.principal.ItemBasedPrincipal;
import org.apache.jackrabbit.api.security.principal.JackrabbitPrincipal;
import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
@@ -190,17 +191,16 @@ public class PrincipalManagerImpl implem
* everyone principal.
*/
private Principal disguise(Principal principal, PrincipalProvider provider) {
- if (!(principal instanceof Group) || principal instanceof EveryonePrincipal) {
+ if (!GroupPrincipals.isGroup(principal) || principal instanceof EveryonePrincipal) {
// nothing to do.
return principal;
}
- Group gr = (Group) principal;
// make sure all groups except for the 'everyone' group expose only
// principals visible to the session.
if (principal instanceof ItemBasedPrincipal) {
- return new ItemBasedCheckedGroup(gr, provider);
+ return new ItemBasedCheckedGroup(principal, provider);
} else {
- return new CheckedGroup(gr, provider);
+ return new CheckedGroup(principal, provider);
}
}
@@ -212,12 +212,12 @@ public class PrincipalManagerImpl implem
* due to the fact, that the principal provider is not bound to a particular
* Session object.
*/
- private class CheckedGroup implements Group, JackrabbitPrincipal {
+ private class CheckedGroup implements Group, GroupPrincipal, JackrabbitPrincipal {
- final Group delegatee;
+ final Principal delegatee;
private final PrincipalProvider provider;
- private CheckedGroup(Group delegatee, PrincipalProvider provider) {
+ private CheckedGroup(Principal delegatee, PrincipalProvider provider) {
this.delegatee = delegatee;
this.provider = provider;
}
@@ -230,12 +230,13 @@ public class PrincipalManagerImpl implem
throw new UnsupportedOperationException("Not implemented");
}
+ @Override
public boolean isMember(Principal member) {
- return delegatee.isMember(member);
+ return GroupPrincipals.isMember(delegatee, member);
}
public Enumeration<? extends Principal> members() {
- Iterator<? extends Principal> it = Collections.list(delegatee.members()).iterator();
+ Iterator<? extends Principal> it = Collections.list(GroupPrincipals.members(delegatee)).iterator();
final PrincipalIterator members = new CheckedPrincipalIterator(it, provider);
return new Enumeration<Principal>() {
public boolean hasMoreElements() {
@@ -268,7 +269,7 @@ public class PrincipalManagerImpl implem
*/
private class ItemBasedCheckedGroup extends CheckedGroup implements ItemBasedPrincipal {
- private ItemBasedCheckedGroup(Group delegatee, PrincipalProvider provider) {
+ private ItemBasedCheckedGroup(Principal delegatee, PrincipalProvider provider) {
super(delegatee, provider);
if (!(delegatee instanceof ItemBasedPrincipal)) {
throw new IllegalArgumentException();
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalProvider.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalProvider.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/PrincipalProvider.java Mon Mar 19 20:51:16 2018
@@ -81,7 +81,8 @@ public interface PrincipalProvider {
/**
* Returns an iterator over all group principals for which the given
* principal is either direct or indirect member of. If a principal is
- * a direct member of a group, then <code>{@link java.security.acl.Group#isMember(Principal)}</code>
+ * a direct member of a group, then
+ * <code>{@link org.apache.jackrabbit.api.security.principal.GroupPrincipal#isMember(Principal)}</code>
* evaluates to <code>true</code>. A principal is an indirect member of a
* group if any of its groups (to any degree of separation) is direct member
* of the group.
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleLoginModule.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleLoginModule.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleLoginModule.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleLoginModule.java Mon Mar 19 20:51:16 2018
@@ -18,6 +18,7 @@ package org.apache.jackrabbit.core.secur
import org.apache.jackrabbit.core.security.authentication.AbstractLoginModule;
import org.apache.jackrabbit.core.security.authentication.Authentication;
+import org.apache.jackrabbit.core.security.principal.GroupPrincipals;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,7 +29,6 @@ import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.LoginException;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Map;
/**
@@ -52,7 +52,7 @@ public class SimpleLoginModule extends A
*/
@Override
protected boolean impersonate(Principal principal, Credentials credentials) throws RepositoryException, LoginException {
- if (principal instanceof Group) {
+ if (GroupPrincipals.isGroup(principal)) {
return false;
}
Subject impersSubject = getImpersonatorSubject(credentials);
@@ -64,7 +64,7 @@ public class SimpleLoginModule extends A
*/
@Override
protected Authentication getAuthentication(Principal principal, Credentials creds) throws RepositoryException {
- if (principal instanceof Group) {
+ if (GroupPrincipals.isGroup(principal)) {
return null;
}
return new Authentication() {
@@ -93,7 +93,7 @@ public class SimpleLoginModule extends A
protected Principal getPrincipal(Credentials credentials) {
String userId = getUserID(credentials);
Principal principal = principalProvider.getPrincipal(userId);
- if (principal == null || principal instanceof Group) {
+ if (principal == null || GroupPrincipals.isGroup(principal)) {
// no matching user principal
return null;
} else {
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleSecurityManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleSecurityManager.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleSecurityManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleSecurityManager.java Mon Mar 19 20:51:16 2018
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.core.security.simple;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -56,6 +55,7 @@ import org.apache.jackrabbit.core.securi
import org.apache.jackrabbit.core.security.authorization.WorkspaceAccessManager;
import org.apache.jackrabbit.core.security.principal.AdminPrincipal;
import org.apache.jackrabbit.core.security.principal.EveryonePrincipal;
+import org.apache.jackrabbit.core.security.principal.GroupPrincipals;
import org.apache.jackrabbit.core.security.principal.PrincipalIteratorAdapter;
import org.apache.jackrabbit.core.security.principal.PrincipalManagerImpl;
import org.apache.jackrabbit.core.security.principal.PrincipalProvider;
@@ -272,7 +272,7 @@ public class SimpleSecurityManager imple
// are the same (not totally correct) and thus return the name
// of the first non-group principal.
for (Principal p : subject.getPrincipals()) {
- if (!(p instanceof Group)) {
+ if (!GroupPrincipals.isGroup(p)) {
uid = p.getName();
break;
}
@@ -338,8 +338,8 @@ public class SimpleSecurityManager imple
Principal p = getPrincipal(simpleFilter);
if (p == null) {
return PrincipalIteratorAdapter.EMPTY;
- } else if (p instanceof Group && searchType == PrincipalManager.SEARCH_TYPE_NOT_GROUP ||
- !(p instanceof Group) && searchType == PrincipalManager.SEARCH_TYPE_GROUP) {
+ } else if (GroupPrincipals.isGroup(p) && searchType == PrincipalManager.SEARCH_TYPE_NOT_GROUP ||
+ !GroupPrincipals.isGroup(p) && searchType == PrincipalManager.SEARCH_TYPE_GROUP) {
return PrincipalIteratorAdapter.EMPTY;
} else {
return new PrincipalIteratorAdapter(Collections.singletonList(p));
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=1827242&r1=1827241&r2=1827242&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 Mon Mar 19 20:51:16 2018
@@ -38,6 +38,7 @@ import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.api.security.user.Group;
import org.apache.jackrabbit.api.security.user.UserManager;
@@ -290,7 +291,7 @@ class GroupImpl extends AuthorizableImpl
/**
* Principal Implementation
*/
- private class NodeBasedGroup extends NodeBasedPrincipal implements java.security.acl.Group {
+ private class NodeBasedGroup extends NodeBasedPrincipal implements java.security.acl.Group, GroupPrincipal {
private NodeBasedGroup(String name) {
super(name);
@@ -308,10 +309,21 @@ class GroupImpl extends AuthorizableImpl
}
/**
+ * @return Always <code>false</code>. Group membership must be edited
+ * using the enclosing <code>GroupImpl</code> object.
+ * @see java.security.acl.Group#isMember(Principal)
+ */
+ public boolean removeMember(Principal user) {
+ return false;
+ }
+
+ //----------------------------------------------------------< GroupPrincipal >---
+
+ /**
* Returns true, if the given <code>Principal</code> is represented by
* a Authorizable, that is a member of the underlying UserGroup.
*
- * @see java.security.acl.Group#isMember(Principal)
+ * @see org.apache.jackrabbit.api.security.principal.GroupPrincipal#isMember(Principal)
*/
public boolean isMember(Principal member) {
// shortcut for everyone group -> avoid collecting all members
@@ -329,19 +341,10 @@ class GroupImpl extends AuthorizableImpl
}
/**
- * @return Always <code>false</code>. Group membership must be edited
- * using the enclosing <code>GroupImpl</code> object.
- * @see java.security.acl.Group#isMember(Principal)
- */
- public boolean removeMember(Principal user) {
- return false;
- }
-
- /**
* Return all principals that refer to every member of the underlying
* user group.
*
- * @see java.security.acl.Group#members()
+ * @see org.apache.jackrabbit.api.security.principal.GroupPrincipal#members()
*/
public Enumeration<? extends Principal> members() {
return Collections.enumeration(getMembers());
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java Mon Mar 19 20:51:16 2018
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.core.security.user;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.HashSet;
import java.util.Set;
@@ -31,6 +30,7 @@ import org.apache.jackrabbit.api.securit
import org.apache.jackrabbit.api.security.user.Impersonation;
import org.apache.jackrabbit.core.NodeImpl;
import org.apache.jackrabbit.core.PropertyImpl;
+import org.apache.jackrabbit.core.security.principal.GroupPrincipals;
import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
import org.apache.jackrabbit.core.security.principal.PrincipalIteratorAdapter;
import org.apache.jackrabbit.value.StringValue;
@@ -145,7 +145,7 @@ class ImpersonationImpl implements Imper
if (!allows) {
// check if subject belongs to administrator user
for (Principal p : subject.getPrincipals()) {
- if (p instanceof Group) {
+ if (GroupPrincipals.isGroup(p)) {
continue;
}
Authorizable a = userManager.getAuthorizable(p);
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=1827242&r1=1827241&r2=1827242&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 Mon Mar 19 20:51:16 2018
@@ -37,6 +37,7 @@ import org.apache.jackrabbit.core.securi
import org.apache.jackrabbit.core.security.authorization.PrivilegeBits;
import org.apache.jackrabbit.core.security.authorization.PrivilegeManagerImpl;
import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
+import org.apache.jackrabbit.core.security.principal.GroupPrincipals;
import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.Path;
@@ -54,7 +55,6 @@ import javax.jcr.security.AccessControlP
import javax.jcr.security.Privilege;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -271,7 +271,7 @@ public class UserAccessControlProvider e
try {
UserManager uMgr = session.getUserManager();
for (Principal p : principals) {
- if (!(p instanceof Group) && p instanceof ItemBasedPrincipal
+ if (!(GroupPrincipals.isGroup(p)) && p instanceof ItemBasedPrincipal
&& uMgr.getAuthorizable(p) != null) {
return (ItemBasedPrincipal) p;
}
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/principal/PrincipalManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/principal/PrincipalManagerTest.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/principal/PrincipalManagerTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/principal/PrincipalManagerTest.java Mon Mar 19 20:51:16 2018
@@ -24,7 +24,6 @@ import org.apache.jackrabbit.test.NotExe
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;
@@ -35,7 +34,7 @@ import java.util.Set;
public class PrincipalManagerTest extends AbstractJCRTest {
private PrincipalManager principalMgr;
- private Group everyone;
+ private GroupPrincipal everyone;
@Override
protected void setUp() throws Exception {
@@ -45,7 +44,7 @@ public class PrincipalManagerTest extend
throw new NotExecutableException();
}
principalMgr = ((JackrabbitSession) superuser).getPrincipalManager();
- everyone = (Group) principalMgr.getEveryone();
+ everyone = (GroupPrincipal) principalMgr.getEveryone();
}
private static Principal[] getPrincipals(Session session) {
@@ -55,7 +54,7 @@ public class PrincipalManagerTest extend
}
private static boolean isGroup(Principal p) {
- return p instanceof java.security.acl.Group;
+ return p instanceof GroupPrincipal;
}
public void testGetEveryone() {
@@ -145,7 +144,7 @@ public class PrincipalManagerTest extend
while (it.hasNext()) {
Principal p = it.nextPrincipal();
if (isGroup(p) && !p.equals(principalMgr.getEveryone())) {
- Enumeration<? extends Principal> en = ((java.security.acl.Group) p).members();
+ Enumeration<? extends Principal> en = ((GroupPrincipal) p).members();
while (en.hasMoreElements()) {
Principal memb = en.nextElement();
assertTrue(principalMgr.hasPrincipal(memb.getName()));
@@ -198,7 +197,7 @@ public class PrincipalManagerTest extend
assertTrue(isGroup(p));
- Enumeration<? extends Principal> members = ((java.security.acl.Group) p).members();
+ Enumeration<? extends Principal> members = ((GroupPrincipal) p).members();
while (members.hasMoreElements()) {
Principal memb = members.nextElement();
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/GroupTest.java Mon Mar 19 20:51:16 2018
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.api.security.user;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.test.NotExecutableException;
import javax.jcr.RepositoryException;
@@ -417,8 +418,8 @@ public class GroupTest extends AbstractU
newGroup2.addMember(auth);
save(superuser);
- java.security.acl.Group ngPrincipal = (java.security.acl.Group) newGroup.getPrincipal();
- java.security.acl.Group ng2Principal = (java.security.acl.Group) newGroup2.getPrincipal();
+ GroupPrincipal ngPrincipal = (GroupPrincipal) newGroup.getPrincipal();
+ GroupPrincipal ng2Principal = (GroupPrincipal) newGroup2.getPrincipal();
assertFalse(ng2Principal.isMember(ngPrincipal));
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/NodeImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/NodeImplTest.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/NodeImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/NodeImplTest.java Mon Mar 19 20:51:16 2018
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.core;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Calendar;
import javax.jcr.ItemExistsException;
@@ -35,6 +34,7 @@ import javax.jcr.security.Privilege;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
import org.apache.jackrabbit.commons.JcrUtils;
+import org.apache.jackrabbit.core.security.principal.GroupPrincipals;
import org.apache.jackrabbit.test.AbstractJCRTest;
import org.apache.jackrabbit.test.NotExecutableException;
import org.apache.jackrabbit.test.RepositoryHelper;
@@ -89,7 +89,7 @@ public class NodeImplTest extends Abstra
SessionImpl s = (SessionImpl) helper.getReadOnlySession();
try {
for (Principal p : s.getSubject().getPrincipals()) {
- if (!(p instanceof Group)) {
+ if (!GroupPrincipals.isGroup(p)) {
return p;
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java Mon Mar 19 20:51:16 2018
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.core.secur
import org.apache.jackrabbit.api.JackrabbitSession;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
import org.apache.jackrabbit.core.SessionImpl;
@@ -34,12 +35,9 @@ import javax.jcr.Value;
import javax.jcr.security.AccessControlEntry;
import javax.jcr.security.Privilege;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
/**
* <code>ACLTemplateTest</code>...
@@ -145,7 +143,7 @@ public class ACLTemplateTest extends Abs
Principal grPrincipal = null;
PrincipalIterator it = pMgr.findPrincipals("", PrincipalManager.SEARCH_TYPE_GROUP);
while (it.hasNext()) {
- Group gr = (Group) it.nextPrincipal();
+ GroupPrincipal gr = (GroupPrincipal) it.nextPrincipal();
if (!everyone.equals(gr)) {
grPrincipal = gr;
}
@@ -168,7 +166,7 @@ public class ACLTemplateTest extends Abs
public void testSetEntryForGroupPrincipal() throws RepositoryException, NotExecutableException {
JackrabbitAccessControlList pt = createEmptyTemplate(getTestPath());
Privilege[] privs = privilegesFromName(Privilege.JCR_READ);
- Group grPrincipal = (Group) principalMgr.getEveryone();
+ GroupPrincipal grPrincipal = (GroupPrincipal) principalMgr.getEveryone();
// adding allow-entry must succeed
assertTrue(pt.addAccessControlEntry(grPrincipal, privs));
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerTest.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/PrincipalManagerTest.java Mon Mar 19 20:51:16 2018
@@ -17,12 +17,12 @@
package org.apache.jackrabbit.core.security.principal;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Properties;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.principal.JackrabbitPrincipal;
import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
import org.apache.jackrabbit.test.AbstractJCRTest;
@@ -36,7 +36,7 @@ import org.mockito.Mockito;
public class PrincipalManagerTest extends AbstractJCRTest {
private static final String TESTGROUP_NAME = "org.apache.jackrabbit.core.security.principal.PrincipalManagerTest.testgroup";
- private static final Group TESTGROUP = Mockito.mock(Group.class);
+ private static final GroupPrincipal TESTGROUP = Mockito.mock(GroupPrincipal.class);
private static class CustomPrincipalProvider extends AbstractPrincipalProvider {
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/DefaultPrincipalProviderTest.java Mon Mar 19 20:51:16 2018
@@ -22,6 +22,7 @@ import java.util.Set;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
import org.apache.jackrabbit.api.security.user.AbstractUserTest;
import org.apache.jackrabbit.api.security.user.Authorizable;
@@ -163,7 +164,7 @@ public class DefaultPrincipalProviderTes
try {
Principal p = principalProvider.getPrincipal(testName);
assertNotNull(p);
- assertTrue(p instanceof java.security.acl.Group);
+ assertTrue(p instanceof GroupPrincipal);
} finally {
a.remove();
save(superuser);
@@ -175,7 +176,7 @@ public class DefaultPrincipalProviderTes
try {
Principal p = principalProvider.getPrincipal(testName);
assertNotNull(p);
- assertFalse(p instanceof java.security.acl.Group);
+ assertFalse(p instanceof GroupPrincipal);
} finally {
a.remove();
save(superuser);
@@ -245,15 +246,15 @@ public class DefaultPrincipalProviderTes
save(superuser);
Principal groupPrincipal = principalProvider.getPrincipal(g.getPrincipal().getName());
- assertTrue(groupPrincipal instanceof java.security.acl.Group);
- assertTrue(((java.security.acl.Group) groupPrincipal).isMember(u.getPrincipal()));
+ assertTrue(groupPrincipal instanceof GroupPrincipal);
+ assertTrue(((GroupPrincipal) groupPrincipal).isMember(u.getPrincipal()));
// remove the user from the group and assert the user is no longer a member of the group
g.removeMember(u);
save(superuser);
groupPrincipal = principalProvider.getPrincipal(g.getPrincipal().getName());
- assertFalse(((java.security.acl.Group) groupPrincipal).isMember(u.getPrincipal()));
+ assertFalse(((GroupPrincipal) groupPrincipal).isMember(u.getPrincipal()));
} finally {
if (null != g) { g.remove(); }
if (null != u) { u.remove(); }
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/GroupImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/GroupImplTest.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/GroupImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/GroupImplTest.java Mon Mar 19 20:51:16 2018
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.core.security.user;
import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.principal.ItemBasedPrincipal;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
import org.apache.jackrabbit.api.security.user.AbstractUserTest;
@@ -109,7 +110,7 @@ public class GroupImplTest extends Abstr
g = userMgr.createGroup(EveryonePrincipal.NAME);
save(superuser);
- java.security.acl.Group principal = (java.security.acl.Group) g.getPrincipal();
+ GroupPrincipal principal = (GroupPrincipal) g.getPrincipal();
assertTrue(principal.isMember(new Principal() {
public String getName() {
Modified: jackrabbit/trunk/jackrabbit-jcr-rmi/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-rmi/pom.xml?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-rmi/pom.xml (original)
+++ jackrabbit/trunk/jackrabbit-jcr-rmi/pom.xml Mon Mar 19 20:51:16 2018
@@ -53,7 +53,7 @@
<Bundle-Category>jcr,jackrabbit</Bundle-Category>
<Bundle-DocURL>http://jackrabbit.apache.org/</Bundle-DocURL>
<Export-Package>
- org.apache.jackrabbit.rmi.*;version=3.0.0
+ org.apache.jackrabbit.rmi.*;version=3.1.0
</Export-Package>
<!-- optional resolution XA -->
<Import-Package>
Modified: jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/LocalAdapterFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/LocalAdapterFactory.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/LocalAdapterFactory.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/client/LocalAdapterFactory.java Mon Mar 19 20:51:16 2018
@@ -403,7 +403,7 @@ public interface LocalAdapterFactory {
* Factory method for creating a local adapter for a remote principal.
* <p>
* If <code>remote</code> is a {@link RemoteGroup} the
- * principal returned implements the <code>java.security.acl.Group</code>
+ * principal returned implements the <code>org.apache.jackrabbit.api.security.principal.GroupPrincipal</code>
* interface.
*
* @param remote principal
@@ -418,7 +418,7 @@ public interface LocalAdapterFactory {
* Each entry in the <code>remote</code> iterator which is a
* {@link RemoteGroup} will be
* provided as a principal implementing the
- * <code>java.security.acl.Group</code> interface.
+ * <code>org.apache.jackrabbit.api.security.principal.GroupPrincipal</code> interface.
*
* @param remote remote principal iterator
* @return local principal iterator
Modified: jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/principal/RemoteGroup.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/principal/RemoteGroup.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/principal/RemoteGroup.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/remote/principal/RemoteGroup.java Mon Mar 19 20:51:16 2018
@@ -22,7 +22,7 @@ import java.rmi.RemoteException;
import org.apache.jackrabbit.rmi.remote.RemoteIterator;
/**
- * Remote version of the JCR {@link java.security.acl.Group Group} interface.
+ * Remote version of the JCR {@link org.apache.jackrabbit.api.security.principal.GroupPrincipal GroupPrincipal} interface.
* Used by the {@link org.apache.jackrabbit.rmi.server.principal.ServerGroup
* ServerGroup} and
* {@link org.apache.jackrabbit.rmi.client.principal.ClientGroup ClientGroup}
@@ -36,19 +36,19 @@ import org.apache.jackrabbit.rmi.remote.
* returned as remote references to the corresponding remote interface. RMI
* errors are signaled with RemoteExceptions.
*
- * @see java.security.acl.Group
+ * @see org.apache.jackrabbit.api.security.principal.GroupPrincipal
* @see org.apache.jackrabbit.rmi.client.principal.ClientGroup
* @see org.apache.jackrabbit.rmi.server.principal.ServerGroup
*/
public interface RemoteGroup extends RemotePrincipal {
/**
- * @see java.security.acl.Group#isMember(java.security.Principal)
+ * @see org.apache.jackrabbit.api.security.principal.GroupPrincipal#isMember(java.security.Principal)
*/
boolean isMember(String member) throws RemoteException;
/**
- * @see java.security.acl.Group#members()
+ * @see org.apache.jackrabbit.api.security.principal.GroupPrincipal#members()
*/
RemoteIterator members() throws RemoteException;
Modified: jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/ServerAdapterFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/ServerAdapterFactory.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/ServerAdapterFactory.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/ServerAdapterFactory.java Mon Mar 19 20:51:16 2018
@@ -18,7 +18,6 @@ package org.apache.jackrabbit.rmi.server
import java.rmi.RemoteException;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -514,8 +513,8 @@ public class ServerAdapterFactory implem
}
public RemotePrincipal getRemotePrincipal(final Principal principal) throws RemoteException {
- if (principal instanceof Group) {
- return new ServerGroup((Group) principal, this);
+ if (ServerGroup.isGroup(principal)) {
+ return new ServerGroup(principal, this);
}
return new ServerPrincipal(principal, this);
Modified: jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/principal/ServerGroup.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/principal/ServerGroup.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/principal/ServerGroup.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-rmi/src/main/java/org/apache/jackrabbit/rmi/server/principal/ServerGroup.java Mon Mar 19 20:51:16 2018
@@ -21,9 +21,11 @@ package org.apache.jackrabbit.rmi.server
import java.rmi.RemoteException;
import java.security.Principal;
import java.security.acl.Group;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.rmi.remote.RemoteIterator;
import org.apache.jackrabbit.rmi.remote.principal.RemoteGroup;
import org.apache.jackrabbit.rmi.server.RemoteAdapterFactory;
@@ -35,13 +37,18 @@ public class ServerGroup extends ServerP
super(principal, factory);
}
+ public ServerGroup(final Principal principal, final RemoteAdapterFactory factory)
+ throws RemoteException {
+ super(principal, factory);
+ }
+
public boolean isMember(String member) {
- return isMember(member, (Group) getPrincipal());
+ return isMember(member, getPrincipal());
}
public RemoteIterator members() throws RemoteException {
Iterator<Principal> members = new Iterator<Principal>() {
- final Enumeration<? extends Principal> base = ((Group) getPrincipal()).members();
+ final Enumeration<? extends Principal> base = members(getPrincipal());
public boolean hasNext() {
return base.hasMoreElements();
@@ -58,19 +65,32 @@ public class ServerGroup extends ServerP
return getFactory().getRemotePrincipalIterator(members);
}
- private static boolean isMember(final String memberName, final Group group) {
- Enumeration<? extends Principal> pe = group.members();
+ private static boolean isMember(final String memberName, final Principal group) {
+ Enumeration<? extends Principal> pe = members(group);
while (pe.hasMoreElements()) {
Principal p = pe.nextElement();
if (memberName.equals(p.getName())) {
return true;
}
- if ((p instanceof Group) && isMember(memberName, (Group) p)) {
+ if (isGroup(p) && isMember(memberName, p)) {
return true;
}
}
-
return false;
}
+
+ public static boolean isGroup(Principal principal) {
+ return principal instanceof Group || principal instanceof GroupPrincipal;
+ }
+
+ private static Enumeration<? extends Principal> members(Principal principal) {
+ if (principal instanceof Group) {
+ return ((Group) principal).members();
+ }
+ if (principal instanceof GroupPrincipal) {
+ return ((GroupPrincipal) principal).members();
+ }
+ return Collections.emptyEnumeration();
+ }
}
\ No newline at end of file
Modified: jackrabbit/trunk/jackrabbit-jcr-rmi/src/test/java/org/apache/jackrabbit/rmi/RepositoryStubImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-rmi/src/test/java/org/apache/jackrabbit/rmi/RepositoryStubImpl.java?rev=1827242&r1=1827241&r2=1827242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-rmi/src/test/java/org/apache/jackrabbit/rmi/RepositoryStubImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-rmi/src/test/java/org/apache/jackrabbit/rmi/RepositoryStubImpl.java Mon Mar 19 20:51:16 2018
@@ -22,7 +22,6 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.rmi.server.RemoteObject;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Properties;
import javax.jcr.Repository;
@@ -37,6 +36,7 @@ import org.apache.jackrabbit.rmi.client.
import org.apache.jackrabbit.rmi.remote.RemoteRepository;
import org.apache.jackrabbit.rmi.server.RemoteAdapterFactory;
import org.apache.jackrabbit.rmi.server.ServerAdapterFactory;
+import org.apache.jackrabbit.rmi.server.principal.ServerGroup;
import org.apache.jackrabbit.test.RepositoryStubException;
public class RepositoryStubImpl extends JackrabbitRepositoryStub {
@@ -89,7 +89,7 @@ public class RepositoryStubImpl extends
new SimpleCredentials("admin", "admin".toCharArray()));
try {
for (Principal principal : session.getSubject().getPrincipals()) {
- if (!(principal instanceof Group)) {
+ if (!ServerGroup.isGroup(principal)) {
return principal;
}
}