Add an offline mode
git-svn-id: https://svn.apache.org/repos/asf/ant/ivy/ivyde/trunk@1028394 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/doc/release-notes.html b/doc/release-notes.html
index cbcbe28..24083ad 100644
--- a/doc/release-notes.html
+++ b/doc/release-notes.html
@@ -127,6 +127,7 @@
<li>NEW: an IvyDE classpath can now be retrieved (IVYDE-56)</li>
<li>NEW: Add branch comparison to workspace resolver (IVYDE-234) (thanks to Jeffrey M. Metcalf)</li>
<li>NEW: Look for ivysettings.xml file in project root copying the behavior of ivy ant task (IVYDE-258)</li>
+ <li>NEW: IvyDE can now resolve in an offline mode, where Ivy use only the caches (Ivy 2.3 required)</li>
</ul><ul>
<li>IMPROVE: let IvyDE refresh workspace after a resolve (IVYDE-27) (thanks to Clint Burghduff)</li>
<li>IMPROVE: IvyDE now resolve by batch, then preventing too many workspace build (IVYDE-177)</li>
diff --git a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolve/IvyResolver.java b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolve/IvyResolver.java
index 0ef5b69..98e49fa 100644
--- a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolve/IvyResolver.java
+++ b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/resolve/IvyResolver.java
@@ -73,6 +73,8 @@
private final String ivyXmlPath;
+ private boolean useCacheOnly = IvyPlugin.getPreferenceStoreHelper().isOffline();
+
public IvyResolver(String ivyXmlPath, List confInput, IProject project) {
this.ivyXmlPath = ivyXmlPath;
this.confInput = confInput;
@@ -95,6 +97,10 @@
this.retrieveTypes = retrieveTypes;
}
+ public void setUseCacheOnly(boolean useCacheOnly) {
+ this.useCacheOnly = useCacheOnly;
+ }
+
public String getIvyXmlPath() {
return ivyXmlPath;
}
@@ -205,8 +211,10 @@
private ResolveResult doResolve(Ivy ivy, ModuleDescriptor md) throws ParseException,
IOException {
- ResolveOptions resolveOption = new ResolveOptions().setConfs(confs);
+ ResolveOptions resolveOption = new ResolveOptions();
+ resolveOption.setConfs(confs);
resolveOption.setValidate(ivy.getSettings().doValidate());
+ resolveOption.setUseCacheOnly(useCacheOnly);
ResolveReport report = ivy.resolve(md, resolveOption);
ResolveResult result = new ResolveResult(report);
diff --git a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java
index d526828..2494d96 100644
--- a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java
+++ b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyDEPreferenceStoreHelper.java
@@ -271,4 +271,12 @@
.getRetrieveTypes());
}
+ public boolean isOffline() {
+ return prefStore.getBoolean(PreferenceConstants.OFFLINE);
+ }
+
+ public void setOffline(boolean offline) {
+ prefStore.setValue(PreferenceConstants.OFFLINE, offline);
+ }
+
}
diff --git a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyPreferencePage.java b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyPreferencePage.java
index a82268f..4e6c55e 100644
--- a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyPreferencePage.java
+++ b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/IvyPreferencePage.java
@@ -65,6 +65,8 @@
private Button doNothingOnChangeButton;
+ private Button offlineButton;
+
public IvyPreferencePage() {
setPreferenceStore(IvyPlugin.getDefault().getPreferenceStore());
Object ivydeVersion = IvyPlugin.getDefault().getBundle().getHeaders().get(
@@ -87,6 +89,10 @@
Label horizontalLine = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL);
horizontalLine.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
+ offlineButton = new Button(composite, SWT.CHECK);
+ offlineButton.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 3, 1));
+ offlineButton.setText("Offline (use only the caches)");
+
Group startupGroup = new Group(composite, SWT.NONE);
startupGroup.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false));
startupGroup.setLayout(new GridLayout());
@@ -170,6 +176,8 @@
organizationText.setText(helper.getIvyOrg());
organizationUrlText.setText(helper.getIvyOrgUrl());
+
+ offlineButton.setSelection(helper.isOffline());
}
public boolean performOk() {
@@ -191,6 +199,8 @@
helper.setOrganization(organizationText.getText());
helper.setOrganizationUrl(organizationUrlText.getText());
+
+ helper.setOffline(offlineButton.getSelection());
return true;
}
@@ -218,5 +228,7 @@
organizationText.setText(PreferenceInitializer.DEFAULT_ORGANISATION);
organizationUrlText.setText(PreferenceInitializer.DEFAULT_ORGANISATION_URL);
+
+ offlineButton.setSelection(PreferenceInitializer.DEFAULT_OFFLINE);
}
}
diff --git a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java
index 7672e23..1bfe59a 100644
--- a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java
+++ b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceConstants.java
@@ -110,4 +110,6 @@
public static final String MAP_IF_ONLY_ONE_JAVADOC = "mapIfOnlyOneJavadoc";
+ public static final String OFFLINE = "offline";
+
}
diff --git a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java
index 79699b8..f6eb20f 100644
--- a/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java
+++ b/org.apache.ivyde.eclipse/src/java/org/apache/ivyde/eclipse/ui/preferences/PreferenceInitializer.java
@@ -120,6 +120,8 @@
DEFAULT_RETRIEVED_CLASSPATH_SETUP.setRetrieveTypes(DEFAULT_RETRIEVED_CLASSPATH_TYPES);
}
+ public static final boolean DEFAULT_OFFLINE = false;
+
public void initializeDefaultPreferences() {
IPreferenceStore store = IvyPlugin.getDefault().getPreferenceStore();
store.setDefault(PreferenceConstants.P_BOOLEAN, true);
@@ -179,6 +181,8 @@
DEFAULT_RETRIEVED_CLASSPATH_SYNC);
store.setDefault(PreferenceConstants.RETRIEVED_CLASSPATH_TYPES,
DEFAULT_RETRIEVED_CLASSPATH_TYPES);
+
+ store.setDefault(PreferenceConstants.OFFLINE, DEFAULT_OFFLINE);
}
}