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
             Fix For: maven-bundle-plugin-1.6.0


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.

Reply via email to