Fix the way Ivy's extra info where used
git-svn-id: https://svn.apache.org/repos/asf/ant/ivy/ivyde/trunk@1593859 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/IvyPlugin.java b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/IvyPlugin.java
index 4a93121..9ef70d7 100644
--- a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/IvyPlugin.java
+++ b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/IvyPlugin.java
@@ -24,8 +24,12 @@
import java.util.List;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.apache.ivy.Ivy;
import org.apache.ivyde.common.ivyfile.IvyFileResourceListener;
+import org.apache.ivyde.eclipse.cp.IvyClasspathContainer;
import org.apache.ivyde.eclipse.cp.IvyClasspathContainerHelper;
import org.apache.ivyde.internal.eclipse.cpcontainer.IvyAttachementManager;
import org.apache.ivyde.internal.eclipse.cpcontainer.IvyClasspathContainerImpl;
@@ -67,6 +71,9 @@
*/
public class IvyPlugin extends AbstractUIPlugin {
+ private static final Pattern IVY_VERSION_PATTERN = Pattern
+ .compile("([0-9]+)\\.([0-9]+)\\.([0-9]+).*");
+
/** The ID of IvyDE plugin */
public static final String ID = "org.apache.ivyde.eclipse";
@@ -107,6 +114,12 @@
private IvyAttachementManager ivyAttachementManager;
+ private int ivyVersionMajor = 0;
+
+ private int ivyVersionMinor = 0;
+
+ private int ivyVersionPatch = 0;
+
/**
* The constructor.
*/
@@ -122,6 +135,14 @@
super.start(context);
this.bundleContext = context;
logInfo("starting IvyDE plugin");
+
+ Matcher matcher = IVY_VERSION_PATTERN.matcher(Ivy.getIvyVersion());
+ if (matcher.matches()) {
+ ivyVersionMajor = Integer.parseInt(matcher.group(1));
+ ivyVersionMinor = Integer.parseInt(matcher.group(2));
+ ivyVersionPatch = Integer.parseInt(matcher.group(3));
+ }
+
ivyResolveJob = new IvyResolveJob();
retrieveSetupManager = new RetrieveSetupManager();
@@ -147,8 +168,8 @@
} catch (JavaModelException e) {
MessageDialog.openError(IvyPlugin.getDefault().getWorkbench()
.getActiveWorkbenchWindow().getShell(),
- "Unable to trigger the update the IvyDE classpath containers", e
- .getMessage());
+ "Unable to trigger the update the IvyDE classpath containers",
+ e.getMessage());
}
}
};
@@ -190,7 +211,8 @@
Class.forName("org.apache.ivy.osgi.core.ManifestParser");
osgiAvailable = true;
try {
- Class.forName("org.apache.ivy.osgi.core.BundleInfo").getDeclaredMethod("getClasspath");
+ Class.forName("org.apache.ivy.osgi.core.BundleInfo").getDeclaredMethod(
+ "getClasspath");
osgiClasspathAvailable = true;
} catch (Exception e) {
osgiClasspathAvailable = false;
@@ -236,9 +258,9 @@
IJavaModel javaModel = JavaCore.create(workspace.getRoot());
IJavaProject[] projects = javaModel.getJavaProjects();
for (int i = 0; i < projects.length; i++) {
- List/* <IvyClasspathContainer> */containers = IvyClasspathContainerHelper
+ List<IvyClasspathContainer> containers = IvyClasspathContainerHelper
.getContainers(projects[i]);
- Iterator/* <IvyClasspathContainer> */itContainers = containers.iterator();
+ Iterator<IvyClasspathContainer> itContainers = containers.iterator();
while (itContainers.hasNext()) {
IvyClasspathContainerImpl ivycp = (IvyClasspathContainerImpl) itContainers.next();
if (!ivycp.getConf().isSettingsProjectSpecific()) {
@@ -465,4 +487,24 @@
public RetrieveSetupManager getRetrieveSetupManager() {
return retrieveSetupManager;
}
+
+ public boolean isIvyVersionGreaterOrEqual(int major, int minor, int patch) {
+ if (ivyVersionMajor > major) {
+ return true;
+ } else if (ivyVersionMajor < major) {
+ return false;
+ }
+ // ivyVersionMajor == major
+ if (ivyVersionMinor > minor) {
+ return true;
+ } else if (ivyVersionMinor < minor) {
+ return false;
+ }
+ // ivyVersionMinor == minor
+ if (ivyVersionPatch >= patch) {
+ return true;
+ } else {
+ return false;
+ }
+ }
}
diff --git a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/workspaceresolver/WorkspaceResolver.java b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/workspaceresolver/WorkspaceResolver.java
index d469580..787616d 100644
--- a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/workspaceresolver/WorkspaceResolver.java
+++ b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/workspaceresolver/WorkspaceResolver.java
@@ -117,6 +117,8 @@
private boolean ignoreVersionOnWorkspaceProjects;
+ private boolean osgiResolveInWorkspaceAvailable;
+
public WorkspaceResolver(IProject project, IvySettings ivySettings) {
String projectName = project == null ? "<null>" : project.getName();
setName(projectName + "-ivyde-workspace-resolver");
@@ -130,6 +132,9 @@
ignoreVersionOnWorkspaceProjects = IvyPlugin.getPreferenceStoreHelper()
.getIgnoreVersionOnWorkspaceProjects();
+
+ osgiResolveInWorkspaceAvailable = IvyPlugin.getDefault()
+ .isIvyVersionGreaterOrEqual(2, 4, 0);
}
public DownloadReport download(Artifact[] artifacts, DownloadOptions options) {
@@ -211,17 +216,17 @@
ModuleRevisionId candidateMrid = md.getModuleRevisionId();
// search a match on the organization and the module name
-
- if (org.equals(BundleInfo.BUNDLE_TYPE)) {
+
+ if (osgiResolveInWorkspaceAvailable && org.equals(BundleInfo.BUNDLE_TYPE)) {
// looking for an OSGi bundle via its symbolic name
- String sn = (String) md.getExtraInfo().get("Bundle-SymbolicName");
+ String sn = md.getExtraInfoContentByTagName("Bundle-SymbolicName");
if (sn == null || !module.equals(sn)) {
// not found, skip to next
continue;
}
- } else if (org.equals(BundleInfo.PACKAGE_TYPE)) {
+ } else if (osgiResolveInWorkspaceAvailable && org.equals(BundleInfo.PACKAGE_TYPE)) {
// looking for an OSGi bundle via its exported package
- String exportedPackages = (String) md.getExtraInfo().get("Export-Package");
+ String exportedPackages = md.getExtraInfoContentByTagName("Export-Package");
if (exportedPackages == null) {
// not found, skip to next
continue;
@@ -245,7 +250,8 @@
// setting the exact expected version
version = dependencyMrid.getRevision();
}
- md.setResolvedModuleRevisionId(ModuleRevisionId.newInstance(org, module, version));
+ md.setResolvedModuleRevisionId(ModuleRevisionId.newInstance(org, module,
+ version));
} else {
if (!candidateMrid.getModuleId().equals(dependencyMrid.getModuleId())) {
// it doesn't match org#module, skip to next
@@ -378,7 +384,7 @@
newMd.addExcludeRule(allExcludeRules[k]);
}
- newMd.getExtraInfo().putAll(md.getExtraInfo());
+ newMd.getExtraInfos().addAll(md.getExtraInfos());
License[] licenses = md.getLicenses();
for (int k = 0; k < licenses.length; k++) {