diff options
Diffstat (limited to 'p2/org.eclipse.cdt.p2/src/org/eclipse/cdt/internal/p2')
2 files changed, 31 insertions, 2 deletions
diff --git a/p2/org.eclipse.cdt.p2/src/org/eclipse/cdt/internal/p2/touchpoint/natives/actions/CleanupUntarAction.java b/p2/org.eclipse.cdt.p2/src/org/eclipse/cdt/internal/p2/touchpoint/natives/actions/CleanupUntarAction.java index d8c108fd2eb..e32c81678e4 100644 --- a/p2/org.eclipse.cdt.p2/src/org/eclipse/cdt/internal/p2/touchpoint/natives/actions/CleanupUntarAction.java +++ b/p2/org.eclipse.cdt.p2/src/org/eclipse/cdt/internal/p2/touchpoint/natives/actions/CleanupUntarAction.java @@ -10,11 +10,19 @@ *******************************************************************************/ package org.eclipse.cdt.internal.p2.touchpoint.natives.actions; +import java.io.File; import java.util.Map; +import java.util.StringTokenizer; import org.eclipse.core.runtime.IStatus; -import org.eclipse.equinox.internal.p2.touchpoint.natives.actions.CleanupzipAction; +import org.eclipse.core.runtime.Status; +import org.eclipse.equinox.internal.p2.engine.Profile; +import org.eclipse.equinox.internal.p2.touchpoint.natives.Messages; +import org.eclipse.equinox.internal.p2.touchpoint.natives.Util; +import org.eclipse.equinox.internal.p2.touchpoint.natives.actions.ActionConstants; import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningAction; +import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; +import org.eclipse.osgi.util.NLS; /** * Cleanup an untared artifact. @@ -26,6 +34,8 @@ import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningAction; */ public class CleanupUntarAction extends ProvisioningAction { + private static final String ACTION_NAME = "cleanupuntar"; + @Override public IStatus execute(Map parameters) { return cleanup(parameters); @@ -37,6 +47,24 @@ public class CleanupUntarAction extends ProvisioningAction { } public static IStatus cleanup(Map parameters) { - return CleanupzipAction.cleanupzip(parameters, false); + String source = (String)parameters.get(ActionConstants.PARM_SOURCE); + if (source == null) + return Util.createError(NLS.bind(Messages.param_not_set, ActionConstants.PARM_SOURCE, ACTION_NAME)); + + String target = (String)parameters.get(ActionConstants.PARM_TARGET); + if (target == null) + return Util.createError(NLS.bind(Messages.param_not_set, ActionConstants.PARM_TARGET, ACTION_NAME)); + + IInstallableUnit iu = (IInstallableUnit) parameters.get(ActionConstants.PARM_IU); + Profile profile = (Profile) parameters.get(ActionConstants.PARM_PROFILE); + + String fileList = profile.getInstallableUnitProperty(iu, "unzipped" + ActionConstants.PIPE + source + ActionConstants.PIPE + target); + StringTokenizer tokenizer = new StringTokenizer(fileList, ActionConstants.PIPE); + while (tokenizer.hasMoreTokens()) { + String filename = tokenizer.nextToken(); + for (File file = new File(filename); file.delete(); file = file.getParentFile()); + } + + return Status.OK_STATUS; } } diff --git a/p2/org.eclipse.cdt.p2/src/org/eclipse/cdt/internal/p2/touchpoint/natives/actions/UntarAction.java b/p2/org.eclipse.cdt.p2/src/org/eclipse/cdt/internal/p2/touchpoint/natives/actions/UntarAction.java index 127bb94ebfc..ceeb7f9b3ca 100644 --- a/p2/org.eclipse.cdt.p2/src/org/eclipse/cdt/internal/p2/touchpoint/natives/actions/UntarAction.java +++ b/p2/org.eclipse.cdt.p2/src/org/eclipse/cdt/internal/p2/touchpoint/natives/actions/UntarAction.java @@ -176,4 +176,5 @@ public class UntarAction extends ProvisioningAction { } return null; } + } |