*** empty log message ***
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/ConfigOperation.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/ConfigOperation.java
index 57d8521..2baae70 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/ConfigOperation.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/ConfigOperation.java
@@ -26,14 +26,8 @@
}
public boolean execute(IProgressMonitor pm) throws CoreException {
- PendingOperation op =
- new PendingOperation(
- getInstallConfiguration(),
- getTargetSite(),
- getFeature(),
- PendingOperation.CONFIGURE);
- IStatus status = UpdateManager.getValidator().validatePendingChange(op);
+ IStatus status = UpdateManager.getValidator().validatePendingConfig(feature);
if (status != null) {
throw new CoreException(status);
}
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/IOperationValidator.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/IOperationValidator.java
index 2bc052f..2fcc121 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/IOperationValidator.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/IOperationValidator.java
@@ -20,11 +20,23 @@
public interface IOperationValidator {
/**
+ * Called before performing install.
+ * Returns null when status cannot be reported.
+ */
+ public IStatus validatePendingInstall(IFeature oldFeature, IFeature newFeature);
+
+ /**
* Called before performing operation.
* Returns null when status cannot be reported.
*/
- public IStatus validatePendingChange(PendingOperation job);
-
+ public IStatus validatePendingConfig(IFeature feature);
+
+ /**
+ * Called before performing operation.
+ * Returns null when status cannot be reported.
+ */
+ public IStatus validatePendingUnconfig(IFeature feature);
+
/**
* Called before processing a delta.
* Returns null when status cannot be reported.
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/OperationValidator.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/OperationValidator.java
index ebb345c..0fa0db3 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/OperationValidator.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/OperationValidator.java
@@ -67,33 +67,49 @@
/*
* Called by UI before performing operation
*/
- public IStatus validatePendingChange(PendingOperation job) {
+ public IStatus validatePendingInstall(IFeature oldFeature, IFeature newFeature) {
// check initial state
ArrayList beforeStatus = new ArrayList();
validateInitialState(beforeStatus);
// check proposed change
ArrayList status = new ArrayList();
- switch (job.getJobType()) {
- case PendingOperation.UNCONFIGURE :
- validateUnconfigure(job.getFeature(), status);
- break;
- case PendingOperation.CONFIGURE :
- validateConfigure(job.getFeature(), status);
- break;
- case PendingOperation.INSTALL :
- validateInstall(job.getOldFeature(), job.getFeature(), status);
- break;
- }
+ validateInstall(oldFeature, newFeature, status);
// report status
- if (status.size() > 0) {
- if (beforeStatus.size() > 0)
- return createMultiStatus(KEY_ROOT_MESSAGE_INIT, beforeStatus);
- else
- return createMultiStatus(KEY_ROOT_MESSAGE, status);
- }
- return null;
+ return createReportStatus(beforeStatus, status);
+ }
+
+ /*
+ * Called by UI before performing operation
+ */
+ public IStatus validatePendingUnconfig(IFeature feature) {
+ // check initial state
+ ArrayList beforeStatus = new ArrayList();
+ validateInitialState(beforeStatus);
+
+ // check proposed change
+ ArrayList status = new ArrayList();
+ validateUnconfigure(feature, status);
+
+ // report status
+ return createReportStatus(beforeStatus, status);
+ }
+
+ /*
+ * Called by UI before performing operation
+ */
+ public IStatus validatePendingConfig(IFeature feature) {
+ // check initial state
+ ArrayList beforeStatus = new ArrayList();
+ validateInitialState(beforeStatus);
+
+ // check proposed change
+ ArrayList status = new ArrayList();
+ validateConfigure(feature, status);
+
+ // report status
+ return createReportStatus(beforeStatus, status);
}
/*
@@ -115,13 +131,7 @@
}
// report status
- if (status.size() > 0) {
- if (beforeStatus.size() > 0)
- return createMultiStatus(KEY_ROOT_MESSAGE_INIT, beforeStatus);
- else
- return createMultiStatus(KEY_ROOT_MESSAGE, status);
- }
- return null;
+ return createReportStatus(beforeStatus, status);
}
/*
@@ -137,13 +147,7 @@
validateRevert(config, status);
// report status
- if (status.size() > 0) {
- if (beforeStatus.size() > 0)
- return createMultiStatus(KEY_ROOT_MESSAGE_INIT, beforeStatus);
- else
- return createMultiStatus(KEY_ROOT_MESSAGE, status);
- }
- return null;
+ return createReportStatus(beforeStatus, status);
}
/*
@@ -160,6 +164,10 @@
validatePendingChanges(jobs, status);
// report status
+ return createReportStatus(beforeStatus, status);
+ }
+ private IStatus createReportStatus(ArrayList beforeStatus, ArrayList status) {
+ // report status
if (status.size() > 0) {
if (beforeStatus.size() > 0)
return createMultiStatus(KEY_ROOT_MESSAGE_INIT, beforeStatus);
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/UnconfigOperation.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/UnconfigOperation.java
index fff392f..635b03e 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/UnconfigOperation.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/operations/UnconfigOperation.java
@@ -26,13 +26,8 @@
}
public boolean execute(IProgressMonitor pm) throws CoreException {
- PendingOperation op =
- new PendingOperation(
- getInstallConfiguration(),
- getTargetSite(),
- getFeature(),
- PendingOperation.UNCONFIGURE);
- IStatus status = UpdateManager.getValidator().validatePendingChange(op);
+
+ IStatus status = UpdateManager.getValidator().validatePendingUnconfig(feature);
if (status != null) {
throw new CoreException(status);
}
diff --git a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/search/UnifiedUpdatesSearchCategory.java b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/search/UnifiedUpdatesSearchCategory.java
index 60e6ec5..e5652ed 100644
--- a/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/search/UnifiedUpdatesSearchCategory.java
+++ b/update/org.eclipse.update.core/srcnew/org/eclipse/update/internal/search/UnifiedUpdatesSearchCategory.java
@@ -311,7 +311,7 @@
// do not accept updates without a license
if (!UpdateManager.hasLicense(job))
continue;
- IStatus status = UpdateManager.getValidator().validatePendingChange(job);
+ IStatus status = UpdateManager.getValidator().validatePendingInstall(job.getOldFeature(), job.getFeature());
if (status == null) {
if (hit.isPatch()) {
IFeature patch = job.getFeature();
diff --git a/update/org.eclipse.update.ui/srcnew/org/eclipse/update/internal/ui/views/InstallOptionalFeatureAction.java b/update/org.eclipse.update.ui/srcnew/org/eclipse/update/internal/ui/views/InstallOptionalFeatureAction.java
index 0c5cbb9..b11b510 100644
--- a/update/org.eclipse.update.ui/srcnew/org/eclipse/update/internal/ui/views/InstallOptionalFeatureAction.java
+++ b/update/org.eclipse.update.ui/srcnew/org/eclipse/update/internal/ui/views/InstallOptionalFeatureAction.java
@@ -180,7 +180,7 @@
final PendingOperation job,
final boolean needLicensePage) {
- IStatus validationStatus = UpdateManager.getValidator().validatePendingChange(job);
+ IStatus validationStatus = UpdateManager.getValidator().validatePendingInstall(job.getOldFeature(), job.getFeature());
if (validationStatus != null) {
ErrorDialog.openError(
UpdateUI.getActiveWorkbenchShell(),