[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [p2-dev] IDirector and IEngine
|
Hi, Eugen.
I think it depends on the nature of your GUI.
The p2 UI rarely calls the director because we almost always involve the user in confirmation of the plan or other decision making.
In our case, we build the plan, show the user what will happen, possibly correct the plan for the user, and then invoke the engine.
Something like...
ProfileChangeRequest req = new ProfileChangeRequest(profile);
req.addInstallableUnits(ius);
ProvisioningPlan plan = planner.getProvisioningPlan(req, null, null);
// validate the plan...get confirmation from the user or report a problem...
// Might want to change the original request based on the input
// Once we know the plan is approved by the user and is OK...
engine.perform(profile, new DefaultPhaseSet(), plan.getOperands(), null, null);
For an example of building and/or changing the plan, take a look at this static method in InstallAction. It does things like figure out that the user really means to upgrade when they pick an IU for install and other changes in the original request.
computeProvisioningPlan(IInstallableUnit[] ius, String targetProfileId, IProgressMonitor monitor):
In headless situations, you see a lot more use of the director to carry out the whole operation since the user doesn't get a chance to modify the request.
susan
Eugen Reiswich <reiswich@xxxxxx>
![]()
| ![]()
| ![]()
To: P2 developer discussions <p2-dev@xxxxxxxxxxx>
cc:
Subject: Re: [p2-dev] IDirector and IEngine |
Sorry John, didn't see that. So if I got it right I only invoke operations on the IDirector and he will delegate all further steps to the IEngine. Hence I should never use the IEngine directly, right?
Regards,
Eugen
Am 10.09.2008 um 20:19 schrieb John Arthorne:
Hi Eugen, there is some background information on these concepts here:
http://wiki.eclipse.org/Equinox/p2/Concepts
John
Hi folks,
I'm trying to get familiar with p2 and had a look at the p2 tests (org.eclipse.equinox.p2.tests). Basically I'm looking for install/update/unistall operations with P2.
Right now I don't get the point with IDirector and IEngine. It seems that both are able to install IUs, is that right? The IDirector has a provision(...) method while the IEngine has a perform(...) method. So which one do I have to use if I want to create a custom provisioning GUI?
Is this the best way to install IUs (found in org.eclipse.equinox.p2.tests):
protected IStatus install(IProfile profile, IInstallableUnit[] ius, boolean strict, IPlanner planner, IEngine engine) {
ProfileChangeRequest req = new ProfileChangeRequest(profile);
req.addInstallableUnits(ius);
for (int i = 0; i < ius.length; i++) {
req.setInstallableUnitInclusionRules(ius[i], strict ? PlannerHelper.createStrictInclusionRule(ius[i]) : PlannerHelper.createOptionalInclusionRule(ius[i]));
}
ProvisioningPlan plan = planner.getProvisioningPlan(req, null, null);
if (plan.getStatus().getSeverity() == IStatus.ERROR || plan.getStatus().getSeverity() == IStatus.CANCEL)
return plan.getStatus();
return engine.perform(profile, new DefaultPhaseSet(), plan.getOperands(), null, null);
}
Regards,
Eugen_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev
_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev
_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev


