SLING-10321 : Deprecate service mapping by userID
diff --git a/src/main/java/org/apache/sling/serviceusermapping/Mapping.java b/src/main/java/org/apache/sling/serviceusermapping/Mapping.java
index 9139f15..151bf5a 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/Mapping.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/Mapping.java
@@ -18,6 +18,9 @@
  */
 package org.apache.sling.serviceusermapping;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.util.LinkedHashSet;
 import java.util.Set;
 
@@ -33,6 +36,8 @@
      */
     public static String SERVICENAME = ".serviceName";
 
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
     private final String serviceName;
 
     private final String subServiceName;
@@ -86,6 +91,7 @@
         } else {
             this.userName = s;
             this.principalNames = null;
+            log.warn("Deprecated service mapping by userId, refactor to mapping by principal names (e.g. '{}{}=[{}]').", serviceName, ((subServiceName == null) ? "" : ":"+subServiceName) , s);
         }
     }
 
diff --git a/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapper.java b/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapper.java
index d65cab8..de1f5f7 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapper.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapper.java
@@ -77,7 +77,9 @@
 	 *         the service. This may be {@code null} if no particular user can
 	 *         be derived for the service identified by the bundle and the
 	 *         optional {@code serviceInfo}.
+	 * @deprecated Use {@link #getServicePrincipalNames(Bundle, String)} instead.        
 	 */
+	@Deprecated
 	String getServiceUserID(Bundle bundle, String subServiceName);
 
 	/**
diff --git a/src/main/java/org/apache/sling/serviceusermapping/impl/MappingInventoryPrinter.java b/src/main/java/org/apache/sling/serviceusermapping/impl/MappingInventoryPrinter.java
index 821a72c..0050b34 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/impl/MappingInventoryPrinter.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/impl/MappingInventoryPrinter.java
@@ -133,12 +133,12 @@
         w.object();
         w.key("title").value("Service User Mappings");
         w.key("mappingsCount").value(data.size());
-        w.key("uniqueUsersCount").value(byUser.keySet().size());
         w.key("uniquePrincipalsCount").value(byPrincipalName.keySet().size());
+        w.key("uniqueUsersCount").value(byUser.keySet().size());
 
-        w.key("mappingsByUser");
+        w.key("mappingsByPrincipal");
         w.object();
-        for(Map.Entry<String, List<Mapping>> e : byUser.entrySet()) {
+        for(Map.Entry<String, List<Mapping>> e : byPrincipalName.entrySet()) {
             w.key(e.getKey());
             w.array();
             for(Mapping m : e.getValue()) {
@@ -148,9 +148,9 @@
         }
         w.endObject();
 
-        w.key("mappingsByPrincipal");
+        w.key("mappingsByUser (deprecated)");
         w.object();
-        for(Map.Entry<String, List<Mapping>> e : byPrincipalName.entrySet()) {
+        for(Map.Entry<String, List<Mapping>> e : byUser.entrySet()) {
             w.key(e.getKey());
             w.array();
             for(Mapping m : e.getValue()) {
@@ -182,23 +182,8 @@
     private void renderText(PrintWriter out) {
         final List<Mapping> data = mapper.getActiveMappings();
 
-        final Map<String, List<Mapping>> byUser = getMappingsByUser(data);
-
-        out.print("*** Mappings by user (");
-        out.print(byUser.keySet().size());
-        out.print(" users):");
-        out.println(" (format: service name / sub service name / user)");
-
-        for(Map.Entry<String, List<Mapping>> e : byUser.entrySet()) {
-            out.print("  ");
-            out.println(e.getKey());
-            for(Mapping m : e.getValue()) {
-                asText(out, m, "    ");
-            }
-        }
-
         final Map<String, List<Mapping>> byPrincipalName = getMappingsByPrincipalName(data);
-
+        
         out.print("*** Mappings by principals (");
         out.print(byPrincipalName.keySet().size());
         out.print(" principals):");
@@ -211,5 +196,20 @@
                 asText(out, m, "    ");
             }
         }
+        
+        final Map<String, List<Mapping>> byUser = getMappingsByUser(data);
+        out.println();
+        out.print("*** Deprecated mappings by user (");
+        out.print(byUser.keySet().size());
+        out.print(" users):");
+        out.println(" (format: service name / sub service name / user)");
+
+        for(Map.Entry<String, List<Mapping>> e : byUser.entrySet()) {
+            out.print("  ");
+            out.println(e.getKey());
+            for(Mapping m : e.getValue()) {
+                asText(out, m, "    ");
+            }
+        }
    }
 }
\ No newline at end of file