Separating out phase/operand completion for touchpoints to ensure phases cannot override touchpoint completion. No change to flow.
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/provisional/p2/engine/Phase.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/provisional/p2/engine/Phase.java
index e88378b..ba821b0 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/provisional/p2/engine/Phase.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/provisional/p2/engine/Phase.java
@@ -121,7 +121,7 @@
}
}
-
+ mergeStatus(status, touchpointCompleteOperand(profile, operand, operandParameters, subMonitor));
mergeStatus(status, completeOperand(profile, operand, operandParameters, subMonitor));
if (status.matches(IStatus.ERROR | IStatus.CANCEL))
return;
@@ -161,6 +161,7 @@
}
void postPerform(MultiStatus status, IProfile profile, ProvisioningContext context, IProgressMonitor monitor) {
+ mergeStatus(status, touchpointCompletePhase(monitor, profile, phaseParameters));
mergeStatus(status, completePhase(monitor, profile, phaseParameters));
}
@@ -183,6 +184,7 @@
mergeStatus(status, action.undo(parameters));
// TODO: session.removeAction(...)
}
+ mergeStatus(status, touchpointCompleteOperand(profile, operand, operandParameters, new NullProgressMonitor()));
mergeStatus(status, completeOperand(profile, operand, operandParameters, new NullProgressMonitor()));
}
@@ -195,6 +197,10 @@
}
protected IStatus completePhase(IProgressMonitor monitor, IProfile profile, Map parameters) {
+ return Status.OK_STATUS;
+ }
+
+ IStatus touchpointCompletePhase(IProgressMonitor monitor, IProfile profile, Map parameters) {
if (touchpointToTouchpointPhaseParameters == null)
return Status.OK_STATUS;
@@ -210,6 +216,10 @@
}
protected IStatus completeOperand(IProfile profile, Operand operand, Map parameters, IProgressMonitor monitor) {
+ return Status.OK_STATUS;
+ }
+
+ IStatus touchpointCompleteOperand(IProfile profile, Operand operand, Map parameters, IProgressMonitor monitor) {
if (touchpointToTouchpointOperandParameters == null)
return Status.OK_STATUS;