You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2020/03/06 18:04:13 UTC

[jspwiki] 11/35: move PrincipalComparator to the util module, with all the other non-jspwiki specific comparators

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 <ju...@apache.org>
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  ) );
+    }
+
+}