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>.