From 33689a6a2e2407c8f0a64cbfd6319f91ab7dfbd2 Mon Sep 17 00:00:00 2001
From: Uwe Stieber
Date: Thu, 31 Oct 2013 12:37:38 +0100
Subject: Target Explorer: Path variable replacement must not change the
original case of the passed in path
---
.../delegates/AbstractPathVariableDelegate.java | 5 ++---
.../persistence/delegates/AbstractVariableDelegate.java | 14 ++++++++++++--
.../persistence/delegates/GsonMapPersistenceDelegate.java | 3 +--
.../persistence/delegates/PathVariableDelegate.java | 4 ++--
4 files changed, 17 insertions(+), 9 deletions(-)
(limited to 'target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence')
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/AbstractPathVariableDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/AbstractPathVariableDelegate.java
index 840b23ae5..e255b6e45 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/AbstractPathVariableDelegate.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/AbstractPathVariableDelegate.java
@@ -11,7 +11,6 @@
package org.eclipse.tcf.te.runtime.persistence.delegates;
import org.eclipse.core.runtime.Path;
-import org.eclipse.tcf.te.runtime.utils.Host;
/**
* AbstractPathVariableDelegate
@@ -31,8 +30,8 @@ public abstract class AbstractPathVariableDelegate extends AbstractVariableDeleg
@Override
protected Object useVariable(String key, Object value, String variableName, String variableValue) {
if (isPathKey(key) && value instanceof String) {
- String valuePath = new Path(Host.isWindowsHost() ? ((String)value).toLowerCase() : (String)value).toString();
- String variablePath = new Path(Host.isWindowsHost() ? variableValue.toLowerCase() : (String)variableValue).toString();
+ String valuePath = new Path((String)value).toString();
+ String variablePath = new Path(variableValue).toString();
return super.useVariable(key, valuePath, variableName, variablePath);
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/AbstractVariableDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/AbstractVariableDelegate.java
index 329a40b29..a7a841638 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/AbstractVariableDelegate.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/AbstractVariableDelegate.java
@@ -13,6 +13,7 @@ package org.eclipse.tcf.te.runtime.persistence.delegates;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.regex.Pattern;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -20,6 +21,7 @@ import org.eclipse.core.runtime.IExecutableExtension;
import org.eclipse.tcf.te.runtime.persistence.PersistenceManager;
import org.eclipse.tcf.te.runtime.persistence.interfaces.IVariableDelegate;
import org.eclipse.tcf.te.runtime.persistence.interfaces.IVariableProvider;
+import org.eclipse.tcf.te.runtime.utils.Host;
/**
* AbstractVariableDelegate
@@ -34,15 +36,23 @@ public abstract class AbstractVariableDelegate implements IVariableDelegate, IEx
/**
* Try to use a variable inside the given value.
+ *
* @param key The key of the value.
* @param value The value to inspect.
* @param variableName The variable name to use.
* @param variableValue The variable value.
+ *
* @return The new value if the variable was used, null
otherwise.
*/
protected Object useVariable(String key, Object value, String variableName, String variableValue) {
- if (value instanceof String && ((String)value).contains(variableValue)) {
- return ((String)value).replaceAll(variableValue, "<"+variableName+">"); //$NON-NLS-1$ //$NON-NLS-2$
+ if (value instanceof String) {
+ boolean contains = Host.isWindowsHost() ? ((String)value).toLowerCase().contains(variableValue.toLowerCase()) : ((String)value).contains(variableValue);
+ if (contains) {
+ if (Host.isWindowsHost()) {
+ return Pattern.compile(variableValue, Pattern.CASE_INSENSITIVE).matcher((String)value).replaceAll("<"+variableName+">"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ return ((String)value).replaceAll(variableValue, "<"+variableName+">"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
}
return null;
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/GsonMapPersistenceDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/GsonMapPersistenceDelegate.java
index ef2868499..a6c685fca 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/GsonMapPersistenceDelegate.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/GsonMapPersistenceDelegate.java
@@ -179,8 +179,7 @@ public class GsonMapPersistenceDelegate extends ExecutableExtension implements I
if (data != null) {
Map variables = null;
- IVariableDelegate[] delegates = PersistenceManager.getInstance()
- .getVariableDelegates(this);
+ IVariableDelegate[] delegates = PersistenceManager.getInstance().getVariableDelegates(this);
for (IVariableDelegate delegate : delegates) {
variables = delegate.getVariables(data);
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/PathVariableDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/PathVariableDelegate.java
index c7b9f520b..38c9af71d 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/PathVariableDelegate.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.runtime.persistence/src/org/eclipse/tcf/te/runtime/persistence/delegates/PathVariableDelegate.java
@@ -17,9 +17,9 @@ import org.eclipse.core.runtime.IConfigurationElement;
/**
* General path variable delegate that can be configured directly in the contributions.
- *
+ *
* To set the list of handled keys you have to use the class
and parameter
tags
- * with keysToHandle as parameter name and a coma seperated list of handled keys
+ * with keysToHandle as parameter name and a comma separated list of handled keys
* (i.e. "file,directory") as parameter value.
*/
public class PathVariableDelegate extends AbstractPathVariableDelegate {
--
cgit v1.2.3