You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2012/07/15 23:07:19 UTC
svn commit: r1361798 - in
/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde:
common/ivyfile/ eclipse/ eclipse/cpcontainer/ eclipse/retrieve/
eclipse/revdepexplorer/
Author: hibou
Date: Sun Jul 15 21:07:19 2012
New Revision: 1361798
URL: http://svn.apache.org/viewvc?rev=1361798&view=rev
Log:
IVYDE-304: introduction of a ResolvedPath class which is about taking care of the url/file resolve from relative/absolute path with optional eclipse variables
Added:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ResolvedPath.java (with props)
Modified:
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/common/ivyfile/IvyFileResourceListener.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/CachedIvy.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/SettingsSetup.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/retrieve/StandaloneRetrieveSetupState.java
ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/revdepexplorer/SyncIvyFilesJob.java
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/common/ivyfile/IvyFileResourceListener.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/common/ivyfile/IvyFileResourceListener.java?rev=1361798&r1=1361797&r2=1361798&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/common/ivyfile/IvyFileResourceListener.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/common/ivyfile/IvyFileResourceListener.java Sun Jul 15 21:07:19 2012
@@ -21,6 +21,7 @@ import java.io.File;
import java.util.Iterator;
import java.util.List;
+import org.apache.ivyde.eclipse.IvyDEException;
import org.apache.ivyde.eclipse.IvyPlugin;
import org.apache.ivyde.eclipse.cpcontainer.IvyClasspathContainer;
import org.apache.ivyde.eclipse.cpcontainer.IvyClasspathUtil;
@@ -71,10 +72,14 @@ public class IvyFileResourceListener imp
Iterator containerIter = containers.iterator();
while (containerIter.hasNext()) {
IvyClasspathContainer container = (IvyClasspathContainer) containerIter.next();
- File containerIvyFile = container.getState().getIvyFile();
- if (containerIvyFile.equals(resourceFile.getLocation().toFile())) {
- container.launchResolve(false, null);
- return;
+ try {
+ File containerIvyFile = container.getState().getIvyFile();
+ if (containerIvyFile.equals(resourceFile.getLocation().toFile())) {
+ container.launchResolve(false, null);
+ return;
+ }
+ } catch (IvyDEException e) {
+ // we are in a listener, do nothing
}
}
}
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/CachedIvy.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/CachedIvy.java?rev=1361798&r1=1361797&r2=1361798&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/CachedIvy.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/CachedIvy.java Sun Jul 15 21:07:19 2012
@@ -23,9 +23,6 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
import java.text.ParseException;
import java.util.Collection;
import java.util.Iterator;
@@ -85,7 +82,7 @@ public abstract class CachedIvy {
protected abstract String getIvyXmlPath();
- protected abstract String getIvySettingsPath() throws IvyDEException;
+ protected abstract ResolvedPath getIvySettingsPath() throws IvyDEException;
protected abstract boolean isLoadSettingsOnDemandPath();
@@ -128,8 +125,13 @@ public abstract class CachedIvy {
}
private Ivy doGetIvy() throws IvyDEException {
- String settingsPath = getIvySettingsPath();
- if (settingsPath == null || settingsPath.trim().length() == 0) {
+ ResolvedPath settingsPath = getIvySettingsPath();
+ if (settingsPath.getError() != null) {
+ throw new IvyDEException("Incorrect path of the Ivy settings",
+ "The Ivy settings path '" + settingsPath.getInputPath() + "' is incorrect: "
+ + settingsPath.getError().getMessage(), settingsPath.getError());
+ }
+ if (!settingsPath.isSet()) {
// no settings specified, so take the default one
if (ivy == null) {
IvySettings ivySettings = createIvySettings();
@@ -146,63 +148,44 @@ public abstract class CachedIvy {
} catch (IOException e) {
ivy = null;
throw new IvyDEException("Read error of the default Ivy settings",
- "The default Ivy settings file could not be read: "
- + e.getMessage(), e);
+ "The default Ivy settings file could not be read: " + e.getMessage(), e);
}
}
return ivy;
}
// before returning the found ivy, try to refresh it if the settings changed
- URL url;
- try {
- url = new URL(settingsPath);
- } catch (MalformedURLException e) {
- throw new IvyDEException("Incorrect url of the Ivy settings", "The Ivy settings url '"
- + settingsPath + "' is incorrect: " + e.getMessage(), e);
- }
- if (url.getProtocol().startsWith("file")) {
- // first try the standard way
- File file;
- try {
- file = new File(new URI(url.toString()));
- } catch (URISyntaxException e) {
- // probably a badly constructed url: "file://" + filename
- file = new File(url.getPath());
- } catch (IllegalArgumentException e) {
- // probably a badly constructed url: "file:c:\" + filename
- file = new File(url.getPath());
- }
- return getIvy(file);
+ if (settingsPath.getFile() != null) {
+ return getIvyFromFile(settingsPath);
} else {
// an URL but not a file
if (ivy == null || ivySettingsLastModified == -1) {
IvySettings ivySettings = createIvySettings();
ivy = Ivy.newInstance(ivySettings);
try {
- ivy.configure(url);
+ ivy.configure(settingsPath.getUrl());
ivySettingsLastModified = 0;
} catch (ParseException e) {
ivy = null;
throw new IvyDEException("Parsing error of the Ivy settings",
- "The ivy settings file '" + settingsPath + "' could not be parsed: "
- + e.getMessage(), e);
+ "The ivy settings file '" + settingsPath.getResolvedPath()
+ + "' could not be parsed: " + e.getMessage(), e);
} catch (IOException e) {
ivy = null;
throw new IvyDEException("Read error of the Ivy settings",
- "The ivy settings file '" + settingsPath + "' could not be read: "
- + e.getMessage(), e);
+ "The ivy settings file '" + settingsPath.getResolvedPath()
+ + "' could not be read: " + e.getMessage(), e);
}
}
}
return ivy;
}
- private Ivy getIvy(File file) throws IvyDEException {
- String ivySettingsPath = getIvySettingsPath();
+ private Ivy getIvyFromFile(ResolvedPath ivySettingsPath) throws IvyDEException {
+ File file = ivySettingsPath.getFile();
if (!file.exists()) {
throw new IvyDEException("Ivy settings file not found", "The Ivy settings file '"
- + ivySettingsPath + "' cannot be found", null);
+ + ivySettingsPath.getResolvedPath() + "' cannot be found", null);
}
if (file.lastModified() != ivySettingsLastModified || !isLoadSettingsOnDemandPath()) {
@@ -218,13 +201,13 @@ public abstract class CachedIvy {
} catch (ParseException e) {
ivy = null;
throw new IvyDEException("Parsing error of the Ivy settings",
- "The ivy settings file '" + ivySettingsPath + "' could not be parsed: "
- + e.getMessage(), e);
+ "The ivy settings file '" + ivySettingsPath.getResolvedPath()
+ + "' could not be parsed: " + e.getMessage(), e);
} catch (IOException e) {
ivy = null;
throw new IvyDEException("Read error of the Ivy settings",
- "The ivy settings file '" + ivySettingsPath + "' could not be read: "
- + e.getMessage(), e);
+ "The ivy settings file '" + ivySettingsPath.getResolvedPath()
+ + "' could not be read: " + e.getMessage(), e);
}
ivySettingsLastModified = file.lastModified();
}
@@ -297,19 +280,24 @@ public abstract class CachedIvy {
return ivySettings;
}
- public File getIvyFile() {
- File file = new File(getIvyXmlPath());
- if (!file.isAbsolute() && getProject() != null) {
- Path ivyPath = new Path(getIvyXmlPath());
- // get the file location in Eclipse "space"
- IFile ivyfile = getProject().getFile(ivyPath);
- // compute the actual file system location, following Eclipse's linked folders (see
- // IVYDE-211)
- IPath ivyLocation = ivyfile.getLocation();
- // get the corresponding java.io.File instance
- file = ivyLocation.toFile();
+ public File getIvyFile() throws IvyDEException {
+ ResolvedPath ivyPath = new ResolvedPath(getIvyXmlPath(), getProject());
+ if (ivyPath.getError() != null) {
+ throw new IvyDEException("Incorrect path of the ivy.xml",
+ "The ivy.xml path '" + ivyPath.getInputPath() + "' is incorrect: "
+ + ivyPath.getError().getMessage(), ivyPath.getError());
+ }
+ if (!ivyPath.isSet()) {
+ throw new IvyDEException("Empty path of the ivy.xml",
+ "The ivy.xml path is resolved to be empty: '" + ivyPath.getInputPath() + "'",
+ null);
+ }
+ if (ivyPath.getFile() == null) {
+ throw new IvyDEException("The path of the ivy.xml is not a local file",
+ "The ivy.xml path is resolved to be a file: '" + ivyPath.getResolvedPath()
+ + "'", null);
}
- return file;
+ return ivyPath.getFile();
}
public ModuleDescriptor getCachedModuleDescriptor() {
@@ -370,8 +358,7 @@ public abstract class CachedIvy {
return md;
} catch (MalformedURLException e) {
throw new IvyDEException("Incorrect URL of the Ivy file",
- "The URL to the ivy.xml file is incorrect: '"
- + file.getAbsolutePath() + "'", e);
+ "The URL to the ivy.xml file is incorrect: '" + file.getAbsolutePath() + "'", e);
} catch (ParseException e) {
throw new IvyDEException("Parsing error of the Ivy file", "The ivy file '"
+ file.getAbsolutePath() + "' could not be parsed: " + e.getMessage(), e);
Added: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ResolvedPath.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ResolvedPath.java?rev=1361798&view=auto
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ResolvedPath.java (added)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ResolvedPath.java Sun Jul 15 21:07:19 2012
@@ -0,0 +1,131 @@
+/*
+ * 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;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.variables.IStringVariableManager;
+import org.eclipse.core.variables.VariablesPlugin;
+
+public class ResolvedPath {
+
+ private String inputPath;
+
+ private String resolvedPath;
+
+ private File file;
+
+ private URL url;
+
+ private Exception e;
+
+ public ResolvedPath(String inputPath, IProject project) {
+ this.inputPath = inputPath;
+ try {
+ resolvePath(inputPath, project);
+ } catch (MalformedURLException e) {
+ this.e = e;
+ } catch (CoreException e) {
+ this.e = e;
+ }
+ }
+
+ public boolean isSet() {
+ return file != null || url != null;
+ }
+
+ public Exception getError() {
+ return e;
+ }
+
+ public File getFile() {
+ return file;
+ }
+
+ public URL getUrl() {
+ return url;
+ }
+
+ public String getInputPath() {
+ return inputPath;
+ }
+
+ public String getResolvedPath() {
+ return resolvedPath;
+ }
+
+ private void resolvePath(String inputPath, IProject project) throws CoreException,
+ MalformedURLException {
+ IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager();
+ if (project != null) {
+ resolvedPath = inputPath.replaceAll("\\$\\{ivyproject_loc\\}", "\\${workspace_loc:"
+ + project.getName() + "}");
+ } else {
+ resolvedPath = inputPath;
+ }
+ resolvedPath = manager.performStringSubstitution(resolvedPath, false);
+ resolvedPath = resolvedPath.trim();
+ if (resolvedPath.length() == 0) {
+ // no file or url to set
+ return;
+ }
+ try {
+ url = new URL(resolvedPath);
+ if (url.getProtocol().equals("file")) {
+ try {
+ // first try the standard way
+ file = new File(new URI(url.toString()));
+ } catch (URISyntaxException e) {
+ // probably a badly constructed url: "file://" + filename
+ file = new File(url.getPath());
+ } catch (IllegalArgumentException e) {
+ // probably a badly constructed url: "file:c:\" + filename
+ file = new File(url.getPath());
+ }
+ }
+ } catch (MalformedURLException e) {
+ // probably a file
+ file = new File(resolvedPath);
+ if (!file.isAbsolute()) {
+ if (project != null) {
+ Path path = new Path(resolvedPath);
+ // get the file location in Eclipse "space"
+ IFile ifile = project.getFile(path);
+ // compute the actual file system location, following Eclipse's linked folders
+ // (see IVYDE-211)
+ IPath ipath = ifile.getLocation();
+ // get the corresponding java.io.File instance
+ file = ipath.toFile();
+ } else {
+ file = file.getAbsoluteFile();
+ }
+ }
+ url = file.toURI().toURL();
+ }
+ }
+
+}
Propchange: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ResolvedPath.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ResolvedPath.java
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ResolvedPath.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java?rev=1361798&r1=1361797&r2=1361798&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainerState.java Sun Jul 15 21:07:19 2012
@@ -21,6 +21,7 @@ import java.util.Collection;
import org.apache.ivyde.eclipse.CachedIvy;
import org.apache.ivyde.eclipse.IvyDEException;
+import org.apache.ivyde.eclipse.ResolvedPath;
import org.eclipse.core.resources.IProject;
/**
@@ -40,7 +41,7 @@ public class IvyClasspathContainerState
reset();
}
- protected String getIvySettingsPath() throws IvyDEException {
+ protected ResolvedPath getIvySettingsPath() throws IvyDEException {
return conf.getInheritedSettingsSetup().getResolvedIvySettingsPath(getProject());
}
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java?rev=1361798&r1=1361797&r2=1361798&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathUtil.java Sun Jul 15 21:07:19 2012
@@ -17,8 +17,10 @@
*/
package org.apache.ivyde.eclipse.cpcontainer;
+import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
+import java.net.URI;
import java.net.URL;
import java.text.ParseException;
import java.util.ArrayList;
@@ -33,12 +35,16 @@ import org.apache.ivy.core.module.id.Mod
import org.apache.ivy.core.resolve.ResolveOptions;
import org.apache.ivyde.eclipse.IvyDEException;
import org.apache.ivyde.eclipse.IvyPlugin;
+import org.apache.ivyde.eclipse.ResolvedPath;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.variables.IStringVariableManager;
+import org.eclipse.core.variables.VariablesPlugin;
import org.eclipse.jdt.core.IClasspathAttribute;
import org.eclipse.jdt.core.IClasspathContainer;
import org.eclipse.jdt.core.IClasspathEntry;
@@ -190,7 +196,7 @@ public final class IvyClasspathUtil {
IClasspathContainer cp = JavaCore.getClasspathContainer(path, javaProject);
if (cp instanceof IvyClasspathContainer) {
IvyClasspathContainer ivycp = (IvyClasspathContainer) cp;
- String settingsPath;
+ ResolvedPath settingsPath;
try {
settingsPath = ivycp.getConf().getInheritedSettingsSetup()
.getResolvedIvySettingsPath(ivycp.getConf().getProject());
@@ -198,8 +204,8 @@ public final class IvyClasspathUtil {
// cannot resolve the ivy settings so just ignore
continue;
}
- if (settingsPath
- .equals(ivySettings.getProjectRelativePath().toString())) {
+ if (settingsPath.getResolvedPath().equals(
+ ivySettings.getProjectRelativePath().toString())) {
containers.add(ivycp);
}
}
@@ -316,9 +322,10 @@ public final class IvyClasspathUtil {
*
* @throws IOException
* @throws ParseException
+ * @throws IvyDEException
*/
public static void toIvyFile(ModuleDescriptor descriptor, IvyClasspathContainer container)
- throws ParseException, IOException {
+ throws ParseException, IOException, IvyDEException {
IvyClasspathContainerConfiguration conf = container.getConf();
// TODO the ivy file might not be in the workspace or may be an absolute path
// in a such case the Eclipse API will state the file a read only
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/SettingsSetup.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/SettingsSetup.java?rev=1361798&r1=1361797&r2=1361798&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/SettingsSetup.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/cpcontainer/SettingsSetup.java Sun Jul 15 21:07:19 2012
@@ -17,17 +17,14 @@
*/
package org.apache.ivyde.eclipse.cpcontainer;
-import java.io.File;
-import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.ivyde.eclipse.IvyDEException;
-import org.apache.ivyde.eclipse.IvyPlugin;
+import org.apache.ivyde.eclipse.ResolvedPath;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.variables.IStringVariableManager;
import org.eclipse.core.variables.VariablesPlugin;
@@ -56,32 +53,8 @@ public class SettingsSetup {
this.loadSettingsOnDemand = setup.loadSettingsOnDemand;
}
- public String getResolvedIvySettingsPath(IProject project) throws IvyDEException {
- String url;
- IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager();
- String path;
- if (project != null) {
- path = ivySettingsPath.replaceAll("\\$\\{ivyproject_loc\\}", "\\${workspace_loc:"
- + project.getName() + "}");
- } else {
- path = ivySettingsPath;
- }
- try {
- url = manager.performStringSubstitution(path, false);
- } catch (CoreException e) {
- throw new IvyDEException("Unrecognized variables",
- "Unrecognized variables in the Ivy settings file " + ivySettingsPath, e);
- }
- if (ivySettingsPath.trim().startsWith("$")) {
- // it starts with a variable, let's add the file protocol.
- try {
- url = new File(url).toURI().toURL().toExternalForm();
- } catch (MalformedURLException e) {
- IvyPlugin.log(IStatus.ERROR,
- "The file got from the workspace browser has not a valid URL", e);
- }
- }
- return url;
+ public ResolvedPath getResolvedIvySettingsPath(IProject project) throws IvyDEException {
+ return new ResolvedPath(ivySettingsPath, project);
}
public String getRawIvySettingsPath() {
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/retrieve/StandaloneRetrieveSetupState.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/retrieve/StandaloneRetrieveSetupState.java?rev=1361798&r1=1361797&r2=1361798&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/retrieve/StandaloneRetrieveSetupState.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/retrieve/StandaloneRetrieveSetupState.java Sun Jul 15 21:07:19 2012
@@ -21,6 +21,7 @@ import java.util.Collection;
import org.apache.ivyde.eclipse.CachedIvy;
import org.apache.ivyde.eclipse.IvyDEException;
+import org.apache.ivyde.eclipse.ResolvedPath;
import org.eclipse.core.resources.IProject;
public class StandaloneRetrieveSetupState extends CachedIvy {
@@ -31,7 +32,7 @@ public class StandaloneRetrieveSetupStat
this.setup = setup;
}
- protected String getIvySettingsPath() throws IvyDEException {
+ protected ResolvedPath getIvySettingsPath() throws IvyDEException {
return setup.getInheritedSettingSetup().getResolvedIvySettingsPath(setup.getProject());
}
Modified: ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/revdepexplorer/SyncIvyFilesJob.java
URL: http://svn.apache.org/viewvc/ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/revdepexplorer/SyncIvyFilesJob.java?rev=1361798&r1=1361797&r2=1361798&view=diff
==============================================================================
--- ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/revdepexplorer/SyncIvyFilesJob.java (original)
+++ ant/ivy/ivyde/trunk/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/revdepexplorer/SyncIvyFilesJob.java Sun Jul 15 21:07:19 2012
@@ -37,6 +37,7 @@ import org.apache.ivy.plugins.namespace.
import org.apache.ivy.plugins.namespace.NamespaceTransformer;
import org.apache.ivy.plugins.parser.xml.UpdateOptions;
import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorUpdater;
+import org.apache.ivyde.eclipse.IvyDEException;
import org.apache.ivyde.eclipse.IvyPlugin;
import org.apache.ivyde.eclipse.cpcontainer.IvyClasspathContainer;
import org.apache.ivyde.eclipse.cpcontainer.IvyClasspathContainerConfiguration;
@@ -61,13 +62,13 @@ public class SyncIvyFilesJob extends Wor
/**
* FIXME Here we seriously abuse the Ivy core API to allow us to preserve an info element
- * containing no revision attribute. Ivy code should be altered to allow us to preserve
- * revision (including the lack of its definition!).
+ * containing no revision attribute. Ivy code should be altered to allow us to preserve revision
+ * (including the lack of its definition!).
*/
private class RevisionPreservingNamespace extends Namespace {
private class NullableRevisionModuleRevisionId extends ModuleRevisionId {
private String revision;
-
+
public NullableRevisionModuleRevisionId(ModuleId moduleId, String revision) {
super(moduleId, revision);
this.revision = revision;
@@ -75,31 +76,31 @@ public class SyncIvyFilesJob extends Wor
public String getRevision() {
return revision;
- }
+ }
}
-
+
private class RevisionPreservingNamespaceTransformer implements NamespaceTransformer {
public boolean isIdentity() {
return false;
}
-
+
public ModuleRevisionId transform(ModuleRevisionId mrid) {
if (mrid.getRevision().indexOf("working@") > -1) {
return new NullableRevisionModuleRevisionId(mrid.getModuleId(), null);
}
return new ModuleRevisionId(mrid.getModuleId(), mrid.getRevision());
- }
+ }
}
public NamespaceTransformer getToSystemTransformer() {
return new RevisionPreservingNamespaceTransformer();
}
}
-
+
public SyncIvyFilesJob(MultiRevDependencyDescriptor[] multiRevisionDependencies) {
super("Synchronizing Ivy Files");
this.multiRevisionDependencies = multiRevisionDependencies;
- }
+ }
protected IStatus executeJob(IProgressMonitor monitor) {
MultiStatus errorStatuses = new MultiStatus(IvyPlugin.ID, IStatus.ERROR,
@@ -125,20 +126,26 @@ public class SyncIvyFilesJob extends Wor
if (dependencies[j].getDependencyId().equals(multiRevision.getModuleId())
&& multiRevision.hasNewRevision()
&& multiRevision.isForContainer(container)) {
- newRevisions.put(dependencyRevisionId, multiRevisionDependencies[k]
- .getNewRevision());
+ newRevisions.put(dependencyRevisionId,
+ multiRevisionDependencies[k].getNewRevision());
break; // move on to the next dependency
}
}
}
-
- UpdateOptions updateOptions = new UpdateOptions()
- .setResolvedRevisions(newRevisions)
- .setReplaceInclude(false)
- .setGenerateRevConstraint(false)
- .setNamespace(new RevisionPreservingNamespace());
- File ivyFile = container.getState().getIvyFile();
-
+
+ UpdateOptions updateOptions = new UpdateOptions().setResolvedRevisions(newRevisions)
+ .setReplaceInclude(false).setGenerateRevConstraint(false)
+ .setNamespace(new RevisionPreservingNamespace());
+
+ File ivyFile;
+ try {
+ ivyFile = container.getState().getIvyFile();
+ } catch (IvyDEException e) {
+ errorStatuses.add(new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
+ "Fail to resolve the ivy file", e));
+ continue;
+ }
+
File ivyTempFile = new File(ivyFile.toString() + ".temp");
try {
XmlModuleDescriptorUpdater.update(ivyFile.toURI().toURL(), ivyTempFile,
@@ -146,16 +153,13 @@ public class SyncIvyFilesJob extends Wor
saveChanges(container, ivyFile, ivyTempFile);
} catch (MalformedURLException e) {
errorStatuses.add(new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
- "Failed to write Ivy file " + container.getState().getIvyFile().getPath()
- + " (malformed URL)", e));
+ "Failed to write Ivy file " + ivyFile + " (malformed URL)", e));
} catch (IOException e) {
errorStatuses.add(new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
- "Failed to write Ivy file " + container.getState().getIvyFile().getPath(),
- e));
+ "Failed to write Ivy file " + ivyFile, e));
} catch (SAXException e) {
errorStatuses.add(new Status(IStatus.ERROR, IvyPlugin.ID, IStatus.ERROR,
- "Failed to write Ivy file " + container.getState().getIvyFile().getPath(),
- e));
+ "Failed to write Ivy file " + ivyFile, e));
} finally {
ivyTempFile.delete();
}
@@ -199,8 +203,8 @@ public class SyncIvyFilesJob extends Wor
IFile virtualIvyFile = conf.getJavaProject().getProject().getFile(conf.getIvyXmlPath());
IStatus writable = virtualIvyFile.getWorkspace().validateEdit(new IFile[] {virtualIvyFile},
IWorkspace.VALIDATE_PROMPT);
- if (writable.isOK()) {
- FileWriter writer = new FileWriter(permanentSaveTarget, false);
+ if (writable.isOK()) {
+ FileWriter writer = new FileWriter(permanentSaveTarget, false);
BufferedReader reader = new BufferedReader(new FileReader(temporaryChanges));
while (reader.ready()) {
writer.write(reader.readLine() + "\n");
@@ -209,5 +213,5 @@ public class SyncIvyFilesJob extends Wor
writer.close();
reader.close();
}
- }
+ }
}