Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Kaegi2009-04-24 16:25:40 +0000
committerSimon Kaegi2009-04-24 16:25:40 +0000
commit3f9936d495ffa0d857e2e0a621c6c0a8d8ceabd7 (patch)
tree19c1a6c84e6802a108244a4706e92e95637a9041 /bundles/org.eclipse.equinox.p2.touchpoint.eclipse
parenta7db7979d14b5129688e3251f0a586dfb2308eda (diff)
downloadrt.equinox.p2-3f9936d495ffa0d857e2e0a621c6c0a8d8ceabd7.tar.gz
rt.equinox.p2-3f9936d495ffa0d857e2e0a621c6c0a8d8ceabd7.tar.xz
rt.equinox.p2-3f9936d495ffa0d857e2e0a621c6c0a8d8ceabd7.zip
Bug 273480 Make touchpoint action SetProgramPropertyAction understand @artifact
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.touchpoint.eclipse')
-rw-r--r--bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetProgramPropertyAction.java30
1 files changed, 28 insertions, 2 deletions
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetProgramPropertyAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetProgramPropertyAction.java
index 49dce7299..735b4c243 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetProgramPropertyAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.eclipse/src/org/eclipse/equinox/internal/p2/touchpoint/eclipse/actions/SetProgramPropertyAction.java
@@ -8,13 +8,16 @@
******************************************************************************/
package org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions;
+import java.io.File;
import java.util.Map;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.touchpoint.eclipse.EclipseTouchpoint;
import org.eclipse.equinox.internal.p2.touchpoint.eclipse.Util;
import org.eclipse.equinox.internal.provisional.frameworkadmin.Manipulator;
+import org.eclipse.equinox.internal.provisional.p2.engine.IProfile;
import org.eclipse.equinox.internal.provisional.p2.engine.ProvisioningAction;
+import org.eclipse.equinox.internal.provisional.p2.metadata.IArtifactKey;
+import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit;
import org.eclipse.osgi.util.NLS;
public class SetProgramPropertyAction extends ProvisioningAction {
@@ -26,6 +29,14 @@ public class SetProgramPropertyAction extends ProvisioningAction {
if (propName == null)
return Util.createError(NLS.bind(Messages.parameter_not_set, ActionConstants.PARM_PROP_NAME, ID));
String propValue = (String) parameters.get(ActionConstants.PARM_PROP_VALUE);
+ if (propValue != null && propValue.equals(ActionConstants.PARM_ARTIFACT)) {
+ try {
+ propValue = resolveArtifactParam(parameters);
+ } catch (CoreException e) {
+ return e.getStatus();
+ }
+ }
+
getMemento().put(ActionConstants.PARM_PREVIOUS_VALUE, manipulator.getConfigData().getProperty(propName));
manipulator.getConfigData().setProperty(propName, propValue);
return Status.OK_STATUS;
@@ -40,4 +51,19 @@ public class SetProgramPropertyAction extends ProvisioningAction {
manipulator.getConfigData().setProperty(propName, previousValue);
return Status.OK_STATUS;
}
+
+ private static String resolveArtifactParam(Map parameters) throws CoreException {
+ IProfile profile = (IProfile) parameters.get(ActionConstants.PARM_PROFILE);
+ IInstallableUnit iu = (IInstallableUnit) parameters.get(EclipseTouchpoint.PARM_IU);
+ IArtifactKey[] artifacts = iu.getArtifacts();
+ if (artifacts == null || artifacts.length == 0)
+ throw new CoreException(Util.createError(NLS.bind(Messages.iu_contains_no_arifacts, iu)));
+
+ IArtifactKey artifactKey = artifacts[0];
+
+ File fileLocation = Util.getArtifactFile(artifactKey, profile);
+ if (fileLocation == null || !fileLocation.exists())
+ throw new CoreException(Util.createError(NLS.bind(Messages.artifact_file_not_found, artifactKey)));
+ return fileLocation.getAbsolutePath();
+ }
} \ No newline at end of file

Back to the top