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 2020/10/08 15:36:42 UTC

[sling-org-apache-sling-feature-analyser] branch master updated: SLING-9804 : Make descriptors available via AnalyseResult

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 93b09d8  SLING-9804 : Make descriptors available via AnalyseResult
93b09d8 is described below

commit 93b09d8710628907ea4329f8dec1ff4db702b031
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Thu Oct 8 17:36:17 2020 +0200

    SLING-9804 : Make descriptors available via AnalyseResult
---
 .../apache/sling/feature/analyser/Analyser.java    | 118 ++++++++++++---------
 .../sling/feature/analyser/AnalyserResult.java     |  19 ++++
 .../sling/feature/analyser/package-info.java       |   2 +-
 3 files changed, 85 insertions(+), 54 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 19d7692..a43d34e 100644
--- a/src/main/java/org/apache/sling/feature/analyser/Analyser.java
+++ b/src/main/java/org/apache/sling/feature/analyser/Analyser.java
@@ -53,29 +53,29 @@ public class Analyser {
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
-    private final Map<String, Map<String,String>> configurations;
+    private final Map<String, Map<String, String>> configurations;
 
     /**
      * Create new analyser with a provided scanner and the tasks to run
+     * 
      * @param scanner The scanner
-     * @param tasks The tasks to run
+     * @param tasks   The tasks to run
      * @throws IOException If setting up the analyser fails
      */
-    public Analyser(final Scanner scanner,
-            final AnalyserTask...tasks) throws IOException {
+    public Analyser(final Scanner scanner, final AnalyserTask... tasks) throws IOException {
         this(scanner, Collections.emptyMap(), tasks);
     }
 
     /**
      * Create a new analyser with a provided scanner, tasks and configurations
-     * @param scanner The scanner
+     * 
+     * @param scanner        The scanner
      * @param configurations The configurations for the tasks
-     * @param tasks The tasks
+     * @param tasks          The tasks
      * @throws IOException If setting up the analyser fails
      */
-    public Analyser(final Scanner scanner,
-            final Map<String, Map<String,String>> configurations,
-            final AnalyserTask...tasks) throws IOException {
+    public Analyser(final Scanner scanner, final Map<String, Map<String, String>> configurations,
+            final AnalyserTask... tasks) throws IOException {
         this.tasks = tasks;
         this.configurations = configurations;
         this.scanner = scanner;
@@ -83,63 +83,63 @@ public class Analyser {
 
     /**
      * Create a new analyser with the provided scanner and task class names
-     * @param scanner The scanner
+     * 
+     * @param scanner        The scanner
      * @param taskClassNames The task class names
      * @throws IOException If setting up the analyser fails
      */
-    public Analyser(final Scanner scanner,
-            final String... taskClassNames)
-    throws IOException {
+    public Analyser(final Scanner scanner, final String... taskClassNames) throws IOException {
         this(scanner, Collections.emptyMap(), taskClassNames);
     }
 
-   /**
-     * Create a new analyser with a provided scanner, task class names and configurations
-     * @param scanner The scanner
+    /**
+     * Create a new analyser with a provided scanner, task class names and
+     * configurations
+     * 
+     * @param scanner        The scanner
      * @param configurations The configurations for the tasks
      * @param taskClassNames The task class names
      * @throws IOException If setting up the analyser fails
      */
-    public Analyser(final Scanner scanner,
-            final Map<String, Map<String,String>> configurations,
-            final String... taskClassNames)
-    throws IOException {
+    public Analyser(final Scanner scanner, final Map<String, Map<String, String>> configurations,
+            final String... taskClassNames) throws IOException {
         this(scanner, configurations, getTasksByClassName(taskClassNames));
-        if ( this.tasks.length != taskClassNames.length ) {
+        if (this.tasks.length != taskClassNames.length) {
             throw new IOException("Couldn't find all tasks " + Arrays.toString(taskClassNames));
         }
     }
 
     /**
-     * Create a new analyser with a provided scanner and includes/excludes for the task ids
-     * @param scanner The scanner
+     * Create a new analyser with a provided scanner and includes/excludes for the
+     * task ids
+     * 
+     * @param scanner  The scanner
      * @param includes The includes for the task ids
      * @param excludes The excludes for the task ids
      * @throws IOException If setting up the analyser fails
      */
-    public Analyser(final Scanner scanner,
-                    final Set<String> includes,
-                    final Set<String> excludes) throws IOException {
+    public Analyser(final Scanner scanner, final Set<String> includes, final Set<String> excludes) throws IOException {
         this(scanner, Collections.emptyMap(), includes, excludes);
     }
 
-   /**
-     * Create a new analyser with a provided scanner and includes/excludes for the task ids and configuration
-     * @param scanner The scanner
+    /**
+     * Create a new analyser with a provided scanner and includes/excludes for the
+     * task ids and configuration
+     * 
+     * @param scanner        The scanner
      * @param configurations The configurations for the tasks
-     * @param includes The includes for the task ids
-     * @param excludes The excludes for the task ids
+     * @param includes       The includes for the task ids
+     * @param excludes       The excludes for the task ids
      * @throws IOException If setting up the analyser fails
      */
-    public Analyser(final Scanner scanner,
-            final Map<String, Map<String,String>> configurations,
-                    final Set<String> includes,
-                    final Set<String> excludes) throws IOException {
+    public Analyser(final Scanner scanner, final Map<String, Map<String, String>> configurations,
+            final Set<String> includes, final Set<String> excludes) throws IOException {
         this(scanner, configurations, getTasksByIds(includes, excludes));
     }
 
     /**
      * Create a new analyser with the provided scanner and use all available tasks
+     * 
      * @param scanner The scanner
      * @throws IOException If setting up the analyser fails
      */
@@ -149,6 +149,7 @@ public class Analyser {
 
     /**
      * Analyse the feature
+     * 
      * @param feature The feature to analyse
      * @return The analyser result
      * @throws Exception If analysing fails
@@ -159,8 +160,9 @@ public class Analyser {
 
     /**
      * Analyse the feature using the provided framework artifact
+     * 
      * @param feature The feature to analyse
-     * @param fwk The OSGi framework artifact
+     * @param fwk     The OSGi framework artifact
      * @return The analyser result
      * @throws Exception If analysing fails
      */
@@ -168,28 +170,30 @@ public class Analyser {
         return analyse(feature, fwk, null);
     }
 
-   /**
+    /**
      * Analyse the feature using the provided framework artifact
-     * @param feature The feature to analyse
-     * @param fwk The OSGi framework artifact
+     * 
+     * @param feature         The feature to analyse
+     * @param fwk             The OSGi framework artifact
      * @param featureProvider Optional provider to resolve features (if required)
      * @return The analyser result
      * @throws Exception If analysing fails
-     */    
-    public AnalyserResult analyse(final Feature feature, final ArtifactId fwk,
-            final FeatureProvider featureProvider) throws Exception {
+     */
+    public AnalyserResult analyse(final Feature feature, final ArtifactId fwk, final FeatureProvider featureProvider)
+            throws Exception {
         logger.info("Starting analyzing feature '{}'...", feature.getId());
 
         final FeatureDescriptor featureDesc = scanner.scan(feature);
         BundleDescriptor bd = null;
         ArtifactId framework = fwk;
-        if ( framework == null ) {
-            final ExecutionEnvironmentExtension ext = ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(feature);
-            if ( ext != null && ext.getFramework() != null ) {
+        if (framework == null) {
+            final ExecutionEnvironmentExtension ext = ExecutionEnvironmentExtension
+                    .getExecutionEnvironmentExtension(feature);
+            if (ext != null && ext.getFramework() != null) {
                 framework = ext.getFramework().getId();
             }
         }
-        if ( framework != null ) {
+        if (framework != null) {
             bd = scanner.scan(framework, feature.getFrameworkProperties());
         }
         final BundleDescriptor fwkDesc = bd;
@@ -198,10 +202,10 @@ public class Analyser {
         final List<String> errors = new ArrayList<>();
 
         // execute analyser tasks
-        for(final AnalyserTask task : tasks) {
+        for (final AnalyserTask task : tasks) {
             logger.info("- Executing {} [{}]...", task.getName(), task.getId());
 
-            final Map<String,String> taskConfiguration = getConfiguration(task.getId());
+            final Map<String, String> taskConfiguration = getConfiguration(task.getId());
 
             task.execute(new AnalyserTaskContext() {
 
@@ -226,7 +230,7 @@ public class Analyser {
                 }
 
                 @Override
-                public Map<String,String> getConfiguration() {
+                public Map<String, String> getConfiguration() {
                     return taskConfiguration;
                 }
 
@@ -242,10 +246,8 @@ public class Analyser {
             });
         }
 
-        logger.info("Analyzing feature '"
-                    + feature.getId()
-                + "' finished : " + warnings.size() + " warnings, " + errors.size()
-                + " errors.");
+        logger.info("Analyzing feature '" + feature.getId() + "' finished : " + warnings.size() + " warnings, "
+                + errors.size() + " errors.");
 
         return new AnalyserResult() {
 
@@ -258,6 +260,16 @@ public class Analyser {
             public List<String> getErrors() {
                 return errors;
             }
+
+            @Override
+            public FeatureDescriptor getFeatureDescriptor() {
+                return featureDesc;
+            }
+
+            @Override
+            public BundleDescriptor getFrameworkDescriptor() {
+                return fwkDesc;
+            }
         };
     }
 
diff --git a/src/main/java/org/apache/sling/feature/analyser/AnalyserResult.java b/src/main/java/org/apache/sling/feature/analyser/AnalyserResult.java
index c9bcc91..717eedf 100644
--- a/src/main/java/org/apache/sling/feature/analyser/AnalyserResult.java
+++ b/src/main/java/org/apache/sling/feature/analyser/AnalyserResult.java
@@ -18,9 +18,14 @@ package org.apache.sling.feature.analyser;
 
 import java.util.List;
 
+import org.apache.sling.feature.scanner.BundleDescriptor;
+import org.apache.sling.feature.scanner.FeatureDescriptor;
+import org.osgi.annotation.versioning.ProviderType;
+
 /**
  * The result returned by the analyser
  */
+@ProviderType
 public interface AnalyserResult {
 
     /**
@@ -34,4 +39,18 @@ public interface AnalyserResult {
      * @return A list of errors might be empty
      */
     List<String> getErrors();
+
+    /**
+     * Return the feature descriptor created during scanning
+     * @return The feature descriptor
+     * @since 1.2.0
+     */
+    FeatureDescriptor getFeatureDescriptor();
+
+    /**
+     * Return the framework descriptor created during scanning if available
+     * @return The framework descriptor or {@code null}.
+     * @since 1.2.0
+     */
+    BundleDescriptor getFrameworkDescriptor();
 }
diff --git a/src/main/java/org/apache/sling/feature/analyser/package-info.java b/src/main/java/org/apache/sling/feature/analyser/package-info.java
index 2edfaae..980e803 100644
--- a/src/main/java/org/apache/sling/feature/analyser/package-info.java
+++ b/src/main/java/org/apache/sling/feature/analyser/package-info.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@org.osgi.annotation.versioning.Version("1.1.0")
+@org.osgi.annotation.versioning.Version("1.2.0")
 package org.apache.sling.feature.analyser;