This is an automated email from the ASF dual-hosted git repository.
cschneider pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-core.git
The following commit(s) were added to refs/heads/master by this push:
new 4aa10e5 SLING-9582 - adjust lookup of osgi config via
ConfigurationAdmin to use getProcessedProperties
new c96d3fb Merge pull request #42 from DominikSuess/issue/SLING-9582
4aa10e5 is described below
commit 4aa10e5b1b3881dd13722ca37674b6b1fde44c0d
Author: Dominik Suess <[email protected]>
AuthorDate: Tue Jul 14 17:50:14 2020 +0200
SLING-9582 - adjust lookup of osgi config via ConfigurationAdmin to use
getProcessedProperties
---
pom.xml | 16 +++++++++++++++-
.../impl/DefaultDistributionConfigurationManager.java | 5 +++--
.../component/impl/OsgiConfigurationManager.java | 10 ++++++----
3 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/pom.xml b/pom.xml
index a809352..a134cbc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -157,9 +157,23 @@
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>osgi.cmpn</artifactId>
+ <artifactId>org.osgi.service.cm</artifactId>
+ <version>1.6.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.service.component</artifactId>
+ <version>1.4.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.service.event</artifactId>
+ <version>1.4.0</version>
<scope>provided</scope>
</dependency>
+
<!-- need it here as to avoid classpath conflicts with testing mock -->
<dependency>
<groupId>org.apache.sling</groupId>
diff --git
a/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionConfigurationManager.java
b/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionConfigurationManager.java
index a14bb8b..6c2538b 100644
---
a/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionConfigurationManager.java
+++
b/src/main/java/org/apache/sling/distribution/component/impl/DefaultDistributionConfigurationManager.java
@@ -33,6 +33,7 @@ import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.commons.osgi.PropertiesUtil;
import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -75,7 +76,7 @@ public class DefaultDistributionConfigurationManager
implements DistributionConf
private final Logger log = LoggerFactory.getLogger(getClass());
@Activate
- void activate(Map<String, Object> properties) {
+ void activate(ComponentContext ctx, Map<String, Object> properties) {
boolean configEnabled =
PropertiesUtil.toBoolean(properties.get(CONFIG_ENABLED), false);
String configRoot =
SettingsUtils.removeEmptyEntry(PropertiesUtil.toString(properties.get(CONFIG_ROOT),
null));
@@ -89,7 +90,7 @@ public class DefaultDistributionConfigurationManager
implements DistributionConf
resourceManager = new ResourceConfigurationManager(configRoot,
configProperties, configDefaults);
}
- osgiManager = new OsgiConfigurationManager(configurationAdmin,
componentFactoryMap);
+ osgiManager = new OsgiConfigurationManager(configurationAdmin,
componentFactoryMap, ctx.getServiceReference());
}
@Deactivate
diff --git
a/src/main/java/org/apache/sling/distribution/component/impl/OsgiConfigurationManager.java
b/src/main/java/org/apache/sling/distribution/component/impl/OsgiConfigurationManager.java
index d82868c..a4466b8 100644
---
a/src/main/java/org/apache/sling/distribution/component/impl/OsgiConfigurationManager.java
+++
b/src/main/java/org/apache/sling/distribution/component/impl/OsgiConfigurationManager.java
@@ -34,6 +34,7 @@ import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.distribution.resources.impl.OsgiUtils;
import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
import org.slf4j.Logger;
@@ -45,11 +46,12 @@ import org.slf4j.LoggerFactory;
public class OsgiConfigurationManager implements
DistributionConfigurationManager {
private final ConfigurationAdmin configurationAdmin;
private final Logger log = LoggerFactory.getLogger(getClass());
+ private final ServiceReference<?> ref;
private final DistributionComponentFactoryMap componentFactoryMap;
- public OsgiConfigurationManager(ConfigurationAdmin configurationAdmin,
DistributionComponentFactoryMap componentFactoryMap) {
-
+ public OsgiConfigurationManager(ConfigurationAdmin configurationAdmin,
DistributionComponentFactoryMap componentFactoryMap, ServiceReference<?> ref) {
+ this.ref = ref;
this.configurationAdmin = configurationAdmin;
this.componentFactoryMap = componentFactoryMap;
}
@@ -65,7 +67,7 @@ public class OsgiConfigurationManager implements
DistributionConfigurationManage
for (Configuration configuration : configurations) {
- Dictionary<String, Object> propertiesDict =
configuration.getProperties();
+ Dictionary<String, Object> propertiesDict =
configuration.getProcessedProperties(ref);
Map<String, Object> properties =
OsgiUtils.fromDictionary(propertiesDict);
properties = filterBeforeRead(properties);
@@ -92,7 +94,7 @@ public class OsgiConfigurationManager implements
DistributionConfigurationManage
Configuration configuration = configurations.get(0);
if (configuration != null) {
- Dictionary<String, Object> properties =
configuration.getProperties();
+ Dictionary<String, Object> properties =
configuration.getProcessedProperties(ref);
Map<String, Object> result = OsgiUtils.fromDictionary(properties);
String factoryPid =
PropertiesUtil.toString(result.get(ConfigurationAdmin.SERVICE_FACTORYPID),
null);