You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Stuart McCulloch (JIRA)" <ji...@apache.org> on 2009/01/29 14:02:59 UTC
[jira] Updated: (FELIX-807) conversion of JAR into bundle fails if
there are classes is the default name space
[ https://issues.apache.org/jira/browse/FELIX-807?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stuart McCulloch updated FELIX-807:
-----------------------------------
Attachment: FELIX-807-20090129.patch
Suggested patch, based on 0.0.308 - it keeps the default package in the list of contained packages, but disallows its export.
For a simple testcase, create a class in the default package and use Private-Package: . to include the class but not export it.
> conversion of JAR into bundle fails if there are classes is the default name space
> ----------------------------------------------------------------------------------
>
> Key: FELIX-807
> URL: https://issues.apache.org/jira/browse/FELIX-807
> Project: Felix
> Issue Type: Bug
> Components: Maven Bundle Plugin
> Affects Versions: maven-bundle-plugin-1.4.3
> Environment: any
> Reporter: Stefan Franke
> Assignee: Peter Kriens
> Priority: Minor
> Fix For: maven-bundle-plugin-1.6.0
>
> Attachments: FELIX-807-20090129.patch
>
> Original Estimate: 0.5h
> Remaining Estimate: 0.5h
>
> The conversion of JAR into bundle fails if there are classes is the default name space, like hsqldb does.
> Try this pom.xml:
> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
> <modelVersion>4.0.0</modelVersion>
> <groupId>bug.maven.plugin</groupId>
> <artifactId>felix-bundle</artifactId>
> <packaging>bundle</packaging>
> <version>1.0-SNAPSHOT</version>
> <name>hsqldb</name>
> <url>http://maven.apache.org</url>
> <build>
> <plugins>
> <plugin>
> <artifactId>maven-dependency-plugin</artifactId>
> <executions>
> <execution>
> <id>copy-dependencies</id>
> <phase>package</phase>
> <goals>
> <goal>copy-dependencies</goal>
> </goals>
> </execution>
> </executions>
> </plugin>
> <plugin>
> <groupId>org.apache.felix</groupId>
> <artifactId>maven-bundle-plugin</artifactId>
> <executions>
> <execution>
> <id>bundle-manifest</id>
> <phase>process-classes</phase>
> <goals>
> <goal>manifest</goal>
> </goals>
> </execution>
> </executions>
> <extensions>true</extensions>
> <configuration>
> <manifestLocation>META-INF</manifestLocation>
> <instructions>
> <Bundle-ClassPath>target/dependency/hsqldb-1.8.0.7.jar</Bundle-ClassPath>
> <Import-Package>*</Import-Package>
> <Export-Package>*</Export-Package>
> <Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency>
> <Embed-Directory>target/dependency</Embed-Directory>
> <Embed-StripGroup>true</Embed-StripGroup>
> </instructions>
> </configuration>
> </plugin>
> </plugins>
> </build>
> <dependencies>
> <dependency>
> <groupId>junit</groupId>
> <artifactId>junit</artifactId>
> <version>3.8.1</version>
> <scope>test</scope>
> </dependency>
> <dependency>
> <groupId>hsqldb</groupId>
> <artifactId>hsqldb</artifactId>
> <version>1.8.0.7</version>
> <scope>compile</scope>
> </dependency>
> </dependencies>
> </project>
> To fix this I suggest a modification inside biz.aQute.bndlib.bndlib-0.0.255.jar inside class aQute.lib.osgiProcessor:
> private void analyzeJar(Jar jar, String prefix, Map classSpace,
> Map contained, Map referred, Map uses) throws IOException {
> next: for (Iterator r = jar.getResources().keySet().iterator(); r
> .hasNext();) {
> String path = (String) r.next();
> if (path.startsWith(prefix)) {
> String relativePath = path.substring(prefix.length());
> String pack = getPackage(relativePath);
> if (pack != null && !contained.containsKey(pack)) {
> if (!(pack.equals(".") || isMetaData(relativePath))) {
> The last line is the line where the default name space "." is expicit excluded. I don't understand why, but for class files it must be enabled. I suggest
> if (pack != null && !contained.containsKey(pack)) {
> if (!(pack.equals(".") || realtivePath.endsWith(".class") || isMetaData(relativePath))) {
> to solve this issue.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.