You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2017/08/03 22:10:19 UTC
svn commit: r1804055 -
/sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java
Author: pauls
Date: Thu Aug 3 22:10:19 2017
New Revision: 1804055
URL: http://svn.apache.org/viewvc?rev=1804055&view=rev
Log:
Calculate the Capabilites provided by the framework.
Modified:
sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java
Modified: sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java?rev=1804055&r1=1804054&r2=1804055&view=diff
==============================================================================
--- sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java (original)
+++ sling/whiteboard/cziegeler/feature-analyser/src/main/java/org/apache/sling/feature/scanner/impl/FelixFrameworkScanner.java Thu Aug 3 22:10:19 2017
@@ -18,23 +18,36 @@ package org.apache.sling.feature.scanner
import org.apache.sling.commons.osgi.ManifestHeader;
import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Capability;
import org.apache.sling.feature.KeyValueMap;
import org.apache.sling.feature.analyser.Descriptor;
import org.apache.sling.feature.scanner.FrameworkScanner;
+import org.apache.sling.feature.support.util.LambdaUtil;
+import org.apache.sling.feature.support.util.ManifestParser;
+import org.apache.sling.feature.support.util.ManifestUtil;
import org.apache.sling.feature.support.util.PackageInfo;
import org.osgi.framework.Constants;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.Objects;
import java.util.Properties;
import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
+import static org.apache.sling.feature.support.util.LambdaUtil.rethrowFunction;
+import static org.apache.sling.feature.support.util.ManifestParser.convertProvideCapabilities;
+import static org.apache.sling.feature.support.util.ManifestParser.normalizeCapabilityClauses;
+import static org.apache.sling.feature.support.util.ManifestParser.parseStandardHeader;
+
public class FelixFrameworkScanner implements FrameworkScanner {
@@ -48,15 +61,34 @@ public class FelixFrameworkScanner imple
return null;
}
final Set<PackageInfo> pcks = calculateSystemPackages(fwkProps);
+ final Set<Capability> capabilities = calculateSystemCapabilities(fwkProps);
+
return new Descriptor() {
@Override
public Set<PackageInfo> getExportedPackages() {
return pcks;
}
+
+ @Override
+ public Set<Capability> getCapabilities() {
+ return capabilities;
+ }
};
}
+ private Set<Capability> calculateSystemCapabilities(final KeyValueMap fwkProps) {
+ return Stream.of(
+ fwkProps.get(Constants.FRAMEWORK_SYSTEMCAPABILITIES),
+ fwkProps.get(Constants.FRAMEWORK_SYSTEMCAPABILITIES_EXTRA)
+ )
+ .filter(Objects::nonNull)
+ .flatMap(
+ rethrowFunction(header ->
+ convertProvideCapabilities(normalizeCapabilityClauses(parseStandardHeader(header), "2")).stream()
+ )).collect(Collectors.toSet());
+ }
+
private Set<PackageInfo> calculateSystemPackages(final KeyValueMap fwkProps) {
final String system = fwkProps.get(Constants.FRAMEWORK_SYSTEMPACKAGES);
final String extra = fwkProps.get(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA);