You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2017/10/02 07:27:12 UTC

svn commit: r1810301 - in /felix/sandbox/cziegeler/osgicheck-maven-plugin: ./ src/main/java/org/apache/felix/maven/osgicheck/impl/ src/main/java/org/apache/felix/maven/osgicheck/impl/checks/ src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/

Author: cziegeler
Date: Mon Oct  2 07:27:11 2017
New Revision: 1810301

URL: http://svn.apache.org/viewvc?rev=1810301&view=rev
Log:
Avoid import of unreleased class from Apache Sling

Added:
    felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/
    felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/ManifestUtil.java   (with props)
    felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/PackageInfo.java   (with props)
Modified:
    felix/sandbox/cziegeler/osgicheck-maven-plugin/   (props changed)
    felix/sandbox/cziegeler/osgicheck-maven-plugin/pom.xml
    felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/CheckMojo.java
    felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/checks/ImportExportCheck.java

Propchange: felix/sandbox/cziegeler/osgicheck-maven-plugin/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Oct  2 07:27:11 2017
@@ -0,0 +1,5 @@
+.classpath
+.project
+.settings
+target
+bin

Modified: felix/sandbox/cziegeler/osgicheck-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/osgicheck-maven-plugin/pom.xml?rev=1810301&r1=1810300&r2=1810301&view=diff
==============================================================================
--- felix/sandbox/cziegeler/osgicheck-maven-plugin/pom.xml (original)
+++ felix/sandbox/cziegeler/osgicheck-maven-plugin/pom.xml Mon Oct  2 07:27:11 2017
@@ -138,11 +138,6 @@
             <version>6.0.0</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.feature.support</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr</artifactId>
             <version>2.0.12</version>

Modified: felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/CheckMojo.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/CheckMojo.java?rev=1810301&r1=1810300&r2=1810301&view=diff
==============================================================================
--- felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/CheckMojo.java (original)
+++ felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/CheckMojo.java Mon Oct  2 07:27:11 2017
@@ -30,6 +30,7 @@ import java.util.jar.Manifest;
 import org.apache.commons.io.FileUtils;
 import org.apache.felix.maven.osgicheck.impl.checks.ImportExportCheck;
 import org.apache.felix.maven.osgicheck.impl.checks.SCRCheck;
+import org.apache.felix.maven.osgicheck.impl.featureutil.ManifestUtil;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -41,7 +42,6 @@ import org.apache.maven.plugins.annotati
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.utils.xml.Xpp3Dom;
 import org.apache.maven.shared.utils.xml.Xpp3DomBuilder;
-import org.apache.sling.feature.support.util.ManifestUtil;
 import org.codehaus.plexus.archiver.UnArchiver;
 import org.codehaus.plexus.archiver.manager.ArchiverManager;
 import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;

Modified: felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/checks/ImportExportCheck.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/checks/ImportExportCheck.java?rev=1810301&r1=1810300&r2=1810301&view=diff
==============================================================================
--- felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/checks/ImportExportCheck.java (original)
+++ felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/checks/ImportExportCheck.java Mon Oct  2 07:27:11 2017
@@ -20,9 +20,9 @@ import java.util.List;
 
 import org.apache.felix.maven.osgicheck.impl.Check;
 import org.apache.felix.maven.osgicheck.impl.CheckContext;
+import org.apache.felix.maven.osgicheck.impl.featureutil.ManifestUtil;
+import org.apache.felix.maven.osgicheck.impl.featureutil.PackageInfo;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.sling.feature.support.util.ManifestUtil;
-import org.apache.sling.feature.support.util.PackageInfo;
 import org.osgi.framework.Version;
 
 /**

Added: felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/ManifestUtil.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/ManifestUtil.java?rev=1810301&view=auto
==============================================================================
--- felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/ManifestUtil.java (added)
+++ felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/ManifestUtil.java Mon Oct  2 07:27:11 2017
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.maven.osgicheck.impl.featureutil;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+
+import org.apache.sling.commons.osgi.ManifestHeader;
+import org.osgi.framework.Constants;
+
+/*
+ * This is a simplified copy of the Apache Sling Feature ManifestUtil class.
+ * We keep this copy until the feature module is released in Sling.
+ */
+public class ManifestUtil {
+
+    /**
+     * Get the manifest from the artifact.
+     * @param artifact The file
+     * @throws IOException If the manifest can't be read
+     */
+    public static Manifest getManifest(final File artifact) throws IOException {
+        try (final JarFile file = new JarFile(artifact) ) {
+            return file.getManifest();
+        }
+    }
+
+    public static List<PackageInfo> extractPackages(final Manifest m,
+            final String headerName,
+            final String defaultVersion,
+            final boolean checkOptional) {
+        final String pckInfo = m.getMainAttributes().getValue(headerName);
+        if (pckInfo != null) {
+            final ManifestHeader header = ManifestHeader.parse(pckInfo);
+
+            final List<PackageInfo> pcks = new ArrayList<>();
+            for(final ManifestHeader.Entry entry : header.getEntries()) {
+                String version = entry.getAttributeValue("version");
+                if ( version == null ) {
+                    version = defaultVersion;
+                }
+                boolean optional = false;
+                if ( checkOptional ) {
+                    final String resolution = entry.getDirectiveValue("resolution");
+                    optional = "optional".equalsIgnoreCase(resolution);
+                }
+                final PackageInfo pck = new PackageInfo(entry.getValue(),
+                        version,
+                        optional);
+                pcks.add(pck);
+            }
+
+            return pcks;
+        }
+        return Collections.emptyList();
+    }
+
+    public static List<PackageInfo> extractExportedPackages(final Manifest m) {
+        return extractPackages(m, Constants.EXPORT_PACKAGE, "0.0.0", false);
+    }
+
+    public static List<PackageInfo> extractImportedPackages(final Manifest m) {
+        return extractPackages(m, Constants.IMPORT_PACKAGE, null, true);
+    }
+
+    public static List<PackageInfo> extractDynamicImportedPackages(final Manifest m) {
+        return extractPackages(m, Constants.DYNAMICIMPORT_PACKAGE, null, false);
+    }
+}

Propchange: felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/ManifestUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/ManifestUtil.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url

Added: felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/PackageInfo.java
URL: http://svn.apache.org/viewvc/felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/PackageInfo.java?rev=1810301&view=auto
==============================================================================
--- felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/PackageInfo.java (added)
+++ felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/PackageInfo.java Mon Oct  2 07:27:11 2017
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.maven.osgicheck.impl.featureutil;
+
+import org.osgi.framework.Version;
+import org.osgi.framework.VersionRange;
+
+/*
+ * This is a copy of the Apache Sling Feature PackageInfo class.
+ * We keep this copy until the feature module is released in Sling.
+ */
+public class PackageInfo implements Comparable<PackageInfo> {
+
+    private final boolean optional;
+    private final String name;
+    private final String version;
+
+    public PackageInfo(final String name, final String version, final boolean optional) {
+        this.name = name;
+        this.version = version;
+        this.optional = optional;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public boolean isOptional() {
+        return optional;
+    }
+
+    public Version getPackageVersion() {
+        return new Version(this.version);
+    }
+
+    public VersionRange getPackageVersionRange() {
+        return new VersionRange(this.version);
+    }
+
+    @Override
+    public String toString() {
+        return "Package " + name
+                + ";version=" + version
+                + (this.optional ? " (optional)" : "");
+    }
+
+    @Override
+    public int compareTo(final PackageInfo o) {
+        int result = this.name.compareTo(o.name);
+        if ( result == 0 ) {
+            result = this.version.compareTo(o.version);
+        }
+        return result;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + (optional ? 1231 : 1237);
+        result = prime * result + ((version == null) ? 0 : version.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        PackageInfo other = (PackageInfo) obj;
+        if (name == null) {
+            if (other.name != null)
+                return false;
+        } else if (!name.equals(other.name))
+            return false;
+        if (optional != other.optional)
+            return false;
+        if (version == null) {
+            if (other.version != null)
+                return false;
+        } else if (!version.equals(other.version))
+            return false;
+        return true;
+    }
+
+}

Propchange: felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/PackageInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/sandbox/cziegeler/osgicheck-maven-plugin/src/main/java/org/apache/felix/maven/osgicheck/impl/featureutil/PackageInfo.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url