Author: hibou
Date: Sun May 11 20:47:24 2014
New Revision: 1593859
URL: http://svn.apache.org/r1593859
Log:
Fix the way Ivy's extra info where used
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/IvyPlugin.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/workspaceresolver/WorkspaceResolver.java
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/IvyPlugin.java
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/IvyPlugin.java?rev=1593859&r1=1593858&r2=1593859&view=diff
==============================================================================
---
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/IvyPlugin.java
(original)
+++
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/IvyPlugin.java
Sun May 11 20:47:24 2014
@@ -24,8 +24,12 @@ import java.util.Iterator;
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 @@ import org.osgi.framework.BundleContext;
*/
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 @@ public class IvyPlugin extends AbstractU
private IvyAttachementManager ivyAttachementManager;
+ private int ivyVersionMajor = 0;
+
+ private int ivyVersionMinor = 0;
+
+ private int ivyVersionPatch = 0;
+
/**
* The constructor.
*/
@@ -122,6 +135,14 @@ public class IvyPlugin extends AbstractU
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 @@ public class IvyPlugin extends AbstractU
} 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 @@ public class IvyPlugin extends AbstractU
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 @@ public class IvyPlugin extends AbstractU
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 class IvyPlugin extends AbstractU
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;
+ }
+ }
}
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/workspaceresolver/WorkspaceResolver.java
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/workspaceresolver/WorkspaceResolver.java?rev=1593859&r1=1593858&r2=1593859&view=diff
==============================================================================
---
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/workspaceresolver/WorkspaceResolver.java
(original)
+++
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/internal/eclipse/workspaceresolver/WorkspaceResolver.java
Sun May 11 20:47:24 2014
@@ -117,6 +117,8 @@ public class WorkspaceResolver extends A
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 @@ public class WorkspaceResolver extends A
ignoreVersionOnWorkspaceProjects = IvyPlugin.getPreferenceStoreHelper()
.getIgnoreVersionOnWorkspaceProjects();
+
+ osgiResolveInWorkspaceAvailable = IvyPlugin.getDefault()
+ .isIvyVersionGreaterOrEqual(2, 4, 0);
}
public DownloadReport download(Artifact[] artifacts, DownloadOptions
options) {
@@ -211,17 +216,17 @@ public class WorkspaceResolver extends A
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 @@ public class WorkspaceResolver extends A
// 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 @@ public class WorkspaceResolver extends A
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++) {