FELIX-2244 Correctly accept VersionRange for Import-Package headers of installed (not resolved) bundles.
plus: depend on released versions of the utils library and bundlrepository bundle
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@930501 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/webconsole/pom.xml b/webconsole/pom.xml
index 187a99c..9398d59 100644
--- a/webconsole/pom.xml
+++ b/webconsole/pom.xml
@@ -122,6 +122,7 @@
<Embed-Dependency>
<!-- Import/Export-Package parsing -->
org.apache.felix.utils;inline=org/apache/felix/utils/manifest/**,
+ org.apache.felix.framework;inline=org/apache/felix/framework/util/VersionRange**,
<!-- ServiceTracker -->
org.osgi.compendium;
@@ -184,7 +185,8 @@
<_donotcopy>LICENSE.json</_donotcopy>
<!-- <_donotcopy>(LICENSE.json|NOTICE.bare)</_donotcopy> -->
<Embed-Dependency>
- org.apache.felix.utils;inline=org/apache/felix/utils/manifest/**
+ org.apache.felix.utils;inline=org/apache/felix/utils/manifest/**,
+ org.apache.felix.framework;inline=org/apache/felix/framework/util/VersionRange**
</Embed-Dependency>
</instructions>
</configuration>
@@ -248,11 +250,23 @@
<scope>provided</scope>
</dependency>
+ <!--
+ Required for a simple VersionRange class, the class from
+ the utils bundle is overkill and requires JDK 1.4 or better
+ -->
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.framework</artifactId>
+ <version>2.0.2</version>
+ <scope>provided</scope>
+ <optional>true</optional>
+ </dependency>
+
<!-- Parsing Import/Export-Package headers -->
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.utils</artifactId>
- <version>0.1.0-SNAPSHOT</version>
+ <version>1.0.0</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
@@ -267,7 +281,7 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.bundlerepository</artifactId>
- <version>1.5.0-SNAPSHOT</version>
+ <version>1.6.0</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
index b3abff1..f8d3831 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
@@ -44,6 +44,7 @@
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
+import org.apache.felix.framework.util.VersionRange;
import org.apache.felix.utils.manifest.Clause;
import org.apache.felix.utils.manifest.Parser;
import org.apache.felix.webconsole.AbstractWebConsolePlugin;
@@ -1278,8 +1279,15 @@
{
if ( imported.getName().equals( exported.getName() ) )
{
- Version required = Version.parseVersion( imported.getAttribute( Constants.VERSION_ATTRIBUTE ) );
- return exported.getVersion().compareTo( required ) > 0;
+ String versionAttr = imported.getAttribute( Constants.VERSION_ATTRIBUTE );
+ if ( versionAttr == null )
+ {
+ // no specific version required, this export surely satisfies it
+ return true;
+ }
+
+ VersionRange required = VersionRange.parse( versionAttr );
+ return required.isInRange( exported.getVersion() );
}
// no this export does not satisfy the import