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:14:42 UTC
[sling-org-apache-sling-serviceusermapper] 12/18: SLING-6555 :
Migrate to R6 annotations, clean up dependencies
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.serviceusermapper-1.2.6
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-serviceusermapper.git
commit dfbde948459f5c88247463d438895144aa134275
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Thu Feb 23 12:29:06 2017 +0000
SLING-6555 : Migrate to R6 annotations, clean up dependencies
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/serviceusermapper@1784117 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 69 ++-----
.../serviceusermapping/ServiceUserMapped.java | 2 +-
.../serviceusermapping/ServiceUserMapper.java | 3 +-
.../serviceusermapping/ServiceUserValidator.java | 2 +-
.../impl/MappingConfigAmendment.java | 67 ++++---
.../impl/MappingInventoryPrinter.java | 31 ++--
.../impl/ServiceUserMappedBundleFilter.java | 7 +-
.../impl/ServiceUserMapperImpl.java | 73 +++-----
.../sling/serviceusermapping/package-info.java | 6 +-
.../impl/ServiceUserMapperImplTest.java | 205 ++++++++++-----------
10 files changed, 190 insertions(+), 275 deletions(-)
diff --git a/pom.xml b/pom.xml
index d3a6b4a..59f901b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
<parent>
<groupId>org.apache.sling</groupId>
<artifactId>sling</artifactId>
- <version>26</version>
+ <version>29</version>
<relativePath />
</parent>
@@ -58,14 +58,16 @@
<configuration>
<instructions>
<Import-Package>
- org.apache.sling.commons.json,
org.apache.felix.inventory;resolution:=optional,
*
</Import-Package>
- <DynamicImport-Package>
+ <DynamicImport-Package>
org.apache.felix.inventory
</DynamicImport-Package>
- </instructions>
+ <Embed-Dependency>
+ org.apache.felix.utils;inline=org/apache/felix/utils/json/JSONWriter**
+ </Embed-Dependency>
+ </instructions>
</configuration>
</plugin>
</plugins>
@@ -78,18 +80,12 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.osgi</artifactId>
- <version>2.1.0</version>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.utils</artifactId>
+ <version>1.9.0</version>
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.json</artifactId>
- <version>2.0.6</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.inventory</artifactId>
<version>1.0.0</version>
@@ -97,69 +93,34 @@
</dependency>
<dependency>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- <version>2.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- <version>2.4.0</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>4.3.0</version>
- <scope>provided</scope>
+ <artifactId>osgi.core</artifactId>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
+ <artifactId>org.osgi.service.event</artifactId>
+ <version>1.3.1</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.scr.annotations</artifactId>
- </dependency>
- <dependency>
- <groupId>biz.aQute</groupId>
- <artifactId>bndlib</artifactId>
- <scope>provided</scope>
+ <artifactId>javax.servlet-api</artifactId>
</dependency>
<!-- Testing -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <scope>test</scope>
</dependency>
-
- <!-- using log4j under slf4j to allow fine-grained logging config (see src/test/resources/log4j.properties) -->
<dependency>
<groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.5.0</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.13</version>
- <scope>test</scope>
+ <artifactId>slf4j-simple</artifactId>
</dependency>
-
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
diff --git a/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapped.java b/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapped.java
index 949a1bf..921dffb 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapped.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapped.java
@@ -18,7 +18,7 @@
*/
package org.apache.sling.serviceusermapping;
-import aQute.bnd.annotation.ProviderType;
+import org.osgi.annotation.versioning.ProviderType;
/**
* The <code>ServiceUserMapped</code> is a marker service that can be used to ensure that there is an already registered mapping for a certain service/subService.
diff --git a/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapper.java b/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapper.java
index 21e801d..d8e6701 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapper.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/ServiceUserMapper.java
@@ -18,10 +18,9 @@
*/
package org.apache.sling.serviceusermapping;
+import org.osgi.annotation.versioning.ProviderType;
import org.osgi.framework.Bundle;
-import aQute.bnd.annotation.ProviderType;
-
/**
* The <code>ServiceUserMapper</code> service can be used to map a service
* provided by a bundle to the ID of a user account used to access the
diff --git a/src/main/java/org/apache/sling/serviceusermapping/ServiceUserValidator.java b/src/main/java/org/apache/sling/serviceusermapping/ServiceUserValidator.java
index 7930582..eaa77f7 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/ServiceUserValidator.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/ServiceUserValidator.java
@@ -16,7 +16,7 @@
*/
package org.apache.sling.serviceusermapping;
-import aQute.bnd.annotation.ConsumerType;
+import org.osgi.annotation.versioning.ConsumerType;
/**
* The {@code ServiceUserValidator} allows to implement validation of configured
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 9b981e9..1d10c38 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/impl/MappingConfigAmendment.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/impl/MappingConfigAmendment.java
@@ -19,47 +19,42 @@
package org.apache.sling.serviceusermapping.impl;
import java.util.ArrayList;
-import java.util.Map;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.ConfigurationPolicy;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Properties;
-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.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.ConfigurationPolicy;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Component(metatype=true,
- name="org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended",
- label="Apache Sling Service User Mapper Service Amendment",
- description="An amendment mapping for the user mapping service.",
- configurationFactory=true,
- policy=ConfigurationPolicy.REQUIRE)
-@Service(value={MappingConfigAmendment.class})
-@Properties({
- @Property(name=Constants.SERVICE_RANKING, intValue=0, propertyPrivate=false,
- label="Ranking",
- description="Amendments are processed in order of their ranking, an amendment with a higher ranking has" +
- " precedence over a mapping with a lower ranking."),
- @Property(name="webconsole.configurationFactory.nameHint", value="Mapping: {user.mapping}")
-})
+@Designate(factory=true, ocd=MappingConfigAmendment.Config.class)
+@Component(name = "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended",
+ configurationPolicy=ConfigurationPolicy.REQUIRE,
+ service={MappingConfigAmendment.class},
+ property= {
+ "webconsole.configurationFactory.nameHint=Mapping: {user.mapping}",
+ })
public class MappingConfigAmendment implements Comparable<MappingConfigAmendment> {
- @Property(
- label = "Service Mappings",
+ @ObjectClassDefinition(name ="Apache Sling Service User Mapper Service Amendment",
+ description="An amendment mapping for the user mapping service.")
+ public @interface Config {
+
+ @AttributeDefinition(name = "Ranking",
+ description="Amendments are processed in order of their ranking, an amendment with a higher ranking has" +
+ " precedence over a mapping with a lower ranking.")
+ int service_ranking() default 0;
+
+ @AttributeDefinition(name = "Service Mappings",
description = "Provides mappings from service name to user names. "
+ "Each entry is of the form 'bundleId [ \":\" subServiceName ] \"=\" userName' "
+ "where bundleId and subServiceName identify the service and userName "
- + "defines the name of the user to provide to the service. Invalid entries are logged and ignored.",
- unbounded = PropertyUnbounded.ARRAY)
- private static final String PROP_SERVICE2USER_MAPPING = "user.mapping";
-
- private static final String[] PROP_SERVICE2USER_MAPPING_DEFAULT = {};
+ + "defines the name of the user to provide to the service. Invalid entries are logged and ignored.")
+ String[] user_mapping() default {};
+ }
/** default logger */
private final Logger logger = LoggerFactory.getLogger(getClass());
@@ -70,9 +65,8 @@ public class MappingConfigAmendment implements Comparable<MappingConfigAmendment
@Activate
@Modified
- void configure(final Map<String, Object> config) {
- final String[] props = PropertiesUtil.toStringArray(config.get(PROP_SERVICE2USER_MAPPING),
- PROP_SERVICE2USER_MAPPING_DEFAULT);
+ void configure(final Config config) {
+ final String[] props = config.user_mapping();
final ArrayList<Mapping> mappings = new ArrayList<Mapping>(props.length);
for (final String prop : props) {
@@ -87,13 +81,14 @@ public class MappingConfigAmendment implements Comparable<MappingConfigAmendment
}
this.serviceUserMappings = mappings.toArray(new Mapping[mappings.size()]);
- this.serviceRanking = PropertiesUtil.toInteger(config.get(Constants.SERVICE_RANKING), 0);
+ this.serviceRanking = config.service_ranking();
}
public Mapping[] getServiceUserMappings() {
return this.serviceUserMappings;
}
+ @Override
public int compareTo(final MappingConfigAmendment o) {
// Sort by rank in descending order.
if ( this.serviceRanking > o.serviceRanking ) {
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 b431b19..e3488f5 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/impl/MappingInventoryPrinter.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/impl/MappingInventoryPrinter.java
@@ -18,6 +18,7 @@
*/
package org.apache.sling.serviceusermapping.impl;
+import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -27,23 +28,18 @@ import java.util.TreeMap;
import org.apache.felix.inventory.Format;
import org.apache.felix.inventory.InventoryPrinter;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.commons.json.JSONException;
-import org.apache.sling.commons.json.io.JSONWriter;
+import org.apache.felix.utils.json.JSONWriter;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
/** InventoryPrinter for service user mappings */
-@Component
-@Service(value = InventoryPrinter.class)
-@Properties({
- @Property(name = InventoryPrinter.FORMAT, value = { "JSON", "TEXT" }),
- @Property(name = InventoryPrinter.NAME, value = "slingserviceusers"),
- @Property(name = InventoryPrinter.TITLE, value = "Sling Service User Mappings"),
- @Property(name = InventoryPrinter.WEBCONSOLE, boolValue = true)
-})
+@Component(service = InventoryPrinter.class,
+ property = {
+ InventoryPrinter.FORMAT + "=JSON",
+ InventoryPrinter.FORMAT + "=TEXT",
+ InventoryPrinter.TITLE + "=Sling Service User Mappings",
+ InventoryPrinter.WEBCONSOLE + ":Boolean=true"
+ })
public class MappingInventoryPrinter implements InventoryPrinter {
@Reference
@@ -80,7 +76,7 @@ public class MappingInventoryPrinter implements InventoryPrinter {
return result;
}
- private void asJSON(JSONWriter w, Mapping m) throws JSONException {
+ private void asJSON(JSONWriter w, Mapping m) throws IOException {
w.object();
w.key("serviceName").value(m.getServiceName());
w.key("subServiceName").value(m.getSubServiceName());
@@ -88,12 +84,11 @@ public class MappingInventoryPrinter implements InventoryPrinter {
w.endObject();
}
- private void renderJson(PrintWriter out) throws JSONException {
+ private void renderJson(PrintWriter out) throws IOException {
final List<Mapping> data = mapper.getActiveMappings();
final Map<String, List<Mapping>> byUser = getMappingsByUser(data);
final JSONWriter w = new JSONWriter(out);
- w.setTidy(true);
w.object();
w.key("title").value("Service User Mappings");
w.key("mappingsCount").value(data.size());
diff --git a/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMappedBundleFilter.java b/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMappedBundleFilter.java
index c2179d2..a8b0719 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMappedBundleFilter.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMappedBundleFilter.java
@@ -23,8 +23,6 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceEvent;
@@ -32,12 +30,13 @@ import org.osgi.framework.ServiceReference;
import org.osgi.framework.hooks.service.EventListenerHook;
import org.osgi.framework.hooks.service.FindHook;
import org.osgi.framework.hooks.service.ListenerHook;
+import org.osgi.service.component.annotations.Component;
-@Component(immediate=true) // framework gets/ungets hooks each time
-@Service(value = {EventListenerHook.class, FindHook.class} )
/**
* The <code>ServiceUserMappingBundleFilter</code> only allows the bundle for which the service mapping is available to see it.
*/
+@Component(immediate=true, // framework gets/ungets hooks each time
+ service = {EventListenerHook.class, FindHook.class} )
public class ServiceUserMappedBundleFilter implements EventListenerHook, FindHook {
@Override
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 b2f980e..314046b 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImpl.java
@@ -35,18 +35,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.PropertyUnbounded;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
-import org.apache.felix.scr.annotations.References;
-import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.serviceusermapping.ServiceUserMapped;
import org.apache.sling.serviceusermapping.ServiceUserMapper;
import org.apache.sling.serviceusermapping.ServiceUserValidator;
@@ -54,47 +42,39 @@ import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.osgi.service.metatype.annotations.AttributeDefinition;
+import org.osgi.service.metatype.annotations.Designate;
+import org.osgi.service.metatype.annotations.ObjectClassDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-@Component(
- metatype = true,
- label = "Apache Sling Service User Mapper Service",
- description = "Configuration for the service mapping service names to names of users.")
-@Service(value={ServiceUserMapper.class, ServiceUserMapperImpl.class})
-@References( {
- @Reference(name="amendment",
- referenceInterface=MappingConfigAmendment.class,
- cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE,
- policy=ReferencePolicy.DYNAMIC,
- updated="updateAmendment"),
- @Reference(name = "serviceUserValidator ", referenceInterface = ServiceUserValidator.class,
- bind = "bindServiceUserValidator", unbind = "unbindServiceUserValidator",
- cardinality= ReferenceCardinality.OPTIONAL_MULTIPLE, policy= ReferencePolicy.DYNAMIC)
-
-})
-
+@Designate(ocd = ServiceUserMapperImpl.Config.class)
+@Component(service = {ServiceUserMapper.class, ServiceUserMapperImpl.class})
public class ServiceUserMapperImpl implements ServiceUserMapper {
- @Property(
- label = "Service Mappings",
+ @ObjectClassDefinition(name = "Apache Sling Service User Mapper Service",
+ description = "Configuration for the service mapping service names to names of users.")
+ public @interface Config {
+
+ @AttributeDefinition(name = "Service Mappings",
description = "Provides mappings from service name to user names. "
+ "Each entry is of the form 'bundleId [ \":\" subServiceName ] \"=\" userName' "
+ "where bundleId and subServiceName identify the service and userName "
- + "defines the name of the user to provide to the service. Invalid entries are logged and ignored.",
- unbounded = PropertyUnbounded.ARRAY)
- private static final String PROP_SERVICE2USER_MAPPING = "user.mapping";
+ + "defines the name of the user to provide to the service. Invalid entries are logged and ignored.")
+ String[] user_mapping() default {};
- private static final String[] PROP_SERVICE2USER_MAPPING_DEFAULT = {};
-
- private static final String PROP_DEFAULT_USER = "user.default";
-
- @Property(
- name = PROP_DEFAULT_USER,
- label = "Default User",
+ @AttributeDefinition(name = "Default User",
description = "The name of the user to use as the default if no service mapping"
+ "applies. If this property is missing or empty no default user is defined.")
- private static final String PROP_DEFAULT_USER_DEFAULT = null;
+ String user_default();
+ }
/** default log */
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -119,13 +99,12 @@ public class ServiceUserMapperImpl implements ServiceUserMapper {
@Activate
@Modified
- synchronized void configure(BundleContext bundleContext, final Map<String, Object> config) {
+ synchronized void configure(BundleContext bundleContext, final Config config) {
if (registerAsync && executorService == null) {
executorService = Executors.newSingleThreadExecutor();
}
- final String[] props = PropertiesUtil.toStringArray(config.get(PROP_SERVICE2USER_MAPPING),
- PROP_SERVICE2USER_MAPPING_DEFAULT);
+ final String[] props = config.user_mapping();
final ArrayList<Mapping> mappings = new ArrayList<Mapping>(props.length);
for (final String prop : props) {
@@ -140,7 +119,7 @@ public class ServiceUserMapperImpl implements ServiceUserMapper {
}
this.globalServiceUserMappings = mappings.toArray(new Mapping[mappings.size()]);
- this.defaultUser = PropertiesUtil.toString(config.get(PROP_DEFAULT_USER), PROP_DEFAULT_USER_DEFAULT);
+ this.defaultUser = config.user_default();
RegistrationSet registrationSet = null;
this.bundleContext = bundleContext;
@@ -172,6 +151,7 @@ public class ServiceUserMapperImpl implements ServiceUserMapper {
* bind the serviceUserValidator
* @param serviceUserValidator
*/
+ @Reference(cardinality=ReferenceCardinality.MULTIPLE, policy= ReferencePolicy.DYNAMIC)
protected synchronized void bindServiceUserValidator(final ServiceUserValidator serviceUserValidator) {
validators.add(serviceUserValidator);
restartAllActiveServiceUserMappedServices();
@@ -201,6 +181,7 @@ public class ServiceUserMapperImpl implements ServiceUserMapper {
return result;
}
+ @Reference(cardinality=ReferenceCardinality.MULTIPLE,policy=ReferencePolicy.DYNAMIC,updated="updateAmendment")
protected synchronized void bindAmendment(final MappingConfigAmendment amendment, final Map<String, Object> props) {
final Long key = (Long) props.get(Constants.SERVICE_ID);
RegistrationSet registrationSet = null;
diff --git a/src/main/java/org/apache/sling/serviceusermapping/package-info.java b/src/main/java/org/apache/sling/serviceusermapping/package-info.java
index 8eadc1a..69a2cdd 100644
--- a/src/main/java/org/apache/sling/serviceusermapping/package-info.java
+++ b/src/main/java/org/apache/sling/serviceusermapping/package-info.java
@@ -17,10 +17,6 @@
* under the License.
*/
-@Version("1.2")
-@Export(optional = "provide:=true")
+@org.osgi.annotation.versioning.Version("1.2.1")
package org.apache.sling.serviceusermapping;
-import aQute.bnd.annotation.Export;
-import aQute.bnd.annotation.Version;
-
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 553f312..199f6f7 100644
--- a/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
+++ b/src/test/java/org/apache/sling/serviceusermapping/impl/ServiceUserMapperImplTest.java
@@ -26,18 +26,17 @@ import java.util.Dictionary;
import java.util.HashMap;
import java.util.Map;
-import junit.framework.TestCase;
-
import org.apache.sling.serviceusermapping.ServiceUserValidator;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
+import junit.framework.TestCase;
+
public class ServiceUserMapperImplTest {
private static final String BUNDLE_SYMBOLIC1 = "bundle1";
@@ -68,23 +67,16 @@ public class ServiceUserMapperImplTest {
when(BUNDLE2.getSymbolicName()).thenReturn(BUNDLE_SYMBOLIC2);
}
-
-
-
@Test
public void test_getServiceUserID() {
- @SuppressWarnings("serial")
- Map<String, Object> config = new HashMap<String, Object>() {
- {
- put("user.mapping", new String[] {
- BUNDLE_SYMBOLIC1 + "=" + SAMPLE, //
- BUNDLE_SYMBOLIC2 + "=" + ANOTHER, //
- BUNDLE_SYMBOLIC1 + ":" + SUB + "=" + SAMPLE_SUB, //
- BUNDLE_SYMBOLIC2 + ":" + SUB + "=" + ANOTHER_SUB //
- });
- put("user.default", NONE);
- }
- };
+ ServiceUserMapperImpl.Config config = mock(ServiceUserMapperImpl.Config.class);
+ when(config.user_mapping()).thenReturn(new String[] {
+ BUNDLE_SYMBOLIC1 + "=" + SAMPLE, //
+ BUNDLE_SYMBOLIC2 + "=" + ANOTHER, //
+ BUNDLE_SYMBOLIC1 + ":" + SUB + "=" + SAMPLE_SUB, //
+ BUNDLE_SYMBOLIC2 + ":" + SUB + "=" + ANOTHER_SUB //
+ });
+ when(config.user_default()).thenReturn(NONE);
final ServiceUserMapperImpl sum = new ServiceUserMapperImpl();
sum.configure(null, config);
@@ -99,23 +91,20 @@ public class ServiceUserMapperImplTest {
@Test
public void test_getServiceUserID_WithServiceUserValidator() {
- @SuppressWarnings("serial")
- Map<String, Object> config = new HashMap<String, Object>() {
- {
- put("user.mapping", new String[] {
- BUNDLE_SYMBOLIC1 + "=" + SAMPLE, //
- BUNDLE_SYMBOLIC2 + "=" + ANOTHER, //
- BUNDLE_SYMBOLIC1 + ":" + SUB + "=" + SAMPLE_SUB, //
- BUNDLE_SYMBOLIC2 + ":" + SUB + "=" + ANOTHER_SUB //
- });
- put("user.default", NONE);
- }
- };
+ ServiceUserMapperImpl.Config config = mock(ServiceUserMapperImpl.Config.class);
+ when(config.user_mapping()).thenReturn(new String[] {
+ BUNDLE_SYMBOLIC1 + "=" + SAMPLE, //
+ BUNDLE_SYMBOLIC2 + "=" + ANOTHER, //
+ BUNDLE_SYMBOLIC1 + ":" + SUB + "=" + SAMPLE_SUB, //
+ BUNDLE_SYMBOLIC2 + ":" + SUB + "=" + ANOTHER_SUB //
+ });
+ when(config.user_default()).thenReturn(NONE);
final ServiceUserMapperImpl sum = new ServiceUserMapperImpl();
sum.configure(null, config);
ServiceUserValidator serviceUserValidator = new ServiceUserValidator() {
+ @Override
public boolean isValid(String serviceUserId, String serviceName,
String subServiceName) {
if (SAMPLE.equals(serviceUserId)) {
@@ -136,41 +125,39 @@ public class ServiceUserMapperImplTest {
@Test
public void test_amendment() {
- @SuppressWarnings("serial")
- Map<String, Object> config = new HashMap<String, Object>() {
- {
- put("user.mapping", new String[] {
- BUNDLE_SYMBOLIC1 + "=" + SAMPLE, //
- BUNDLE_SYMBOLIC1 + ":" + SUB + "=" + SAMPLE_SUB, //
- });
- put("user.default", NONE);
- }
- };
+ ServiceUserMapperImpl.Config config = mock(ServiceUserMapperImpl.Config.class);
+ when(config.user_mapping()).thenReturn(new String[] {
+ BUNDLE_SYMBOLIC1 + "=" + SAMPLE, //
+ BUNDLE_SYMBOLIC1 + ":" + SUB + "=" + SAMPLE_SUB, //
+ });
+ when(config.user_default()).thenReturn(NONE);
final ServiceUserMapperImpl sum = new ServiceUserMapperImpl();
sum.configure(null, config);
final MappingConfigAmendment mca1 = new MappingConfigAmendment();
- @SuppressWarnings("serial")
- 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);
- }
- };
+
+ MappingConfigAmendment.Config mca1Config = mock(MappingConfigAmendment.Config.class);
+ when(mca1Config.user_mapping()).thenReturn(new String[] {BUNDLE_SYMBOLIC2 + "=" + ANOTHER});
+ when(mca1Config.service_ranking()).thenReturn(100);
+ Map<String, Object> mca1ConfigMap = new HashMap<>();
+ mca1ConfigMap.put("user.mapping", mca1Config.user_mapping());
+ mca1ConfigMap.put("service.ranking", mca1Config.service_ranking());
+ mca1ConfigMap.put("service.id", 1L);
+
mca1.configure(mca1Config);
- sum.bindAmendment(mca1, mca1Config);
+ sum.bindAmendment(mca1, mca1ConfigMap);
final MappingConfigAmendment mca2 = new MappingConfigAmendment();
- @SuppressWarnings("serial")
- final Map<String, Object> mca2Config = new HashMap<String, Object>() {
- {
- put("user.mapping", new String [] {BUNDLE_SYMBOLIC2 + ":" + SUB + "=" + ANOTHER_SUB});
- put(Constants.SERVICE_ID, 2L);
- put(Constants.SERVICE_RANKING, 200);
- }
- };
+
+ MappingConfigAmendment.Config mca2Config = mock(MappingConfigAmendment.Config.class);
+ when(mca2Config.user_mapping()).thenReturn(new String[] {BUNDLE_SYMBOLIC2 + ":" + SUB + "=" + ANOTHER_SUB});
+ when(mca2Config.service_ranking()).thenReturn(200);
+ Map<String, Object> mca2ConfigMap = new HashMap<>();
+ mca2ConfigMap.put("user.mapping", mca2Config.user_mapping());
+ mca2ConfigMap.put("service.ranking", mca2Config.service_ranking());
+ mca2ConfigMap.put("service.id", 2L);
+
mca2.configure(mca2Config);
- sum.bindAmendment(mca2, mca2Config);
+ sum.bindAmendment(mca2, mca2ConfigMap);
TestCase.assertEquals(SAMPLE, sum.getServiceUserID(BUNDLE1, null));
TestCase.assertEquals(ANOTHER, sum.getServiceUserID(BUNDLE2, null));
@@ -182,37 +169,36 @@ public class ServiceUserMapperImplTest {
@Test
public void test_amendmentOverlap() {
- @SuppressWarnings("serial")
- final Map<String, Object> config = new HashMap<String, Object>() {
- {
- put("user.default", NONE);
- }
- };
+ ServiceUserMapperImpl.Config config = mock(ServiceUserMapperImpl.Config.class);
+ when(config.user_mapping()).thenReturn(new String[] {});
+ when(config.user_default()).thenReturn(NONE);
final ServiceUserMapperImpl sum = new ServiceUserMapperImpl();
sum.configure(null, config);
final MappingConfigAmendment mca1 = new MappingConfigAmendment();
- @SuppressWarnings("serial")
- final Map<String, Object> mca1Config = new HashMap<String, Object>() {
- {
- put("user.mapping", new String [] {BUNDLE_SYMBOLIC2 + "=" + ANOTHER});
- put(Constants.SERVICE_RANKING, 100);
- }
- };
+
+ MappingConfigAmendment.Config mca1Config = mock(MappingConfigAmendment.Config.class);
+ when(mca1Config.user_mapping()).thenReturn(new String[] {BUNDLE_SYMBOLIC2 + "=" + ANOTHER});
+ when(mca1Config.service_ranking()).thenReturn(100);
+ Map<String, Object> mca1ConfigMap = new HashMap<>();
+ mca1ConfigMap.put("user.mapping", mca1Config.user_mapping());
+ mca1ConfigMap.put("service.ranking", mca1Config.service_ranking());
+
mca1.configure(mca1Config);
final MappingConfigAmendment mca2 = new MappingConfigAmendment();
- @SuppressWarnings("serial")
- final Map<String, Object> mca2Config = new HashMap<String, Object>() {
- {
- put("user.mapping", new String [] {BUNDLE_SYMBOLIC2 + "=" + ANOTHER_SUB});
- put(Constants.SERVICE_RANKING, 200);
- }
- };
+
+ MappingConfigAmendment.Config mca2Config = mock(MappingConfigAmendment.Config.class);
+ when(mca2Config.user_mapping()).thenReturn(new String[] {BUNDLE_SYMBOLIC2 + "=" + ANOTHER_SUB});
+ when(mca2Config.service_ranking()).thenReturn(200);
+ Map<String, Object> mca2ConfigMap = new HashMap<>();
+ mca2ConfigMap.put("user.mapping", mca2Config.user_mapping());
+ mca2ConfigMap.put("service.ranking", mca2Config.service_ranking());
+
mca2.configure(mca2Config);
- sum.bindAmendment(mca1, mca1Config);
- sum.bindAmendment(mca2, mca2Config);
+ sum.bindAmendment(mca1, mca1ConfigMap);
+ sum.bindAmendment(mca2, mca2ConfigMap);
TestCase.assertEquals(ANOTHER_SUB, sum.getServiceUserID(BUNDLE2, ""));
}
@@ -221,16 +207,13 @@ public class ServiceUserMapperImplTest {
@Test
public void test_amendmentServiceUserMapping() {
- @SuppressWarnings("serial")
- Map<String, Object> config = new HashMap<String, Object>() {
- {
- put("user.mapping", new String[] {
- BUNDLE_SYMBOLIC1 + "=" + SAMPLE, //
- BUNDLE_SYMBOLIC1 + ":" + SUB + "=" + SAMPLE_SUB, //
+
+ ServiceUserMapperImpl.Config config = mock(ServiceUserMapperImpl.Config.class);
+ when(config.user_mapping()).thenReturn(new String[] {
+ BUNDLE_SYMBOLIC1 + "=" + SAMPLE, //
+ BUNDLE_SYMBOLIC1 + ":" + SUB + "=" + SAMPLE_SUB, //
});
- put("user.default", NONE);
- }
- };
+ when(config.user_default()).thenReturn(NONE);
final ServiceUserMapperImpl sum = new ServiceUserMapperImpl();
sum.registerAsync = false;
@@ -240,34 +223,36 @@ public class ServiceUserMapperImplTest {
TestCase.assertEquals(2, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
final MappingConfigAmendment mca1 = new MappingConfigAmendment();
- @SuppressWarnings("serial")
- 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);
- }
- };
+
+ MappingConfigAmendment.Config mca1Config = mock(MappingConfigAmendment.Config.class);
+ when(mca1Config.user_mapping()).thenReturn(new String[] {BUNDLE_SYMBOLIC2 + "=" + ANOTHER});
+ when(mca1Config.service_ranking()).thenReturn(100);
+ Map<String, Object> mca1ConfigMap = new HashMap<>();
+ mca1ConfigMap.put("user.mapping", mca1Config.user_mapping());
+ mca1ConfigMap.put("service.ranking", mca1Config.service_ranking());
+ mca1ConfigMap.put("service.id", 1L);
+
mca1.configure(mca1Config);
- sum.bindAmendment(mca1, mca1Config);
+ sum.bindAmendment(mca1, mca1ConfigMap);
TestCase.assertEquals(3, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
final MappingConfigAmendment mca2 = new MappingConfigAmendment();
- @SuppressWarnings("serial")
- final Map<String, Object> mca2Config = new HashMap<String, Object>() {
- {
- put("user.mapping", new String [] {BUNDLE_SYMBOLIC2 + ":" + SUB + "=" + ANOTHER_SUB});
- put(Constants.SERVICE_ID, 2L);
- put(Constants.SERVICE_RANKING, 200);
- }
- };
+
+ MappingConfigAmendment.Config mca2Config = mock(MappingConfigAmendment.Config.class);
+ when(mca2Config.user_mapping()).thenReturn(new String[] {BUNDLE_SYMBOLIC2 + ":" + SUB + "=" + ANOTHER_SUB});
+ when(mca2Config.service_ranking()).thenReturn(200);
+ Map<String, Object> mca2ConfigMap = new HashMap<>();
+ mca2ConfigMap.put("user.mapping", mca2Config.user_mapping());
+ mca2ConfigMap.put("service.ranking", mca2Config.service_ranking());
+ mca2ConfigMap.put("service.id", 2L);
+
mca2.configure(mca2Config);
- sum.bindAmendment(mca2, mca2Config);
+ sum.bindAmendment(mca2, mca2ConfigMap);
TestCase.assertEquals(4, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
- sum.unbindAmendment(mca1, mca1Config);
+ sum.unbindAmendment(mca1, mca1ConfigMap);
TestCase.assertEquals(3, context.getRegistrations(ServiceUserMappedImpl.SERVICEUSERMAPPED).size());
}
@@ -282,6 +267,7 @@ public class ServiceUserMapperImplTest {
public ServiceRegistrationContextHelper() {
when(bundleContext.registerService(any(String.class), any(Object.class), any(Dictionary.class)))
.then(new Answer<ServiceRegistration>() {
+ @Override
public ServiceRegistration answer(InvocationOnMock invocationOnMock) throws Throwable {
Object[] arguments = invocationOnMock.getArguments();
@@ -301,14 +287,17 @@ public class ServiceUserMapperImplTest {
return new ServiceRegistration() {
+ @Override
public ServiceReference getReference() {
return null;
}
+ @Override
public void setProperties(Dictionary dictionary) {
}
+ @Override
public void unregister() {
serviceRegistrations.remove(registeredObject);
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.