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 2017/08/04 15:18:15 UTC

svn commit: r1804135 - in /sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature: analyser/ContainerDescriptor.java analyser/Scanner.java scanner/ExtensionScanner.java

Author: cziegeler
Date: Fri Aug  4 15:18:15 2017
New Revision: 1804135

URL: http://svn.apache.org/viewvc?rev=1804135&view=rev
Log:
Adjust ExtensionScanner interface

Modified:
    sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ContainerDescriptor.java
    sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Scanner.java
    sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ExtensionScanner.java

Modified: sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ContainerDescriptor.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ContainerDescriptor.java?rev=1804135&r1=1804134&r2=1804135&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ContainerDescriptor.java (original)
+++ sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/ContainerDescriptor.java Fri Aug  4 15:18:15 2017
@@ -24,7 +24,23 @@ import java.util.Set;
  */
 public interface ContainerDescriptor extends Descriptor {
 
+    /**
+     * Return a set of bundle descriptors.
+     *
+     * The requirements and capabilities of the returned bundles are
+     * available as an aggregate from {@link Descriptor#getCapabilities()},
+     * {@link Descriptor#getRequirements()}, {@link Descriptor#getDynamicImportedPackages()}
+     * {@link Descriptor#getExportedPackages()} and {@link Descriptor#getImportedPackages()}
+     * @return The set of bundle descriptors (might be empty)
+     */
     Set<BundleDescriptor> getBundleDescriptors();
 
+    /**
+     * Return a set of artifact descriptors
+     * The requirements and capabilities of the returned artifacts are
+     * available as an aggregate from {@link Descriptor#getCapabilities()},
+     * {@link Descriptor#getRequirements()}.
+     * @return The set of artifact descriptors (might be empty)
+     */
     Set<ArtifactDescriptor> getArtifactDescriptors();
 }
\ No newline at end of file

Modified: sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Scanner.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Scanner.java?rev=1804135&r1=1804134&r2=1804135&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Scanner.java (original)
+++ sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/analyser/Scanner.java Fri Aug  4 15:18:15 2017
@@ -27,7 +27,6 @@ import org.apache.sling.feature.Applicat
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Bundles;
 import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.Extensions;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.analyser.impl.ApplicationDescriptorImpl;
@@ -178,26 +177,9 @@ public class Scanner {
     private void scan(final Extensions extensions, final ContainerDescriptorImpl desc)
     throws IOException {
         for(final Extension ext : extensions) {
-            final List<ArtifactDescriptor> infos;
-            if ( ext.getType() == ExtensionType.ARTIFACTS ) {
-                infos = new ArrayList<>();
-                for(final Artifact artifact : ext.getArtifacts()) {
-                    final ArtifactDescriptor artifactDesc = scan(artifact);
-                    infos.add(artifactDesc);
-                    desc.getArtifactDescriptors().add(artifactDesc);
-                    // aggregate
-                    desc.getRequirements().addAll(artifactDesc.getRequirements());
-                    desc.getCapabilities().addAll(artifactDesc.getCapabilities());
-                    desc.getExportedPackages().addAll(artifactDesc.getExportedPackages());
-                    desc.getImportedPackages().addAll(artifactDesc.getImportedPackages());
-                    desc.getDynamicImportedPackages().addAll(artifactDesc.getDynamicImportedPackages());
-                }
-            } else {
-                infos = null;
-            }
-            Descriptor extDesc = null;
+            ContainerDescriptor extDesc = null;
             for(final ExtensionScanner scanner : this.extensionScanners) {
-                extDesc = scanner.scan(ext, infos, this.artifactManager);
+                extDesc = scanner.scan(ext, this, this.artifactManager);
                 if ( extDesc != null ) {
                     break;
                 }
@@ -211,11 +193,8 @@ public class Scanner {
             desc.getImportedPackages().addAll(extDesc.getImportedPackages());
             desc.getDynamicImportedPackages().addAll(extDesc.getDynamicImportedPackages());
 
-            if ( extDesc instanceof ContainerDescriptor ) {
-                final ContainerDescriptor cd = (ContainerDescriptor)extDesc;
-                desc.getArtifactDescriptors().addAll(cd.getArtifactDescriptors());
-                desc.getBundleDescriptors().addAll(cd.getBundleDescriptors());
-            }
+            desc.getArtifactDescriptors().addAll(extDesc.getArtifactDescriptors());
+            desc.getBundleDescriptors().addAll(extDesc.getBundleDescriptors());
         }
     }
 
@@ -224,6 +203,7 @@ public class Scanner {
         // same with requirements
 
     }
+
     /**
      * Scan a feature
      *

Modified: sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ExtensionScanner.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ExtensionScanner.java?rev=1804135&r1=1804134&r2=1804135&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ExtensionScanner.java (original)
+++ sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/ExtensionScanner.java Fri Aug  4 15:18:15 2017
@@ -16,14 +16,13 @@
  */
 package org.apache.sling.feature.scanner;
 
+import java.io.IOException;
+
 import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.analyser.ArtifactDescriptor;
-import org.apache.sling.feature.analyser.Descriptor;
+import org.apache.sling.feature.analyser.ContainerDescriptor;
+import org.apache.sling.feature.analyser.Scanner;
 import org.apache.sling.feature.support.ArtifactManager;
 
-import java.io.IOException;
-import java.util.List;
-
 /**
  * The extension scanner scans an extension.
  */
@@ -37,13 +36,14 @@ public interface ExtensionScanner  {
 
     /**
      * Try to scan the extension and return a descriptor
+     *
      * @param extension The extension
-     * @param descs A list of scanned artifact descriptors if the extension is of type artifacts, {@code null} otherwise.
+     * @param scanner The scanner to scan included artifacts
      * @param manager Artifact manager
      * @return The descriptor or {@code null} if the scanner does not know the extension
      * @throws IOException If an error occurs while scanning the extension or the extension is invalid
      */
-    Descriptor scan(Extension extension,
-            List<ArtifactDescriptor> descs,
+    ContainerDescriptor scan(Extension extension,
+            Scanner scanner,
             ArtifactManager manager) throws IOException;
 }
\ No newline at end of file