You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:13:47 UTC

[sling-org-apache-sling-serviceusermapper] 03/05: SLING-3757 : cannot add more than 1 service user with the OSGI console

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.serviceusermapper-1.0.4
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-serviceusermapper.git

commit a8f6248654d7e39214efba4520b6b43560fed786
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Thu Jul 10 21:03:55 2014 +0000

    SLING-3757 : cannot add more than 1 service user with the OSGI console
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/serviceusermapper@1609569 13f79535-47bb-0310-9956-ffa450edef68
---
 .../apache/sling/serviceusermapping/impl/Mapping.java   |  6 ++++++
 .../serviceusermapping/impl/MappingConfigAmendment.java | 17 ++++++++++++-----
 .../serviceusermapping/impl/ServiceUserMapperImpl.java  |  2 +-
 .../impl/ServiceUserMapperImplTest.java                 |  2 --
 4 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/apache/sling/serviceusermapping/impl/Mapping.java b/src/main/java/org/apache/sling/serviceusermapping/impl/Mapping.java
index b7effb7..07ca263 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/impl/Mapping.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/impl/Mapping.java
@@ -87,4 +87,10 @@ class Mapping {
     private boolean equals(String str1, String str2) {
         return ((str1 == null) ? str2 == null : str1.equals(str2));
     }
+
+    @Override
+    public String toString() {
+        return "Mapping [serviceName=" + serviceName + ", subServiceName="
+                + subServiceName + ", userName=" + userName + "]";
+    }
 }
diff --git a/src/main/java/org/apache/sling/serviceusermapping/impl/MappingConfigAmendment.java b/src/main/java/org/apache/sling/serviceusermapping/impl/MappingConfigAmendment.java
index 44265fe..1894133 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/impl/MappingConfigAmendment.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/impl/MappingConfigAmendment.java
@@ -29,7 +29,6 @@ import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.PropertyUnbounded;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.commons.osgi.PropertiesUtil;
-import org.apache.sling.commons.osgi.ServiceUtil;
 import org.osgi.framework.Constants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -63,7 +62,7 @@ public class MappingConfigAmendment implements Comparable<MappingConfigAmendment
 
     private Mapping[] serviceUserMappings;
 
-    private Comparable<Object> comparable;
+    private int serviceRanking;
 
     @Activate
     @Modified
@@ -71,7 +70,7 @@ public class MappingConfigAmendment implements Comparable<MappingConfigAmendment
         final String[] props = PropertiesUtil.toStringArray(config.get(PROP_SERVICE2USER_MAPPING),
             PROP_SERVICE2USER_MAPPING_DEFAULT);
 
-        ArrayList<Mapping> mappings = new ArrayList<Mapping>(props.length);
+        final ArrayList<Mapping> mappings = new ArrayList<Mapping>(props.length);
         for (final String prop : props) {
             if (prop != null && prop.trim().length() > 0 ) {
                 try {
@@ -84,7 +83,7 @@ public class MappingConfigAmendment implements Comparable<MappingConfigAmendment
         }
 
         this.serviceUserMappings = mappings.toArray(new Mapping[mappings.size()]);
-        this.comparable = ServiceUtil.getComparableForServiceRanking(config);
+        this.serviceRanking = PropertiesUtil.toInteger(config.get(Constants.SERVICE_RANKING), 0);
     }
 
     public Mapping[] getServiceUserMappings() {
@@ -92,6 +91,14 @@ public class MappingConfigAmendment implements Comparable<MappingConfigAmendment
     }
 
     public int compareTo(final MappingConfigAmendment o) {
-        return -this.comparable.compareTo(o.comparable);
+        // Sort by rank in descending order.
+        if ( this.serviceRanking > o.serviceRanking ) {
+            return -1; // lower rank
+        } else if (this.serviceRanking < o.serviceRanking) {
+            return 1; // higher rank
+        }
+
+        // If ranks are equal, then sort by hash code
+        return this.hashCode() < o.hashCode() ? -1 : 1;
     }
 }
diff --git a/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java b/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java
index ecd29ef..02e22f6 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
            referenceInterface=MappingConfigAmendment.class,
            cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE,
            policy=ReferencePolicy.DYNAMIC,
-           updated="update")
+           updated="updateAmendment")
 public class ServiceUserMapperImpl implements ServiceUserMapper {
 
     @Property(
diff --git a/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java b/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
index 2b007be..2a98a45 100644
--- a/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
+++ b/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
@@ -164,7 +164,6 @@ public class ServiceUserMapperImplTest {
         final Map<String, Object> mca1Config = new HashMap<String, Object>() {
             {
                 put("user.mapping", new String [] {BUNDLE_SYMBOLIC2 + "=" + ANOTHER});
-                put(Constants.SERVICE_ID, 1L);
                 put(Constants.SERVICE_RANKING, 100);
             }
         };
@@ -174,7 +173,6 @@ public class ServiceUserMapperImplTest {
         final Map<String, Object> mca2Config = new HashMap<String, Object>() {
             {
                 put("user.mapping", new String [] {BUNDLE_SYMBOLIC2 + "=" + ANOTHER_SUB});
-                put(Constants.SERVICE_ID, 2L);
                 put(Constants.SERVICE_RANKING, 200);
             }
         };

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.