You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2018/11/14 09:00:44 UTC

[sling-org-apache-sling-feature-analyser] branch master updated: SLING-8108 : Provide setter methods for optional context info

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

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-analyser.git


The following commit(s) were added to refs/heads/master by this push:
     new 00048d0  SLING-8108 : Provide setter methods for optional context info
00048d0 is described below

commit 00048d06623a1816d0464847b3165d4dda0a26f0
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Wed Nov 14 10:00:35 2018 +0100

    SLING-8108 : Provide setter methods for optional context info
---
 .../apache/sling/feature/analyser/Analyser.java    | 31 ++++++++++++++--------
 .../feature/analyser/task/AnalyserTaskContext.java |  9 +++----
 .../task/impl/CheckApiRegionsDependencies.java     |  4 +--
 .../impl/AbstractApiRegionsAnalyserTaskTest.java   |  8 ++++--
 4 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/analyser/Analyser.java b/src/main/java/org/apache/sling/feature/analyser/Analyser.java
index 342709e..4e0f343 100644
--- a/src/main/java/org/apache/sling/feature/analyser/Analyser.java
+++ b/src/main/java/org/apache/sling/feature/analyser/Analyser.java
@@ -26,11 +26,11 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Set;
 
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.KeyValueMap;
 import org.apache.sling.feature.analyser.task.AnalyserTask;
 import org.apache.sling.feature.analyser.task.AnalyserTaskContext;
 import org.apache.sling.feature.scanner.BundleDescriptor;
@@ -47,7 +47,7 @@ public class Analyser {
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
-    private final Map<String, Properties> configuration;
+    private final Map<String, KeyValueMap> configurations;
 
     public Analyser(final Scanner scanner,
             final AnalyserTask...tasks) throws IOException {
@@ -55,10 +55,10 @@ public class Analyser {
     }
 
     public Analyser(final Scanner scanner,
-            final Map<String, Properties> configuration,
+            final Map<String, KeyValueMap> configurations,
             final AnalyserTask...tasks) throws IOException {
         this.tasks = tasks;
-        this.configuration = configuration;
+        this.configurations = configurations;
         this.scanner = scanner;
     }
 
@@ -69,10 +69,10 @@ public class Analyser {
     }
 
     public Analyser(final Scanner scanner,
-            final Map<String, Properties> configuration,
+            final Map<String, KeyValueMap> configurations,
             final String... taskClassNames)
     throws IOException {
-        this(scanner, configuration, getTasksByClassName(taskClassNames));
+        this(scanner, configurations, getTasksByClassName(taskClassNames));
         if ( this.tasks.length != taskClassNames.length ) {
             throw new IOException("Couldn't find all tasks " + Arrays.toString(taskClassNames));
         }
@@ -85,10 +85,10 @@ public class Analyser {
     }
 
     public Analyser(final Scanner scanner,
-                    final Map<String, Properties> configuration,
+            final Map<String, KeyValueMap> configurations,
                     final Set<String> includes,
                     final Set<String> excludes) throws IOException {
-        this(scanner, configuration, getTasksByIds(includes, excludes));
+        this(scanner, configurations, getTasksByIds(includes, excludes));
     }
 
     public Analyser(final Scanner scanner) throws IOException {
@@ -116,7 +116,7 @@ public class Analyser {
         for(final AnalyserTask task : tasks) {
             logger.info("- Executing {} [{}]...", task.getName(), task.getId());
 
-            final Properties taskConfiguration = configuration.getOrDefault(task.getId(), new Properties());
+            final KeyValueMap taskConfiguration = getConfiguration(task.getId());
 
             task.execute(new AnalyserTaskContext() {
 
@@ -136,8 +136,8 @@ public class Analyser {
                 }
 
                 @Override
-                public String getConfigurationParameter(String argName, String defaultValue) {
-                    return taskConfiguration.getProperty(argName, defaultValue);
+                public KeyValueMap getConfiguration() {
+                    return taskConfiguration;
                 }
 
                 @Override
@@ -170,4 +170,13 @@ public class Analyser {
             }
         };
     }
+
+    private KeyValueMap getConfiguration(final String id) {
+        final KeyValueMap result = new KeyValueMap();
+
+        result.putAll(this.configurations.get("*"));
+        result.putAll(this.configurations.get(id));
+
+        return result;
+    }
 }
diff --git a/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTaskContext.java b/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTaskContext.java
index 114fab6..610d8a9 100644
--- a/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTaskContext.java
+++ b/src/main/java/org/apache/sling/feature/analyser/task/AnalyserTaskContext.java
@@ -17,6 +17,7 @@
 package org.apache.sling.feature.analyser.task;
 
 import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.KeyValueMap;
 import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.apache.sling.feature.scanner.FeatureDescriptor;
 import org.osgi.annotation.versioning.ProviderType;
@@ -43,13 +44,11 @@ public interface AnalyserTaskContext {
     BundleDescriptor getFrameworkDescriptor();
 
     /**
-     * Returns the context configuration parameter.
+     * Returns the configuration.
      *
-     * @param argName the argument name associated to a configuration value
-     * @param defaultValue the default value, if the configuration parameter is missing
-     * @return a configuration value associated to the input argName, defaultValue if the configuration parameter is missing
+     * @return The configuration map for the analyser task
      */
-    String getConfigurationParameter(String argName, String defaultValue);
+    KeyValueMap getConfiguration();
 
     /**
      * This method is invoked by a {@link AnalyserTask} to report
diff --git a/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckApiRegionsDependencies.java b/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckApiRegionsDependencies.java
index fa35b39..8f80eee 100644
--- a/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckApiRegionsDependencies.java
+++ b/src/main/java/org/apache/sling/feature/analyser/task/impl/CheckApiRegionsDependencies.java
@@ -46,8 +46,8 @@ public class CheckApiRegionsDependencies extends AbstractApiRegionsAnalyserTask
 
     @Override
     protected void execute(ApiRegions apiRegions, AnalyserTaskContext ctx) throws Exception {
-        String exportingApisName = ctx.getConfigurationParameter(EXPORTING_APIS_KEY, DEFAULT_GLOBAL_REGION_NAME);
-        String hidingApisName = ctx.getConfigurationParameter(HIDING_APIS_KEY, DEFAULT_DEPRECATED_REGION_NAME);
+        String exportingApisName = ctx.getConfiguration().getOrDefault(EXPORTING_APIS_KEY, DEFAULT_GLOBAL_REGION_NAME);
+        String hidingApisName = ctx.getConfiguration().getOrDefault(HIDING_APIS_KEY, DEFAULT_DEPRECATED_REGION_NAME);
 
         Set<String> exportingApis = apiRegions.getApis(exportingApisName);
         Set<String> hidingApis = apiRegions.getApis(hidingApisName);
diff --git a/src/test/java/org/apache/sling/feature/analyser/task/impl/AbstractApiRegionsAnalyserTaskTest.java b/src/test/java/org/apache/sling/feature/analyser/task/impl/AbstractApiRegionsAnalyserTaskTest.java
index 181dd05..305abae 100644
--- a/src/test/java/org/apache/sling/feature/analyser/task/impl/AbstractApiRegionsAnalyserTaskTest.java
+++ b/src/test/java/org/apache/sling/feature/analyser/task/impl/AbstractApiRegionsAnalyserTaskTest.java
@@ -34,6 +34,7 @@ import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.Extensions;
 import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.KeyValueMap;
 import org.apache.sling.feature.analyser.task.AnalyserTask;
 import org.apache.sling.feature.analyser.task.AnalyserTaskContext;
 import org.apache.sling.feature.scanner.BundleDescriptor;
@@ -100,7 +101,7 @@ public abstract class AbstractApiRegionsAnalyserTaskTest<T extends AbstractApiRe
 
         Feature feature = mock(Feature.class);
         when(feature.getId()).thenReturn(new ArtifactId("org.apache.sling.testing",
-                                                        "org.apache.sling.testing.apiregions", 
+                                                        "org.apache.sling.testing.apiregions",
                                                         "1.0.0",
                                                         null,
                                                         null));
@@ -108,8 +109,11 @@ public abstract class AbstractApiRegionsAnalyserTaskTest<T extends AbstractApiRe
 
         AnalyserTaskContext ctx = mock(AnalyserTaskContext.class);
         when(ctx.getFeature()).thenReturn(feature);
-        when(ctx.getConfigurationParameter(anyString(), anyString())).thenAnswer(new Answer<String>() {
+        KeyValueMap cfg = mock(KeyValueMap.class);
+        when(ctx.getConfiguration()).thenReturn(cfg);
+        when(cfg.getOrDefault(anyString(), anyString())).thenAnswer(new Answer<String>() {
 
+            @Override
             public String answer(InvocationOnMock invocation) throws Throwable {
                 Object[] args = invocation.getArguments();
                 return (String) args[1];