Author: hibou
Date: Fri Mar 6 10:45:44 2009
New Revision: 750841
URL: http://svn.apache.org/viewvc?rev=750841&view=rev
Log:
IVYDE-169:
- set a latest strategy on the WorkspaceIvySettings that consider any working@
upper than non "latest" dependency
- rename the java package
- avoid some very useless ivysettings.xml and ivy.xml parsing while resolving
in workspace
Added:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/
- copied from r745535,
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolver/
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/IvyDEStrategy.java
(with props)
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceIvySettings.java
(with props)
Removed:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolver/
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/CHANGES.txt
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResourceChangeListener.java
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/CHANGES.txt
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/CHANGES.txt?rev=750841&r1=750840&r2=750841&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/CHANGES.txt (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/CHANGES.txt Fri Mar 6
10:45:44 2009
@@ -28,6 +28,7 @@
- FIX: Parsing ivy file fails in IvyDE while it succeeds in Ant (IVYDE-35)
- FIX: Sources attach but Javadocs don't (IVYDE-166)
- FIX: Branch in repository pattern and defaultBranch (IVYDE-168)
+- FIX: The resolve in workspace is being evicted by transitive dependencies
(IVYDE-169)
version 2.0.0 beta1
==========================
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java?rev=750841&r1=750840&r2=750841&view=diff
==============================================================================
---
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java
(original)
+++
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/IvyPlugin.java
Fri Mar 6 10:45:44 2009
@@ -26,10 +26,10 @@
import org.apache.ivyde.eclipse.cpcontainer.IvyClasspathUtil;
import
org.apache.ivyde.eclipse.cpcontainer.fragmentinfo.IPackageFragmentExtraInfo;
import org.apache.ivyde.eclipse.cpcontainer.fragmentinfo.PreferenceStoreInfo;
-import org.apache.ivyde.eclipse.resolver.WorkspaceResourceChangeListener;
import org.apache.ivyde.eclipse.ui.console.IvyConsole;
import org.apache.ivyde.eclipse.ui.preferences.IvyDEPreferenceStoreHelper;
import org.apache.ivyde.eclipse.ui.preferences.PreferenceConstants;
+import
org.apache.ivyde.eclipse.workspaceresolver.WorkspaceResourceChangeListener;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java?rev=750841&r1=750840&r2=750841&view=diff
==============================================================================
---
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java
(original)
+++
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerConfiguration.java
Fri Mar 6 10:45:44 2009
@@ -37,17 +37,14 @@
import org.apache.ivy.Ivy;
import org.apache.ivy.core.cache.DefaultRepositoryCacheManager;
-import org.apache.ivy.core.cache.RepositoryCacheManager;
import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
-import org.apache.ivy.core.module.id.ModuleRevisionId;
import org.apache.ivy.core.settings.IvySettings;
import org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry;
-import org.apache.ivy.plugins.resolver.ChainResolver;
-import org.apache.ivy.plugins.resolver.DependencyResolver;
import org.apache.ivy.util.Message;
import org.apache.ivyde.eclipse.IvyDEException;
import org.apache.ivyde.eclipse.IvyPlugin;
-import org.apache.ivyde.eclipse.resolver.WorkspaceResolver;
+import org.apache.ivyde.eclipse.workspaceresolver.WorkspaceIvySettings;
+import org.apache.ivyde.eclipse.workspaceresolver.WorkspaceResolver;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
@@ -127,6 +124,8 @@
boolean loadSettingsOnDemand = false;
+ private ModuleDescriptor md;
+
/**
* Constructor
*
@@ -442,6 +441,13 @@
}
}
+ public Ivy getCachedIvy() throws IvyDEException {
+ if (ivy != null) {
+ return ivy;
+ }
+ return getIvy();
+ }
+
public Ivy getIvy() throws IvyDEException {
try {
return doGetIvy();
@@ -595,7 +601,7 @@
private IvySettings createIvySettings() throws IvyDEException {
IvySettings ivySettings;
if (isInheritedResolveInWorkspace()) {
- ivySettings = new WorkspaceIvySettings();
+ ivySettings = new WorkspaceIvySettings(javaProject);
DefaultRepositoryCacheManager cacheManager = new
DefaultRepositoryCacheManager();
BundleContext bundleContext =
IvyPlugin.getDefault().getBundleContext();
cacheManager.setBasedir(bundleContext.getDataFile("ivyde-workspace-resolver-cache"));
@@ -661,31 +667,6 @@
return ivySettings;
}
- private class WorkspaceIvySettings extends IvySettings {
-
- public DependencyResolver getResolver(ModuleRevisionId mrid) {
- return decorate(super.getResolver(mrid));
- }
-
- public DependencyResolver getDefaultResolver() {
- return decorate(super.getDefaultResolver());
- }
-
- private DependencyResolver decorate(DependencyResolver resolver) {
- if (resolver == null) {
- return resolver;
- }
- ChainResolver chain = new ChainResolver();
- chain.setName(javaProject.getElementName() +
"-ivyde-workspace-chain-resolver");
- chain.setSettings(this);
- chain.setReturnFirst(true);
- chain.add(new WorkspaceResolver(javaProject, this));
- chain.add(resolver);
- return chain;
-
- }
- }
-
public String getInheritedIvySettingsPath() {
if (!isSettingsSpecific) {
return IvyPlugin.getPreferenceStoreHelper().getIvySettingsPath();
@@ -811,7 +792,18 @@
return file;
}
+ public ModuleDescriptor getCachedModuleDescriptor() throws IvyDEException {
+ if (md != null) {
+ return md;
+ }
+ return getModuleDescriptor(getCachedIvy());
+ }
+
public ModuleDescriptor getModuleDescriptor() throws IvyDEException {
+ return getModuleDescriptor(getIvy());
+ }
+
+ public ModuleDescriptor getModuleDescriptor(Ivy i) throws IvyDEException {
File file = getIvyFile();
if (!file.exists()) {
IvyDEException ex = new IvyDEException("Ivy file not found", "The
ivy.xml file '"
@@ -820,8 +812,7 @@
throw ex;
}
try {
- Ivy i = getIvy();
- ModuleDescriptor md =
ModuleDescriptorParserRegistry.getInstance().parseDescriptor(
+ md = ModuleDescriptorParserRegistry.getInstance().parseDescriptor(
i.getSettings(), file.toURL(), false);
setConfStatus(null);
return md;
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java?rev=750841&r1=750840&r2=750841&view=diff
==============================================================================
---
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java
(original)
+++
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyResolveJob.java
Fri Mar 6 10:45:44 2009
@@ -58,7 +58,7 @@
import org.apache.ivy.util.filter.ArtifactTypeFilter;
import org.apache.ivyde.eclipse.IvyDEException;
import org.apache.ivyde.eclipse.IvyPlugin;
-import org.apache.ivyde.eclipse.resolver.WorkspaceResolver;
+import org.apache.ivyde.eclipse.workspaceresolver.WorkspaceResolver;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
@@ -195,7 +195,7 @@
this.ivy = conf.getIvy();
// IVYDE-168 : Ivy needs the IvyContext in the threadlocal in
order to found the default branch
ivy.pushContext();
- this.md = conf.getModuleDescriptor();
+ this.md = conf.getModuleDescriptor(ivy);
} catch (IvyDEException e) {
return new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
e.getMessage(), e);
} catch (Throwable e) {
Added:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/IvyDEStrategy.java
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/IvyDEStrategy.java?rev=750841&view=auto
==============================================================================
---
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/IvyDEStrategy.java
(added)
+++
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/IvyDEStrategy.java
Fri Mar 6 10:45:44 2009
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.ivyde.eclipse.workspaceresolver;
+
+import java.util.Comparator;
+
+import org.apache.ivy.core.IvyContext;
+import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.plugins.latest.ArtifactInfo;
+import org.apache.ivy.plugins.latest.ComparatorLatestStrategy;
+import org.apache.ivy.plugins.latest.LatestRevisionStrategy;
+import org.apache.ivy.plugins.version.VersionMatcher;
+
+/**
+ * A dumb copy of the {...@link LatestRevisionStrategy} but that take into
account the latest and
+ * working revision as superior to any other revision.
+ */
+public class IvyDEStrategy extends ComparatorLatestStrategy {
+
+ final class MridComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ String rev1 = ((ModuleRevisionId) o1).getRevision();
+ String rev2 = ((ModuleRevisionId) o2).getRevision();
+
+ boolean latestRev1 = rev1.startsWith("latest") ||
rev1.startsWith("working");
+ boolean latestRev2 = rev2.startsWith("latest") ||
rev2.startsWith("working");
+ if (latestRev1 && !latestRev2) {
+ return 1;
+ } else if (latestRev2 && !latestRev1) {
+ return -1;
+ }
+
+ rev1 = rev1.replaceAll("([a-zA-Z])(\\d)", "$1.$2");
+ rev1 = rev1.replaceAll("(\\d)([a-zA-Z])", "$1.$2");
+ rev2 = rev2.replaceAll("([a-zA-Z])(\\d)", "$1.$2");
+ rev2 = rev2.replaceAll("(\\d)([a-zA-Z])", "$1.$2");
+
+ String[] parts1 = rev1.split("[\\._\\-\\+]");
+ String[] parts2 = rev2.split("[\\._\\-\\+]");
+
+ int i = 0;
+ for (; i < parts1.length && i < parts2.length; i++) {
+ if (parts1[i].equals(parts2[i])) {
+ continue;
+ }
+ boolean is1Number = isNumber(parts1[i]);
+ boolean is2Number = isNumber(parts2[i]);
+ if (is1Number && !is2Number) {
+ return 1;
+ }
+ if (is2Number && !is1Number) {
+ return -1;
+ }
+ if (is1Number && is2Number) {
+ return
Long.valueOf(parts1[i]).compareTo(Long.valueOf(parts2[i]));
+ }
+ return parts1[i].compareTo(parts2[i]);
+ }
+ if (i < parts1.length) {
+ return isNumber(parts1[i]) ? 1 : -1;
+ }
+ if (i < parts2.length) {
+ return isNumber(parts2[i]) ? -1 : 1;
+ }
+ return 0;
+ }
+
+ private boolean isNumber(String str) {
+ return str.matches("\\d+");
+ }
+ }
+
+ /**
+ * Compares two ArtifactInfo by their revision. Revisions are compared
using an algorithm
+ * inspired by PHP version_compare one, unless a dynamic revision is
given, in which case the
+ * version matcher is used to perform the comparison.
+ */
+ final class ArtifactInfoComparator implements Comparator {
+ public int compare(Object o1, Object o2) {
+ String rev1 = ((ArtifactInfo) o1).getRevision();
+ String rev2 = ((ArtifactInfo) o2).getRevision();
+
+ /*
+ * The revisions can still be not resolved, so we use the current
version matcher to
+ * know if one revision is dynamic, and in this case if it should
be considered greater
+ * or lower than the other one. Note that if the version matcher
compare method returns
+ * 0, it's because it's not possible to know which revision is
greater. In this case we
+ * consider the dynamic one to be greater, because most of the
time it will then be
+ * actually resolved and a real comparison will occur.
+ */
+ VersionMatcher vmatcher =
IvyContext.getContext().getSettings().getVersionMatcher();
+ ModuleRevisionId mrid1 = ModuleRevisionId.newInstance("", "",
rev1);
+ ModuleRevisionId mrid2 = ModuleRevisionId.newInstance("", "",
rev2);
+ if (vmatcher.isDynamic(mrid1)) {
+ int c = vmatcher.compare(mrid1, mrid2, mridComparator);
+ return c >= 0 ? 1 : -1;
+ } else if (vmatcher.isDynamic(mrid2)) {
+ int c = vmatcher.compare(mrid2, mrid1, mridComparator);
+ return c >= 0 ? -1 : 1;
+ }
+
+ return mridComparator.compare(mrid1, mrid2);
+ }
+ }
+
+ private final Comparator mridComparator = new MridComparator();
+
+ private final Comparator artifactInfoComparator = new
ArtifactInfoComparator();
+
+ public IvyDEStrategy() {
+ setComparator(artifactInfoComparator);
+ setName("ivyde-latest-revision");
+ }
+
+}
\ No newline at end of file
Propchange:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/IvyDEStrategy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/IvyDEStrategy.java
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/IvyDEStrategy.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceIvySettings.java
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceIvySettings.java?rev=750841&view=auto
==============================================================================
---
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceIvySettings.java
(added)
+++
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceIvySettings.java
Fri Mar 6 10:45:44 2009
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.ivyde.eclipse.workspaceresolver;
+
+import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.core.settings.IvySettings;
+import org.apache.ivy.plugins.resolver.ChainResolver;
+import org.apache.ivy.plugins.resolver.DependencyResolver;
+import org.eclipse.jdt.core.IJavaProject;
+
+public class WorkspaceIvySettings extends IvySettings {
+
+ private final IJavaProject javaProject;
+
+ public WorkspaceIvySettings(IJavaProject javaProject) {
+ this.javaProject = javaProject;
+ setDefaultLatestStrategy(new IvyDEStrategy());
+ }
+
+ public DependencyResolver getResolver(ModuleRevisionId mrid) {
+ return decorate(super.getResolver(mrid));
+ }
+
+ public DependencyResolver getDefaultResolver() {
+ return decorate(super.getDefaultResolver());
+ }
+
+ private DependencyResolver decorate(DependencyResolver resolver) {
+ if (resolver == null) {
+ return resolver;
+ }
+ ChainResolver chain = new ChainResolver();
+ chain.setName(javaProject.getElementName() +
"-ivyde-workspace-chain-resolver");
+ chain.setSettings(this);
+ chain.setReturnFirst(true);
+ chain.add(new WorkspaceResolver(javaProject, this));
+ chain.add(resolver);
+ return chain;
+
+ }
+}
Propchange:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceIvySettings.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceIvySettings.java
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceIvySettings.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java?rev=750841&r1=745535&r2=750841&view=diff
==============================================================================
---
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java
(original)
+++
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResolver.java
Fri Mar 6 10:45:44 2009
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.ivyde.eclipse.resolver;
+package org.apache.ivyde.eclipse.workspaceresolver;
import java.io.File;
import java.io.IOException;
@@ -161,7 +161,7 @@
if (ivycp != null) {
ModuleDescriptor md;
try {
- md = ivycp.getConf().getModuleDescriptor();
+ md = ivycp.getConf().getCachedModuleDescriptor();
} catch (IvyDEException e) {
IvyPlugin.log(IStatus.WARNING, "Resolve in workspace for '"
+ resolvingJavaProject.getElementName() + "'
cannot depend on "
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResourceChangeListener.java
URL:
http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResourceChangeListener.java?rev=750841&r1=745535&r2=750841&view=diff
==============================================================================
---
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResourceChangeListener.java
(original)
+++
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/workspaceresolver/WorkspaceResourceChangeListener.java
Fri Mar 6 10:45:44 2009
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.ivyde.eclipse.resolver;
+package org.apache.ivyde.eclipse.workspaceresolver;
import java.util.Collection;
import java.util.LinkedHashSet;