diff --git a/cave/com.raytheon.uf.viz.derivparam.python/src/com/raytheon/uf/viz/derivparam/python/MasterDerivScript.java b/cave/com.raytheon.uf.viz.derivparam.python/src/com/raytheon/uf/viz/derivparam/python/MasterDerivScript.java index f98f52cad2..494bfd7f9a 100644 --- a/cave/com.raytheon.uf.viz.derivparam.python/src/com/raytheon/uf/viz/derivparam/python/MasterDerivScript.java +++ b/cave/com.raytheon.uf.viz.derivparam.python/src/com/raytheon/uf/viz/derivparam/python/MasterDerivScript.java @@ -61,7 +61,7 @@ public class MasterDerivScript extends PythonInterpreter { private static final String DATA_NAME = "Data"; - private Map prevArgs = new HashMap(); + private final Map> prevArgs = new HashMap>(); /** * Constructor @@ -86,7 +86,14 @@ public class MasterDerivScript extends PythonInterpreter { throws JepException { this.prevArgs.clear(); executeFunctionInternal(name, args); - cleanupGlobals(); + jep.eval("globalsRef=globals()"); + for (List pArgs : prevArgs.values()) { + for (String arg : pArgs) { + jep.eval(arg + " = None"); + jep.eval("del globalsRef['" + arg + "']"); + } + } + this.prevArgs.clear(); return getExecutionResult(); } @@ -122,7 +129,7 @@ public class MasterDerivScript extends PythonInterpreter { protected void evaluateArgument(String argName, Object argValue) throws JepException { if (prevArgs.containsKey(argValue)) { - jep.eval(argName + " = " + prevArgs.get(argValue)); + jep.eval(argName + " = " + prevArgs.get(argValue).get(0)); } else if (argValue instanceof List) { @SuppressWarnings({ "rawtypes" }) List valList = (List) argValue; @@ -222,7 +229,7 @@ public class MasterDerivScript extends PythonInterpreter { // create a list of arrays jep.eval(argName + " = []"); for (int argIdx = 0; argIdx < valList.length; argIdx++) { - IDataRecord val = (IDataRecord) valList[argIdx]; + IDataRecord val = valList[argIdx]; jep.eval(argName + ".append(None)"); // setNumeric won't work with indexed objects evaluateArgument("__tmp", val); @@ -248,7 +255,12 @@ public class MasterDerivScript extends PythonInterpreter { } else { super.evaluateArgument(argName, argValue); } - prevArgs.put(argValue, argName); + List pArgs = prevArgs.get(argValue); + if (pArgs == null) { + pArgs = new ArrayList(); + prevArgs.put(argValue, pArgs); + } + pArgs.add(argName); } /**