diff options
| author | Vikas Chandra | 2017-12-29 15:31:27 +0000 |
|---|---|---|
| committer | Vikas Chandra | 2017-12-29 15:31:27 +0000 |
| commit | 27bbba6daf302171dbe60074e7fde56c78364c14 (patch) | |
| tree | 116bc792b87357b35a756f98a6d998215eddcdd3 | |
| parent | 0e89808beac600638e9b492667ed939008fc8cc2 (diff) | |
| download | eclipse.pde.ui-27bbba6daf302171dbe60074e7fde56c78364c14.tar.gz eclipse.pde.ui-27bbba6daf302171dbe60074e7fde56c78364c14.tar.xz eclipse.pde.ui-27bbba6daf302171dbe60074e7fde56c78364c14.zip | |
Bug 513270 - Problems with bundles that re-export packagesI20171229-2000
(multi-version case)
Change-Id: I256876579157dbf9b647690d136dbf05f6c2d7db
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
| -rw-r--r-- | apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java index 69b5ec0a2e..aac76d12fb 100644 --- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java +++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java @@ -786,6 +786,10 @@ public class BaseApiAnalyzer implements IApiAnalyzer { int length2 = requiredComponents2.length; loop2: for (int j = 0; j < length2; j++) { IRequiredComponentDescription description2 = requiredComponents2[j]; + IRequiredComponentDescription bestMatch = getBestMatchFromMultipleReqComponents(requiredComponents2, description); + if(bestMatch !=null) { + description2 = bestMatch; + } if (description2.getId().equals(id)) { if (description2.isExported()) { referenceDescription = description2; @@ -823,6 +827,23 @@ public class BaseApiAnalyzer implements IApiAnalyzer { return info; } + private IRequiredComponentDescription getBestMatchFromMultipleReqComponents(IRequiredComponentDescription[] requiredComponents2, IRequiredComponentDescription description) { + IVersionRange versionRange = description.getVersionRange(); + Version currentLowerBound = new Version(versionRange.getMinimumVersion()); + int major = currentLowerBound.getMajor(); + for (IRequiredComponentDescription iRequiredComponentDescription : requiredComponents2) { + if (!description.getId().equals(iRequiredComponentDescription.getId())) { + continue; + } + IVersionRange versionRange2 = iRequiredComponentDescription.getVersionRange(); + Version currentLowerBound2 = new Version(versionRange2.getMinimumVersion()); + if (currentLowerBound2.getMajor() == major) { + return iRequiredComponentDescription; + } + } + return null; + } + /** * Creates and AST for the given {@link ITypeRoot} at the given offset * |
