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 st...@apache.org on 2018/03/19 20:08:57 UTC
svn commit: r1827239 [2/2] - in /jackrabbit/oak/trunk:
oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/
oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/...
Added: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipals.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipals.java?rev=1827239&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipals.java (added)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipals.java Mon Mar 19 20:08:56 2018
@@ -0,0 +1,112 @@
+/*
+ * 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.oak.spi.security.principal;
+
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
+
+import com.google.common.base.Function;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterators;
+
+/**
+ * Helper class to deal with the migration between the 2 types of groups
+ *
+ */
+public final class GroupPrincipals {
+
+ private static final GroupTransformer TRANSFORMER = new GroupTransformer();
+
+ 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(@Nonnull 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(@Nonnull 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(@Nonnull Principal principal, @Nonnull Principal member) {
+ if (principal instanceof Group) {
+ return ((Group) principal).isMember(member);
+ }
+ if (principal instanceof GroupPrincipal) {
+ return ((GroupPrincipal) principal).isMember(member);
+ }
+ return false;
+ }
+
+ public static Set<Principal> transform(Set<Group> groups) {
+ ImmutableSet.Builder<Principal> g2 = ImmutableSet.builder();
+ for (Group g : groups) {
+ g2.add(new GroupPrincipalWrapper(g));
+ }
+ return g2.build();
+ }
+
+ public static Enumeration<? extends Principal> transform(Enumeration<? extends Principal> members) {
+ Iterator<Principal> m2 = Iterators.transform(Iterators.forEnumeration(members), TRANSFORMER);
+ return Iterators.asEnumeration(m2);
+ }
+
+ private static class GroupTransformer implements Function<Principal, Principal> {
+
+ @Override
+ public Principal apply(Principal input) {
+ if (input instanceof Group) {
+ return new GroupPrincipalWrapper((Group) input);
+ } else {
+ return input;
+ }
+ }
+ }
+}
Propchange: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipals.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImpl.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImpl.java Mon Mar 19 20:08:56 2018
@@ -68,7 +68,7 @@ public class PrincipalManagerImpl implem
@Override
@Nonnull
public PrincipalIterator getGroupMembership(@Nonnull Principal principal) {
- return new PrincipalIteratorAdapter(principalProvider.getGroupMembership(principal));
+ return new PrincipalIteratorAdapter(principalProvider.getMembershipPrincipals(principal));
}
@Override
Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProvider.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProvider.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalProvider.java Mon Mar 19 20:08:56 2018
@@ -18,12 +18,15 @@ package org.apache.jackrabbit.oak.spi.se
import java.security.Principal;
import java.security.acl.Group;
+import java.util.Collections;
import java.util.Iterator;
import java.util.Set;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.osgi.annotation.versioning.ProviderType;
+
/**
* The {@code PrincipalProvider} defines methods to provide access to sources
* of {@link Principal}s. This allows the security framework share any external
@@ -37,6 +40,7 @@ import javax.annotation.Nullable;
* different sources. See also {@link CompositePrincipalProvider} for a
* mechanism to combine principals of different providers.
*/
+@ProviderType
public interface PrincipalProvider {
/**
@@ -59,12 +63,34 @@ public interface PrincipalProvider {
* If Principal is member of Group A, and Group A is member of
* Group B, this method will return Group A and Group B.
*
+ * @deprecated use {@link #getMembershipPrincipals(Principal)}
* @param principal the principal to return it's membership from.
* @return an iterator returning all groups the given principal is member of.
* @see java.security.acl.Group#isMember(java.security.Principal)
*/
@Nonnull
- Set<Group> getGroupMembership(@Nonnull Principal principal);
+ default Set<Group> getGroupMembership(@Nonnull Principal principal) {
+ return Collections.emptySet();
+ }
+
+ /**
+ * Returns an iterator over all group principals for which the given
+ * principal is either direct or indirect member of. Thus for any principal
+ * returned in the iterator {@link GroupPrincipal#isMember(Principal)}
+ * must return {@code true}.
+ * <p>
+ * Example:<br>
+ * If Principal is member of Group A, and Group A is member of
+ * Group B, this method will return Group A and Group B.
+ *
+ * @param principal the principal to return it's membership from.
+ * @return an iterator returning all groups the given principal is member of.
+ * @see GroupPrincipal#isMember(java.security.Principal)
+ */
+ @Nonnull
+ default Set<Principal> getMembershipPrincipals(@Nonnull Principal principal) {
+ return GroupPrincipals.transform(getGroupMembership(principal));
+ }
/**
* Tries to resolve the specified {@code userID} to a valid principal and
Modified: jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/package-info.java Mon Mar 19 20:08:56 2018
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("1.5.0")
+@Version("1.6.0")
package org.apache.jackrabbit.oak.spi.security.principal;
import org.osgi.annotation.versioning.Version;
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModuleTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModuleTest.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModuleTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModuleTest.java Mon Mar 19 20:08:56 2018
@@ -457,7 +457,7 @@ public class AbstractLoginModuleTest {
Principal principal = principalProvider.findPrincipals(PrincipalManager.SEARCH_TYPE_NOT_GROUP).next();
Set<Principal> expected = new HashSet<>();
expected.add(principal);
- expected.addAll(principalProvider.getGroupMembership(principal));
+ expected.addAll(principalProvider.getMembershipPrincipals(principal));
Set<? extends Principal> principals = loginModule.getPrincipals(principal);
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalConfigurationTest.java Mon Mar 19 20:08:56 2018
@@ -18,8 +18,6 @@ package org.apache.jackrabbit.oak.spi.se
import java.lang.reflect.Field;
import java.security.Principal;
-import java.security.acl.Group;
-import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -28,6 +26,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterators;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
import org.apache.jackrabbit.oak.api.Root;
@@ -151,37 +150,7 @@ public class CompositePrincipalConfigura
@Nonnull
@Override
public PrincipalProvider getPrincipalProvider(Root root, NamePathMapper namePathMapper) {
- return new PrincipalProvider() {
- @CheckForNull
- @Override
- public Principal getPrincipal(@Nonnull String principalName) {
- return null;
- }
-
- @Nonnull
- @Override
- public Set<Group> getGroupMembership(@Nonnull Principal principal) {
- return ImmutableSet.of();
- }
-
- @Nonnull
- @Override
- public Set<? extends Principal> getPrincipals(@Nonnull String userID) {
- return ImmutableSet.of();
- }
-
- @Nonnull
- @Override
- public Iterator<? extends Principal> findPrincipals(@Nullable String nameHint, int searchType) {
- return Collections.emptyIterator();
- }
-
- @Nonnull
- @Override
- public Iterator<? extends Principal> findPrincipals(int searchType) {
- return Collections.emptyIterator();
- }
- };
+ return new TestPrincipalProvider();
}
@Nonnull
@@ -191,6 +160,39 @@ public class CompositePrincipalConfigura
}
}
+ private static class TestPrincipalProvider implements PrincipalProvider {
+
+ @CheckForNull
+ @Override
+ public Principal getPrincipal(@Nonnull String principalName) {
+ return null;
+ }
+
+ @Nonnull
+ @Override
+ public Set<Principal> getMembershipPrincipals(@Nonnull Principal principal) {
+ return ImmutableSet.of();
+ }
+
+ @Nonnull
+ @Override
+ public Set<? extends Principal> getPrincipals(@Nonnull String userID) {
+ return ImmutableSet.of();
+ }
+
+ @Nonnull
+ @Override
+ public Iterator<? extends Principal> findPrincipals(@Nullable String nameHint, int searchType) {
+ return Iterators.emptyIterator();
+ }
+
+ @Nonnull
+ @Override
+ public Iterator<? extends Principal> findPrincipals(int searchType) {
+ return Iterators.emptyIterator();
+ }
+ }
+
private final class TestEmptyConfiguration extends ConfigurationBase implements PrincipalConfiguration {
@Nonnull
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProviderTest.java Mon Mar 19 20:08:56 2018
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.oak.spi.security.principal;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Iterator;
import javax.annotation.Nonnull;
@@ -25,6 +24,8 @@ import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
+
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
import org.junit.Test;
@@ -82,14 +83,14 @@ public class CompositePrincipalProviderT
@Test
public void getGroupMembership() {
for (Principal principal : testPrincipals()) {
- boolean atleastEveryone = cpp.getGroupMembership(principal).contains(EveryonePrincipal.getInstance());
+ boolean atleastEveryone = cpp.getMembershipPrincipals(principal).contains(EveryonePrincipal.getInstance());
assertTrue("All principals (except everyone) must be member of the everyone group. Violation: "+principal.getName(), atleastEveryone);
}
}
@Test
public void getGroupMembershipUnknown() {
- assertTrue(cpp.getGroupMembership(TestPrincipalProvider.UNKNOWN).isEmpty());
+ assertTrue(cpp.getMembershipPrincipals(TestPrincipalProvider.UNKNOWN).isEmpty());
}
@Test
@@ -109,7 +110,7 @@ public class CompositePrincipalProviderT
Iterable<? extends Principal> expected = Iterables.concat(ImmutableSet.of(EveryonePrincipal.getInstance()), Iterables.filter(testPrincipals(), new Predicate<Principal>() {
@Override
public boolean apply(Principal input) {
- return input instanceof Group;
+ return input instanceof GroupPrincipal;
}
}));
@@ -122,7 +123,7 @@ public class CompositePrincipalProviderT
Iterable<? extends Principal> expected = Iterables.filter(testPrincipals(), new Predicate<Principal>() {
@Override
public boolean apply(Principal input) {
- return !(input instanceof Group);
+ return !(input instanceof GroupPrincipal);
}
});
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EmptyPrincipalProviderTest.java Mon Mar 19 20:08:56 2018
@@ -39,9 +39,9 @@ public class EmptyPrincipalProviderTest
@Test
public void testGetGroupMembership() {
- assertTrue(principalProvider.getGroupMembership(EveryonePrincipal.getInstance()).isEmpty());
- assertTrue(principalProvider.getGroupMembership(new PrincipalImpl(EveryonePrincipal.NAME)).isEmpty());
- assertTrue(principalProvider.getGroupMembership(testPrincipal).isEmpty());
+ assertTrue(principalProvider.getMembershipPrincipals(EveryonePrincipal.getInstance()).isEmpty());
+ assertTrue(principalProvider.getMembershipPrincipals(new PrincipalImpl(EveryonePrincipal.NAME)).isEmpty());
+ assertTrue(principalProvider.getMembershipPrincipals(testPrincipal).isEmpty());
}
@Test
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/EveryonePrincipalTest.java Mon Mar 19 20:08:56 2018
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.spi.se
import java.security.Principal;
import java.util.Enumeration;
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.principal.JackrabbitPrincipal;
import org.junit.Test;
@@ -48,21 +49,6 @@ public class EveryonePrincipalTest {
assertFalse(EveryonePrincipal.getInstance().isMember(everyone));
}
- @Test
- public void testAddMember() {
- assertFalse(EveryonePrincipal.getInstance().addMember(new PrincipalImpl("test")));
- }
-
- @Test
- public void testAddMemberSelf() {
- assertFalse(EveryonePrincipal.getInstance().addMember(everyone));
- }
-
- @Test(expected = UnsupportedOperationException.class)
- public void testRemoveMember() {
- EveryonePrincipal.getInstance().removeMember(everyone);
- }
-
@Test(expected = UnsupportedOperationException.class)
public void testMembers() {
EveryonePrincipal.getInstance().members();
@@ -130,17 +116,7 @@ public class EveryonePrincipalTest {
}
}
- private class OtherEveryoneGroup extends OtherEveryone implements java.security.acl.Group {
-
- @Override
- public boolean addMember(Principal principal) {
- return false;
- }
-
- @Override
- public boolean removeMember(Principal principal) {
- return false;
- }
+ private class OtherEveryoneGroup extends OtherEveryone implements GroupPrincipal {
@Override
public boolean isMember(Principal principal) {
Added: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java?rev=1827239&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java (added)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java Mon Mar 19 20:08:56 2018
@@ -0,0 +1,115 @@
+/*
+ * 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.oak.spi.security.principal;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.security.Principal;
+import java.security.acl.Group;
+import java.util.Enumeration;
+import java.util.Set;
+
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Sets;
+
+public class GroupPrincipalsTest {
+
+ @Test
+ public void testIsGroup() {
+ Principal p0 = new PrincipalImpl("test");
+ assertFalse(GroupPrincipals.isGroup(p0));
+
+ Group g = new Group() {
+
+ @Override
+ public String getName() {
+ return "testG";
+ }
+
+ @Override
+ public boolean removeMember(Principal user) {
+ return false;
+ }
+
+ @Override
+ public Enumeration<? extends Principal> members() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean isMember(Principal member) {
+ return false;
+ }
+
+ @Override
+ public boolean addMember(Principal user) {
+ return false;
+ }
+ };
+
+ assertTrue(GroupPrincipals.isGroup(g));
+ assertTrue(GroupPrincipals.isGroup(new GroupPrincipalWrapper(g)));
+ }
+
+ @Test
+ public void testTransform() {
+ Group g = new Group() {
+
+ @Override
+ public String getName() {
+ return "testG";
+ }
+
+ @Override
+ public boolean removeMember(Principal user) {
+ return false;
+ }
+
+ @Override
+ public Enumeration<? extends Principal> members() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean isMember(Principal member) {
+ return false;
+ }
+
+ @Override
+ public boolean addMember(Principal user) {
+ return false;
+ }
+ };
+
+ Set<Principal> t = GroupPrincipals.transform(ImmutableSet.of(g));
+ assertEquals(1, t.size());
+ Principal p = t.iterator().next();
+ assertEquals(p.getName(), g.getName());
+
+ Enumeration<? extends Principal> e = GroupPrincipals
+ .transform(Iterators.asEnumeration(ImmutableSet.of(g).iterator()));
+ Set<Principal> t2 = Sets.newHashSet(Iterators.forEnumeration(e));
+ assertEquals(1, t2.size());
+ Principal p2 = t2.iterator().next();
+ assertEquals(p2.getName(), g.getName());
+ }
+}
Propchange: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/GroupPrincipalsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/PrincipalManagerImplTest.java Mon Mar 19 20:08:56 2018
@@ -17,13 +17,14 @@
package org.apache.jackrabbit.oak.spi.security.principal;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Enumeration;
import java.util.Iterator;
import javax.annotation.Nonnull;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterators;
+
+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.junit.Test;
@@ -42,7 +43,7 @@ public class PrincipalManagerImplTest {
private Iterable<Principal> testPrincipals = provider.getTestPrincipals();
private static boolean isGroup(Principal p) {
- return p instanceof Group;
+ return p instanceof GroupPrincipal;
}
private static void assertIterator(@Nonnull Iterator<? extends Principal> expected, @Nonnull Iterator<? extends Principal> result) {
@@ -144,7 +145,7 @@ public class PrincipalManagerImplTest {
public void testAllMembersKnown() {
for (Principal p : testPrincipals) {
if (isGroup(p)) {
- Enumeration<? extends Principal> en = ((Group) p).members();
+ Enumeration<? extends Principal> en = ((GroupPrincipal) p).members();
while (en.hasMoreElements()) {
Principal memb = en.nextElement();
assertTrue(principalMgr.hasPrincipal(memb.getName()));
@@ -209,7 +210,7 @@ public class PrincipalManagerImplTest {
assertTrue(isGroup(p));
- Enumeration<? extends Principal> members = ((Group) p).members();
+ Enumeration<? extends Principal> members = ((GroupPrincipal) p).members();
while (members.hasMoreElements()) {
Principal memb = members.nextElement();
Modified: jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/TestPrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/TestPrincipalProvider.java?rev=1827239&r1=1827238&r2=1827239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/TestPrincipalProvider.java (original)
+++ jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/principal/TestPrincipalProvider.java Mon Mar 19 20:08:56 2018
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.oak.spi.security.principal;
import java.security.Principal;
-import java.security.acl.Group;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
@@ -34,6 +33,8 @@ import com.google.common.collect.Iterabl
import com.google.common.collect.Iterators;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+
+import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
import org.apache.jackrabbit.api.security.principal.PrincipalManager;
public final class TestPrincipalProvider implements PrincipalProvider {
@@ -67,7 +68,7 @@ public final class TestPrincipalProvider
}
public Iterable<Principal> all() {
- Set all = Sets.newHashSet(principals.values());
+ Set<Principal> all = Sets.newHashSet(principals.values());
all.add(EveryonePrincipal.getInstance());
return all;
}
@@ -97,11 +98,11 @@ public final class TestPrincipalProvider
@Nonnull
@Override
- public Set<Group> getGroupMembership(@Nonnull Principal principal) {
+ public Set<Principal> getMembershipPrincipals(@Nonnull Principal principal) {
if (principals.equals(TestPrincipals.asMap())) {
return TestPrincipals.membership(principal.getName());
} else if (principals.values().contains(principal)) {
- return ImmutableSet.<Group>of(EveryonePrincipal.getInstance());
+ return ImmutableSet.of(EveryonePrincipal.getInstance());
} else {
return ImmutableSet.of();
}
@@ -114,8 +115,8 @@ public final class TestPrincipalProvider
if (pName != null) {
Principal p = principals.get(pName);
if (p != null) {
- Set s = Sets.newHashSet(p);
- s.addAll(getGroupMembership(p));
+ Set<Principal> s = Sets.newHashSet(p);
+ s.addAll(getMembershipPrincipals(p));
return s;
}
}
@@ -153,14 +154,14 @@ public final class TestPrincipalProvider
switch (searchType) {
case PrincipalManager.SEARCH_TYPE_ALL: return true;
- case PrincipalManager.SEARCH_TYPE_GROUP: return principal instanceof Group;
- case PrincipalManager.SEARCH_TYPE_NOT_GROUP: return !(principal instanceof Group);
+ case PrincipalManager.SEARCH_TYPE_GROUP: return principal instanceof GroupPrincipal;
+ case PrincipalManager.SEARCH_TYPE_NOT_GROUP: return !(principal instanceof GroupPrincipal);
default: throw new IllegalArgumentException();
}
}
}
- private static final class TestGroup extends PrincipalImpl implements Group {
+ private static final class TestGroup extends PrincipalImpl implements GroupPrincipal {
private final Enumeration<? extends Principal> members;
@@ -171,16 +172,6 @@ public final class TestPrincipalProvider
}
@Override
- public boolean addMember(Principal user) {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public boolean removeMember(Principal user) {
- throw new UnsupportedOperationException();
- }
-
- @Override
public boolean isMember(Principal member) {
throw new UnsupportedOperationException();
}
@@ -195,9 +186,9 @@ public final class TestPrincipalProvider
private static final Principal a = new PrincipalImpl("a");
private static final Principal ac = new PrincipalImpl("ac");
- private static final Group gr1 = new TestGroup("tGr1");
- private static final Group gr2 = new TestGroup("tGr2", a);
- private static final Group gr3 = new TestGroup("gr2", gr2, ac);
+ private static final GroupPrincipal gr1 = new TestGroup("tGr1");
+ private static final GroupPrincipal gr2 = new TestGroup("tGr2", a);
+ private static final GroupPrincipal gr3 = new TestGroup("gr2", gr2, ac);
private static final Map<String, Principal> principals = ImmutableMap.<String, Principal>builder()
.put(a.getName(), a)
@@ -211,7 +202,7 @@ public final class TestPrincipalProvider
return principals;
}
- private static Set<Group> membership(@Nonnull String name) {
+ private static Set<Principal> membership(@Nonnull String name) {
if ("a".equals(name)) {
return ImmutableSet.of(EveryonePrincipal.getInstance(), gr2, gr3);
} else if ("ac".equals(name)) {
@@ -219,7 +210,7 @@ public final class TestPrincipalProvider
} else if (gr2.getName().equals(name)) {
return ImmutableSet.of(EveryonePrincipal.getInstance(), gr3);
} else if (principals.containsKey(name)) {
- return ImmutableSet.<Group>of(EveryonePrincipal.getInstance());
+ return ImmutableSet.of(EveryonePrincipal.getInstance());
} else {
return ImmutableSet.of();
}