This is an automated email from the ASF dual-hosted git repository. juanpablo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/jspwiki.git
commit 7fc2476c1a0e8557631b7d102571e4235cbd1b41 Author: juanpablo <[email protected]> AuthorDate: Wed Mar 4 12:54:27 2020 +0100 move PrincipalComparator to the util module, with all the other non-jspwiki specific comparators --- .../java/org/apache/wiki/auth/SessionMonitor.java | 1 + .../apache/wiki/auth/acl/DefaultAclManager.java | 2 +- .../util/comparators}/PrincipalComparator.java | 21 ++++++++--------- .../util/comparators/PrincipalComparatorTest.java | 26 ++++++++++++++++++++++ 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/SessionMonitor.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/SessionMonitor.java index be81313..52f8e54 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/auth/SessionMonitor.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/SessionMonitor.java @@ -24,6 +24,7 @@ import org.apache.wiki.api.core.Engine; import org.apache.wiki.event.WikiEventListener; import org.apache.wiki.event.WikiEventManager; import org.apache.wiki.event.WikiSecurityEvent; +import org.apache.wiki.util.comparators.PrincipalComparator; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java index f847444..6833631 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java @@ -25,13 +25,13 @@ import org.apache.wiki.api.core.Engine; import org.apache.wiki.api.exceptions.ProviderException; import org.apache.wiki.attachment.Attachment; import org.apache.wiki.auth.AuthorizationManager; -import org.apache.wiki.auth.PrincipalComparator; import org.apache.wiki.auth.WikiSecurityException; import org.apache.wiki.auth.permissions.PagePermission; import org.apache.wiki.auth.permissions.PermissionFactory; import org.apache.wiki.pages.PageLock; import org.apache.wiki.pages.PageManager; import org.apache.wiki.render.RenderingManager; +import org.apache.wiki.util.comparators.PrincipalComparator; import java.security.Permission; import java.security.Principal; diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/PrincipalComparator.java b/jspwiki-util/src/main/java/org/apache/wiki/util/comparators/PrincipalComparator.java similarity index 77% rename from jspwiki-main/src/main/java/org/apache/wiki/auth/PrincipalComparator.java rename to jspwiki-util/src/main/java/org/apache/wiki/util/comparators/PrincipalComparator.java index 8fb4843..ba97d92 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/auth/PrincipalComparator.java +++ b/jspwiki-util/src/main/java/org/apache/wiki/util/comparators/PrincipalComparator.java @@ -1,4 +1,4 @@ -/* +/* 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 @@ -16,33 +16,34 @@ specific language governing permissions and limitations under the License. */ -package org.apache.wiki.auth; +package org.apache.wiki.util.comparators; import java.io.Serializable; import java.security.Principal; import java.text.Collator; import java.util.Comparator; + /** - * Comparator class for sorting objects of type Principal. - * Used for sorting arrays or collections of Principals. + * Comparator class for sorting objects of type Principal. Used for sorting arrays or collections of Principals. + * * @since 2.3 */ -public class PrincipalComparator - implements Comparator<Principal>, Serializable -{ +public class PrincipalComparator implements Comparator< Principal >, Serializable { + private static final long serialVersionUID = 1L; /** * Compares two Principal objects. + * * @param o1 the first Principal * @param o2 the second Principal * @return the result of the comparison * @see java.util.Comparator#compare(Object, Object) */ - public int compare( Principal o1, Principal o2 ) - { - Collator collator = Collator.getInstance(); + @Override + public int compare( final Principal o1, final Principal o2 ) { + final Collator collator = Collator.getInstance(); return collator.compare( o1.getName(), o2.getName() ); } diff --git a/jspwiki-util/src/test/java/org/apache/wiki/util/comparators/PrincipalComparatorTest.java b/jspwiki-util/src/test/java/org/apache/wiki/util/comparators/PrincipalComparatorTest.java new file mode 100644 index 0000000..dfbf187 --- /dev/null +++ b/jspwiki-util/src/test/java/org/apache/wiki/util/comparators/PrincipalComparatorTest.java @@ -0,0 +1,26 @@ +package org.apache.wiki.util.comparators; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.security.Principal; + + +public class PrincipalComparatorTest { + + @Test + public void testComparatorOrder() { + final Principal p1 = () -> "a"; + final Principal p2 = () -> "b"; + final PrincipalComparator pc = new PrincipalComparator(); + + Assertions.assertEquals( -1, pc.compare( p1, p2 ) ); + Assertions.assertEquals( 0, pc.compare( p1, p1 ) ); + Assertions.assertEquals( 1, pc.compare( p2, p1 ) ); + + Assertions.assertThrows( NullPointerException.class, () -> pc.compare( null, p1 ) ); + Assertions.assertThrows( NullPointerException.class, () -> pc.compare( p1, null ) ); + Assertions.assertThrows( NullPointerException.class, () -> pc.compare( null, null ) ); + } + +}
