| /******************************************************************************* |
| * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved. This |
| * program and the accompanying materials are made available under the terms of |
| * the Eclipse Public License v1.0 which accompanies this distribution, and is |
| * available at http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: IBM Corporation - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.equinox.p2.tests.director; |
| |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| import org.eclipse.core.runtime.NullProgressMonitor; |
| import org.eclipse.equinox.internal.p2.core.helpers.ServiceHelper; |
| import org.eclipse.equinox.internal.p2.director.DirectorActivator; |
| import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; |
| import org.eclipse.equinox.internal.provisional.p2.core.location.AgentLocation; |
| import org.eclipse.equinox.internal.provisional.p2.director.*; |
| import org.eclipse.equinox.internal.provisional.p2.engine.IProfile; |
| import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningContext; |
| import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; |
| import org.eclipse.equinox.internal.provisional.p2.metadata.query.InstallableUnitQuery; |
| import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository; |
| import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager; |
| import org.eclipse.equinox.internal.provisional.p2.query.Collector; |
| import org.eclipse.equinox.p2.tests.AbstractProvisioningTest; |
| import org.eclipse.equinox.p2.tests.TestActivator; |
| |
| public class RollbackTest extends AbstractProvisioningTest { |
| |
| private IInstallableUnit a1; |
| private IProfile profile; |
| private IDirector director; |
| |
| protected void setUp() throws Exception { |
| a1 = createIU("A", DEFAULT_VERSION, true); |
| profile = createProfile("TestProfile." + getName()); |
| director = createDirector(); |
| } |
| |
| public void test() throws ProvisionException { |
| ProfileChangeRequest request = new ProfileChangeRequest(profile); |
| request.addInstallableUnits(new IInstallableUnit[] {a1}); |
| System.out.println(director.provision(request, null, new NullProgressMonitor())); |
| printProfile(profile); |
| IMetadataRepositoryManager repoMan = (IMetadataRepositoryManager) ServiceHelper.getService(TestActivator.getContext(), IMetadataRepositoryManager.class.getName()); |
| IMetadataRepository repo = null; |
| repo = repoMan.loadRepository(getRollbackRepository(), null); |
| IInstallableUnit[] ius = (IInstallableUnit[]) repo.query(InstallableUnitQuery.ANY, new Collector(), null).toArray(IInstallableUnit.class); |
| for (int i = 0; i < ius.length; i++) |
| System.out.println(ius[i]); |
| director.revert(ius[0], profile, new ProvisioningContext(), new NullProgressMonitor()); |
| printProfile(profile); |
| } |
| |
| private URL getRollbackRepository() { |
| try { |
| URL location = ((AgentLocation) ServiceHelper.getService(DirectorActivator.context, AgentLocation.class.getName())).getDataArea(DirectorActivator.PI_DIRECTOR); |
| return new URL(location, "rollback"); |
| } catch (MalformedURLException e) { |
| fail("4.99", e); |
| return null; |
| } |
| } |
| } |