IDEMPIERE-598 Different errors when running Groovy scripts from Swing or Webui. Peer review.
This commit is contained in:
parent
f073540046
commit
ba8cc7463f
|
@ -24,7 +24,6 @@ import java.math.BigDecimal;
|
||||||
import java.sql.CallableStatement;
|
import java.sql.CallableStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.script.ScriptEngine;
|
import javax.script.ScriptEngine;
|
||||||
|
@ -156,56 +155,12 @@ public final class ProcessUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
ProcessCall process = null;
|
ProcessCall process = null;
|
||||||
//always query equinox extension first
|
//invoke process factory
|
||||||
process = Core.getProcess(className);
|
process = Core.getProcess(className);
|
||||||
|
|
||||||
if (process == null) {
|
if (process == null) {
|
||||||
//Get Class
|
pi.setSummary("Failed to create new process instance for " + className, true);
|
||||||
Class<?> processClass = null;
|
|
||||||
//use context classloader if available
|
|
||||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
|
||||||
if (classLoader != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
processClass = classLoader.loadClass(className);
|
|
||||||
}
|
|
||||||
catch (ClassNotFoundException ex)
|
|
||||||
{
|
|
||||||
log.log(Level.FINE, className, ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (processClass == null)
|
|
||||||
{
|
|
||||||
classLoader = ProcessUtil.class.getClassLoader();
|
|
||||||
try
|
|
||||||
{
|
|
||||||
processClass = classLoader.loadClass(className);
|
|
||||||
}
|
|
||||||
catch (ClassNotFoundException ex)
|
|
||||||
{
|
|
||||||
log.log(Level.WARNING, className, ex);
|
|
||||||
pi.setSummary ("ClassNotFound", true);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (processClass == null) {
|
|
||||||
pi.setSummary("No Instance for " + pi.getClassName(), true);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Get Process
|
|
||||||
try
|
|
||||||
{
|
|
||||||
process = (ProcessCall)processClass.newInstance();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
log.log(Level.WARNING, "Instance for " + className, ex);
|
|
||||||
pi.setSummary ("InstanceError", true);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean success = false;
|
boolean success = false;
|
||||||
|
@ -268,7 +223,7 @@ public final class ProcessUtil {
|
||||||
// now add the method arguments to the engine
|
// now add the method arguments to the engine
|
||||||
engine.put(MRule.ARGUMENTS_PREFIX + "Ctx", ctx);
|
engine.put(MRule.ARGUMENTS_PREFIX + "Ctx", ctx);
|
||||||
if (trx == null)
|
if (trx == null)
|
||||||
trx = Trx.get(pi.getTitle()+"_"+pi.getAD_PInstance_ID() + "_" + UUID.randomUUID(), true);
|
trx = Trx.get(Trx.createTrxName(pi.getTitle()+"_"+pi.getAD_PInstance_ID()), true);
|
||||||
engine.put(MRule.ARGUMENTS_PREFIX + "Trx", trx);
|
engine.put(MRule.ARGUMENTS_PREFIX + "Trx", trx);
|
||||||
engine.put(MRule.ARGUMENTS_PREFIX + "TrxName", trx.getTrxName());
|
engine.put(MRule.ARGUMENTS_PREFIX + "TrxName", trx.getTrxName());
|
||||||
engine.put(MRule.ARGUMENTS_PREFIX + "Record_ID", pi.getRecord_ID());
|
engine.put(MRule.ARGUMENTS_PREFIX + "Record_ID", pi.getRecord_ID());
|
||||||
|
|
|
@ -26,7 +26,6 @@ import java.util.Properties;
|
||||||
import javax.script.ScriptEngine;
|
import javax.script.ScriptEngine;
|
||||||
import javax.script.ScriptEngineManager;
|
import javax.script.ScriptEngineManager;
|
||||||
|
|
||||||
import org.compiere.Adempiere;
|
|
||||||
import org.compiere.util.CCache;
|
import org.compiere.util.CCache;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
|
@ -196,7 +195,7 @@ public class MRule extends X_AD_Rule
|
||||||
* @return ScriptEngine
|
* @return ScriptEngine
|
||||||
*/
|
*/
|
||||||
public ScriptEngine getScriptEngine() {
|
public ScriptEngine getScriptEngine() {
|
||||||
factory = new ScriptEngineManager(Adempiere.class.getClassLoader());
|
factory = new ScriptEngineManager(getClass().getClassLoader());
|
||||||
String engineName = getEngineName();
|
String engineName = getEngineName();
|
||||||
if (engineName != null)
|
if (engineName != null)
|
||||||
engine = factory.getEngineByName(getEngineName());
|
engine = factory.getEngineByName(getEngineName());
|
||||||
|
|
|
@ -118,8 +118,10 @@ public class WProcessInfo extends ProcessInfo {
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
int lastdot = className.lastIndexOf(".");
|
int lastdot = className.lastIndexOf(".");
|
||||||
zkName = className.substring(0, lastdot) + ".W" + className.substring(lastdot+1);
|
if (lastdot > 0) {
|
||||||
this.getClass().getClassLoader().loadClass(zkName);
|
zkName = className.substring(0, lastdot) + ".W" + className.substring(lastdot+1);
|
||||||
|
this.getClass().getClassLoader().loadClass(zkName);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
zkName = null;
|
zkName = null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue