*** empty log message ***
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer2_1.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer2_1.java index 86dce73..d2a4534 100644 --- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer2_1.java +++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer2_1.java
@@ -175,7 +175,9 @@ // If model is a fragment, we need to add in the classpath the plugin to which it is related HostSpecification host = model.getHost(); if (host != null) { - addPluginAndPrerequisites(host.getSupplier(), classpath, location, pluginChain); + BundleDescription[] hosts = host.getHosts(); + for(int i=0; i<hosts.length; i++) + addPluginAndPrerequisites(hosts[i], classpath, location, pluginChain); } // Add the libraries
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java index 04b9c2f..a8db336 100644 --- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java +++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/builder/ClasspathComputer3_0.java
@@ -172,7 +172,9 @@ // If model is a fragment, we need to add in the classpath the plugin to which it is related HostSpecification host = model.getHost(); if (host != null) { - addPluginAndPrerequisites(host.getSupplier(), classpath, location, pluginChain, addedPlugins); + BundleDescription[] hosts = host.getHosts(); + for(int i=0; i<hosts.length; i++) + addPluginAndPrerequisites(hosts[i], classpath, location, pluginChain, addedPlugins); } // Add the libraries
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSite.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSite.java index 21a386e..9d82527 100644 --- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSite.java +++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/BuildTimeSite.java
@@ -18,6 +18,7 @@ import org.eclipse.osgi.service.resolver.*; import org.eclipse.pde.internal.build.*; import org.eclipse.update.core.*; +import org.osgi.framework.Version; /** * This site represent a site at build time. A build time site is made of code @@ -87,7 +88,7 @@ public String getResolutionFailureMessage(VersionConstraint unsatisfied) { if (unsatisfied.isResolved()) throw new IllegalArgumentException(); - if (unsatisfied instanceof PackageSpecification) + if (unsatisfied instanceof ImportPackageSpecification) return Policy.bind("unsatisfied.import", displayVersionConstraint(unsatisfied));//$NON-NLS-1$ if (unsatisfied instanceof BundleSpecification) { if (((BundleSpecification) unsatisfied).isOptional()) @@ -115,9 +116,14 @@ } int qualifierIdx = -1; if (versionId != null && (qualifierIdx = versionId.indexOf('.' + IBuildPropertiesConstants.PROPERTY_QUALIFIER))!= -1) { - Version versionToMatch = new Version(versionId.substring(0, qualifierIdx)); + Version versionToMatch = Version.parseVersion(versionId.substring(0, qualifierIdx)); for (int i = 0; i < features.length; i++) { - if (features[i].getVersionedIdentifier().getIdentifier().equals(featureId) && new Version(features[i].getVersionedIdentifier().getVersion().toString()).matchMinor(versionToMatch)) + Version featureVersion = Version.parseVersion(features[i].getVersionedIdentifier().getVersion().toString()); + if (features[i].getVersionedIdentifier().getIdentifier().equals(featureId) && + featureVersion.getMajor() == versionToMatch.getMajor() && + featureVersion.getMinor() == versionToMatch.getMinor() && + featureVersion.getMicro() >= versionToMatch.getMicro() && + featureVersion.getQualifier().compareTo(versionToMatch.getQualifier()) >= 0) return features[i].getFeature(null); } }
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java index c72b883..407608b 100644 --- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java +++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PDEState.java
@@ -20,6 +20,7 @@ import org.eclipse.osgi.service.resolver.*; import org.eclipse.osgi.util.ManifestElement; import org.eclipse.pde.internal.build.*; +import org.osgi.framework.*; import org.osgi.framework.BundleException; import org.osgi.framework.Constants; @@ -289,15 +290,13 @@ public static BundleDescription[] getImportedBundles(BundleDescription root) { if (root == null) return new BundleDescription[0]; - PackageSpecification[] packages = root.getPackages(); - ArrayList resolvedImported = new ArrayList(packages.length); - for (int i = 0; i < packages.length; i++) { - if (!packages[i].isExported() && packages[i].isResolved() && !resolvedImported.contains(packages[i].getSupplier())) - resolvedImported.add(packages[i].getSupplier()); + ExportPackageDescription[] packages = root.getResolvedImports(); + ArrayList resolvedImports = new ArrayList(packages.length); + for (int i = 0; i < packages.length; i++) + if (!root.getLocation().equals(packages[i].getExporter().getLocation()) && !resolvedImports.contains(packages[i].getExporter())) + resolvedImports.add(packages[i].getExporter()); + return (BundleDescription[]) resolvedImports.toArray(new BundleDescription[resolvedImports.size()]); } - BundleDescription[] result = new BundleDescription[resolvedImported.size()]; - return (BundleDescription[]) resolvedImported.toArray(result); - } /** * This methods return the bundleDescriptions to which required bundles @@ -308,30 +307,27 @@ public static BundleDescription[] getRequiredBundles(BundleDescription root) { if (root == null) return new BundleDescription[0]; - BundleSpecification[] required = root.getRequiredBundles(); - ArrayList resolvedRequired = new ArrayList(required.length); - for (int i = 0; i < required.length; i++) { - if (required[i].isResolved() && !resolvedRequired.contains(required[i].getSupplier())) - resolvedRequired.add(required[i].getSupplier()); + return root.getResolvedRequires(); } - BundleDescription[] result = new BundleDescription[resolvedRequired.size()]; - return (BundleDescription[]) resolvedRequired.toArray(result); - } public BundleDescription getResolvedBundle(String bundleId, String version) { if (IPDEBuildConstants.GENERIC_VERSION_NUMBER.equals(version) || version == null) { return getResolvedBundle(bundleId); } - BundleDescription description = getState().getBundle(bundleId, new Version(version)); + BundleDescription description = getState().getBundle(bundleId, Version.parseVersion(version)); if (description != null && description.isResolved()) return description; int qualifierIdx = -1; if ((qualifierIdx = version.indexOf('.' + IBuildPropertiesConstants.PROPERTY_QUALIFIER)) != -1) { BundleDescription[] bundles = getState().getBundles(bundleId); - Version versionToMatch = new Version(version.substring(0, qualifierIdx)); + Version versionToMatch = Version.parseVersion(version.substring(0, qualifierIdx)); for (int i = 0; i < bundles.length; i++) { - if (bundles[i].getVersion().matchMinor(versionToMatch)) + Version bundleVersion = bundles[i].getVersion(); + if (bundleVersion.getMajor() == versionToMatch.getMajor() && + bundleVersion.getMinor() == versionToMatch.getMinor() && + bundleVersion.getMicro() >= versionToMatch.getMicro() && + bundleVersion.getQualifier().compareTo(versionToMatch.getQualifier()) >= 0) return bundles[i]; } }
diff --git a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PluginRegistryConverter.java b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PluginRegistryConverter.java index 8d0cc50..4a8aa00 100644 --- a/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PluginRegistryConverter.java +++ b/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/site/PluginRegistryConverter.java
@@ -18,6 +18,7 @@ import org.eclipse.osgi.service.resolver.*; import org.eclipse.pde.internal.build.*; import org.osgi.framework.Constants; +import org.osgi.framework.Version; /** * @deprecated @@ -59,7 +60,7 @@ PluginFragmentModel[] fragments = registry.getFragments(); for (int i = 0; i < plugins.length; i++) { - BundleDescription bd = state.getFactory().createBundleDescription(getNextId(), plugins[i].getPluginId(), new Version(plugins[i].getVersion()), plugins[i].getLocation(), createBundleSpecification(plugins[i].getRequires()), (HostSpecification[]) null, null, null, true); + BundleDescription bd = state.getFactory().createBundleDescription(getNextId(), plugins[i].getPluginId(), Version.parseVersion(plugins[i].getVersion()), plugins[i].getLocation(), createBundleSpecification(plugins[i].getRequires()), (HostSpecification) null, null, null, null, true); String libs = createClasspath(plugins[i].getRuntime()); Properties manifest = new Properties(); if (libs != null) @@ -70,8 +71,8 @@ } for (int i = 0; i < fragments.length; i++) { - HostSpecification host = state.getFactory().createHostSpecification(fragments[i].getPluginId(), new Version(fragments[i].getPluginVersion()), fragments[i].getMatch(), false); - BundleDescription bd = state.getFactory().createBundleDescription(getNextId(), fragments[i].getId(), new Version(fragments[i].getVersion()), fragments[i].getLocation(), createBundleSpecification(fragments[i].getRequires()), new HostSpecification[] {host}, null, null, true); + HostSpecification host = state.getFactory().createHostSpecification(fragments[i].getPluginId(), new VersionRange(fragments[i].getPluginVersion())); + BundleDescription bd = state.getFactory().createBundleDescription(getNextId(), fragments[i].getId(), Version.parseVersion(fragments[i].getVersion()), fragments[i].getLocation(), createBundleSpecification(fragments[i].getRequires()), host, null, null, null, true); String libs = createClasspath(fragments[i].getRuntime()); Properties manifest = new Properties(); if (libs != null) @@ -87,7 +88,7 @@ return new BundleSpecification[0]; BundleSpecification[] specs = new BundleSpecification[prereqs.length]; for (int i = 0; i < prereqs.length; i++) { - specs[i] = state.getFactory().createBundleSpecification(prereqs[i].getPlugin(), new Version(prereqs[i].getVersion()), prereqs[i].getMatchByte(), prereqs[i].getExport(), prereqs[i].getOptional()); + specs[i] = state.getFactory().createBundleSpecification(prereqs[i].getPlugin(), new VersionRange(prereqs[i].getVersion()), prereqs[i].getExport(), prereqs[i].getOptional()); } return specs; }