You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by da...@apache.org on 2018/04/27 10:03:02 UTC

[sling-org-apache-sling-feature-resolver] 18/20: Use felix utils ResourceBuilder and Parser instead of the ManifestParser and ManifestUtil. As with that the feature-support module is empty, remove it.

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

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

commit a6e0bf076ff9ecec9089be7a128162b3d876cb3d
Author: Karl Pauls <kp...@adobe.com>
AuthorDate: Thu Apr 26 12:00:25 2018 +0200

    Use felix utils ResourceBuilder and Parser instead of the ManifestParser and ManifestUtil. As with that the feature-support module is empty, remove it.
---
 pom.xml                                            |  6 ---
 .../feature/resolver/impl/BundleResourceImpl.java  | 33 +---------------
 .../sling/feature/resolver/AnalyserTest.java       |  1 +
 .../feature/resolver/TestBundleResourceImpl.java   |  2 +-
 .../resolver/impl/BundleResourceImplTest.java      | 46 ++++++++++++++++------
 5 files changed, 36 insertions(+), 52 deletions(-)

diff --git a/pom.xml b/pom.xml
index c52badb..d320ce2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,12 +80,6 @@
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.feature.support</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.commons.osgi</artifactId>
             <version>2.4.0</version>
             <scope>provided</scope>
diff --git a/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java b/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java
index 901b141..e196145 100644
--- a/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java
+++ b/src/main/java/org/apache/sling/feature/resolver/impl/BundleResourceImpl.java
@@ -22,7 +22,7 @@ import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.resolver.FeatureResource;
 import org.apache.sling.feature.scanner.BundleDescriptor;
-import org.apache.sling.feature.support.util.PackageInfo;
+import org.apache.sling.feature.scanner.PackageInfo;
 import org.osgi.framework.Version;
 import org.osgi.framework.VersionRange;
 import org.osgi.framework.namespace.BundleNamespace;
@@ -69,18 +69,6 @@ public class BundleResourceImpl extends AbstractResourceImpl implements FeatureR
             l.add(new CapabilityImpl(this, c));
         }
 
-        // Add the package capabilities (export package)
-        List<Capability> pkgCaps = new ArrayList<>();
-        for(PackageInfo exported : bd.getExportedPackages()) {
-            Map<String, Object> attrs = new HashMap<>();
-            attrs.put(PackageNamespace.PACKAGE_NAMESPACE, exported.getName());
-            attrs.put(PackageNamespace.CAPABILITY_VERSION_ATTRIBUTE, exported.getPackageVersion());
-            attrs.put(PackageNamespace.CAPABILITY_BUNDLE_SYMBOLICNAME_ATTRIBUTE, bsn);
-            attrs.put(PackageNamespace.CAPABILITY_BUNDLE_VERSION_ATTRIBUTE, version);
-            pkgCaps.add(new CapabilityImpl(this, PackageNamespace.PACKAGE_NAMESPACE, null, attrs));
-        }
-        caps.put(PackageNamespace.PACKAGE_NAMESPACE, Collections.unmodifiableList(pkgCaps));
-
         // Add the identity capability
         Map<String, Object> idattrs = new HashMap<>();
         idattrs.put(IdentityNamespace.IDENTITY_NAMESPACE, bsn);
@@ -111,25 +99,6 @@ public class BundleResourceImpl extends AbstractResourceImpl implements FeatureR
         // TODO What do we do with the execution environment?
         reqs.remove(ExecutionEnvironmentNamespace.EXECUTION_ENVIRONMENT_NAMESPACE);
 
-        // Add the package requirements (import package)
-        List<Requirement> pkgReqs = new ArrayList<>();
-        for(PackageInfo imported : bd.getImportedPackages()) {
-            Map<String, String> dirs = new HashMap<>();
-            VersionRange range = imported.getPackageVersionRange();
-            String rangeFilter;
-            if (range != null) {
-                rangeFilter = range.toFilterString(PackageNamespace.CAPABILITY_VERSION_ATTRIBUTE);
-            } else {
-                rangeFilter = "";
-            }
-            dirs.put(PackageNamespace.REQUIREMENT_FILTER_DIRECTIVE,
-                "(&(" + PackageNamespace.PACKAGE_NAMESPACE + "=" + imported.getName() + ")" + rangeFilter + ")");
-            if (imported.isOptional())
-                dirs.put(PackageNamespace.REQUIREMENT_RESOLUTION_DIRECTIVE,
-                    PackageNamespace.RESOLUTION_OPTIONAL);
-            pkgReqs.add(new RequirementImpl(this, PackageNamespace.PACKAGE_NAMESPACE, dirs, null));
-        }
-        reqs.put(PackageNamespace.PACKAGE_NAMESPACE, Collections.unmodifiableList(pkgReqs));
         requirements = Collections.unmodifiableMap(reqs);
     }
 
diff --git a/src/test/java/org/apache/sling/feature/resolver/AnalyserTest.java b/src/test/java/org/apache/sling/feature/resolver/AnalyserTest.java
index c4b8110..527eec5 100644
--- a/src/test/java/org/apache/sling/feature/resolver/AnalyserTest.java
+++ b/src/test/java/org/apache/sling/feature/resolver/AnalyserTest.java
@@ -27,6 +27,7 @@ import org.apache.sling.feature.io.json.FeatureJSONReader.SubstituteVariables;
 import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.apache.sling.feature.scanner.Scanner;
 import org.apache.sling.feature.scanner.impl.BundleDescriptorImpl;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.io.File;
diff --git a/src/test/java/org/apache/sling/feature/resolver/TestBundleResourceImpl.java b/src/test/java/org/apache/sling/feature/resolver/TestBundleResourceImpl.java
index 86beec4..265aa21 100644
--- a/src/test/java/org/apache/sling/feature/resolver/TestBundleResourceImpl.java
+++ b/src/test/java/org/apache/sling/feature/resolver/TestBundleResourceImpl.java
@@ -21,7 +21,7 @@ import org.apache.felix.utils.resource.RequirementImpl;
 import org.apache.sling.feature.Artifact;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.scanner.BundleDescriptor;
-import org.apache.sling.feature.support.util.PackageInfo;
+import org.apache.sling.feature.scanner.PackageInfo;
 import org.osgi.framework.Version;
 import org.osgi.framework.VersionRange;
 import org.osgi.framework.namespace.BundleNamespace;
diff --git a/src/test/java/org/apache/sling/feature/resolver/impl/BundleResourceImplTest.java b/src/test/java/org/apache/sling/feature/resolver/impl/BundleResourceImplTest.java
index eb307d2..c829958 100644
--- a/src/test/java/org/apache/sling/feature/resolver/impl/BundleResourceImplTest.java
+++ b/src/test/java/org/apache/sling/feature/resolver/impl/BundleResourceImplTest.java
@@ -25,9 +25,11 @@ import org.apache.sling.feature.resolver.FeatureResource;
 import org.apache.sling.feature.scanner.BundleDescriptor;
 import org.apache.sling.feature.scanner.Descriptor;
 import org.apache.sling.feature.scanner.impl.BundleDescriptorImpl;
-import org.apache.sling.feature.support.util.PackageInfo;
+import org.apache.sling.feature.scanner.PackageInfo;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.mockito.Mockito;
+import org.osgi.framework.Constants;
 import org.osgi.framework.Version;
 import org.osgi.framework.namespace.BundleNamespace;
 import org.osgi.framework.namespace.PackageNamespace;
@@ -35,6 +37,10 @@ import org.osgi.resource.Capability;
 import org.osgi.resource.Requirement;
 import org.osgi.resource.Resource;
 
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.lang.reflect.Field;
 import java.util.Arrays;
 import java.util.Collections;
@@ -43,6 +49,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -95,17 +103,17 @@ public class BundleResourceImplTest {
         ArtifactId id = new ArtifactId("grp", "art", "1.2.3", null, null);
         Artifact artifact = new Artifact(id);
 
-        PackageInfo ex1 = new PackageInfo("org.foo.a", "0.0.1.SNAPSHOT", false);
-        Set<PackageInfo> pkgs = Collections.singleton(ex1);
-        Set<Requirement> reqs = Collections.emptySet();
-        Set<Capability> caps = Collections.emptySet();
-        BundleDescriptor bd = new BundleDescriptorImpl(artifact, pkgs, reqs, caps);
+        String bmf = "Bundle-SymbolicName: " + Constants.SYSTEM_BUNDLE_SYMBOLICNAME + "\n"
+            + "Bundle-Version: 1.2.3\n"
+            + "Bundle-ManifestVersion: 2\n"
+            + "Export-Package: org.foo.a;version=0.0.1.SNAPSHOT\n"
+            + "Import-Package: org.bar;version=\"[1,2)\",org.tar;resolution:=\"optional\"\n";
+
+        File f = createBundle(bmf);
+
+
+        BundleDescriptor bd = new BundleDescriptorImpl(artifact, f, 1);
 
-        setField(Descriptor.class, "locked", bd, false); // Unlock the Bundle Descriptor for the test
-        PackageInfo im1 = new PackageInfo("org.bar", "[1,2)", false);
-        PackageInfo im2 = new PackageInfo("org.tar", null, true);
-        bd.getImportedPackages().add(im1);
-        bd.getImportedPackages().add(im2);
 
         Resource res = new BundleResourceImpl(bd, null);
         assertNotNull(
@@ -137,11 +145,11 @@ public class BundleResourceImplTest {
         }
 
         assertEquals(1, reqBar.getDirectives().size());
-        assertEquals("(&(osgi.wiring.package=org.bar)(&(version>=1.0.0)(!(version>=2.0.0))))",
+        assertEquals("(&(osgi.wiring.package=org.bar)(version>=1.0.0)(!(version>=2.0.0)))",
                 reqBar.getDirectives().get(PackageNamespace.REQUIREMENT_FILTER_DIRECTIVE));
 
         assertEquals(2, reqTar.getDirectives().size());
-        assertEquals("(&(osgi.wiring.package=org.tar))",
+        assertEquals("(osgi.wiring.package=org.tar)",
                 reqTar.getDirectives().get(PackageNamespace.REQUIREMENT_FILTER_DIRECTIVE));
         assertEquals(PackageNamespace.RESOLUTION_OPTIONAL,
                 reqTar.getDirectives().get(PackageNamespace.REQUIREMENT_RESOLUTION_DIRECTIVE));
@@ -185,6 +193,18 @@ public class BundleResourceImplTest {
                 new HashSet<>(res.getRequirements(null)));
     }
 
+
+    private File createBundle(String manifest) throws IOException
+    {
+        File f = File.createTempFile("bundle", ".jar");
+        f.deleteOnExit();
+        Manifest mf = new Manifest(new ByteArrayInputStream(manifest.getBytes("UTF-8")));
+        mf.getMainAttributes().putValue("Manifest-Version", "1.0");
+        JarOutputStream os = new JarOutputStream(new FileOutputStream(f), mf);
+        os.close();
+        return f;
+    }
+
     private Object getCapAttribute(Resource res, String ns, String attr) {
         List<Capability> caps = res.getCapabilities(ns);
         if (caps.size() == 0)

-- 
To stop receiving notification emails like this one, please contact
davidb@apache.org.