Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 92650 invoked from network); 5 Jun 2006 02:39:57 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 5 Jun 2006 02:39:57 -0000 Received: (qmail 67468 invoked by uid 500); 5 Jun 2006 02:39:57 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 67322 invoked by uid 500); 5 Jun 2006 02:39:56 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 67309 invoked by uid 99); 5 Jun 2006 02:39:56 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 04 Jun 2006 19:39:56 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 04 Jun 2006 19:39:55 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id DD6D61A983A; Sun, 4 Jun 2006 19:39:35 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r411643 - in /geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin: pom.xml src/main/java/org/apache/geronimo/eclipse/devtools/ManifestDependenciesMojo.java Date: Mon, 05 Jun 2006 02:39:35 -0000 To: scm@geronimo.apache.org From: sppatel@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060605023935.DD6D61A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: sppatel Date: Sun Jun 4 19:39:34 2006 New Revision: 411643 URL: http://svn.apache.org/viewvc?rev=411643&view=rev Log: fix manifest parsing when required bundle contains multiple directives Modified: geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/pom.xml geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/src/main/java/org/apache/geronimo/eclipse/devtools/ManifestDependenciesMojo.java Modified: geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/pom.xml URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/pom.xml?rev=411643&r1=411642&r2=411643&view=diff ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/pom.xml (original) +++ geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/pom.xml Sun Jun 4 19:39:34 2006 @@ -8,11 +8,21 @@ 1.0-SNAPSHOT Geronimo Devtools Maven Plugin + + org.apache.geronimo.devtools + geronimo-eclipse-plugin + 1.1 + + scm:svn:https://svn.apache.org/repos/asf/geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin scm:svn:https://svn.apache.org/repos/asf/geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin https://svn.apache.org/repos/asf/geronimo/devtools/eclipse-plugin/trunk/maven-plugins//maven-geronimodevtools-plugin - + + + + src/main/java + @@ -44,6 +54,11 @@ org.codehaus.plexus plexus-archiver 1.0-alpha-3 + + + eclipse + org.eclipse.osgi + 3.2.0 Modified: geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/src/main/java/org/apache/geronimo/eclipse/devtools/ManifestDependenciesMojo.java URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/src/main/java/org/apache/geronimo/eclipse/devtools/ManifestDependenciesMojo.java?rev=411643&r1=411642&r2=411643&view=diff ============================================================================== --- geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/src/main/java/org/apache/geronimo/eclipse/devtools/ManifestDependenciesMojo.java (original) +++ geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-geronimodevtools-plugin/src/main/java/org/apache/geronimo/eclipse/devtools/ManifestDependenciesMojo.java Sun Jun 4 19:39:34 2006 @@ -23,7 +23,6 @@ import java.util.Iterator; import java.util.List; import java.util.Set; -import java.util.StringTokenizer; import java.util.jar.JarFile; import java.util.jar.Manifest; @@ -35,6 +34,9 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.project.MavenProject; +import org.eclipse.osgi.util.ManifestElement; +import org.osgi.framework.BundleException; +import org.osgi.framework.Constants; /** * @goal manifestbundles @@ -84,6 +86,7 @@ private File eclipseHome; private Set bundleEntries = new HashSet(); + private Set exportedEntries = new HashSet(); /* @@ -99,10 +102,10 @@ while (i.hasNext()) { addExportedBundles((String) i.next()); } - + getLog().debug("Bundle Entries: " + bundleEntries.toString()); getLog().debug("Exported Entries: " + exportedEntries.toString()); - + bundleEntries.addAll(exportedEntries); List excludeList = new ArrayList(); @@ -121,27 +124,31 @@ } } - private void addRequiredBundles(Manifest manifest, - boolean exportedEntriesOnly) { + private void addRequiredBundles(Manifest manifest, boolean exportedEntriesOnly) { String requiredBundles = getRequiredBundles(manifest); - if (requiredBundles != null) { - StringTokenizer st = new StringTokenizer(requiredBundles); - while (st.hasMoreTokens()) { - String nextToken = st.nextToken(","); - String bundleId = getBundleId(nextToken); - if (exportedEntriesOnly) { - if (export(nextToken)) { - exportedEntries.add(bundleId); + try { + ManifestElement[] elements = ManifestElement.parseHeader(Constants.REQUIRE_BUNDLE, requiredBundles); + if (elements != null) { + for (int i = 0; i < elements.length; i++) { + ManifestElement element = elements[i]; + String bundleId = element.getValue(); + if (exportedEntriesOnly) { + String visibility = element.getDirective(Constants.VISIBILITY_DIRECTIVE); + if (Constants.VISIBILITY_REEXPORT.equals(visibility)) { + exportedEntries.add(bundleId); + } + } else { + bundleEntries.add(bundleId); } - } else { - bundleEntries.add(bundleId); } } + } catch (BundleException e) { + e.printStackTrace(); } } private String getRequiredBundles(Manifest manifest) { - return manifest.getMainAttributes().getValue("Require-Bundle"); + return manifest.getMainAttributes().getValue(Constants.REQUIRE_BUNDLE); } private Manifest getManifestFromFile(File file) { @@ -154,17 +161,6 @@ e.printStackTrace(); } return manifest; - } - - private String getBundleId(String element) { - String[] entry = element.split(";"); - return entry[0].trim(); - } - - private boolean export(String element) { - String[] entry = element.split(";"); - return entry.length > 1 - && entry[1].trim().equals(MANIFEST_REXPORT_DEPENDENCY); } private void addExportedBundles(String bundleId) {