diff --git a/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/ModelADServiceImpl.java b/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/ModelADServiceImpl.java index bc79ffdc9f..c541dbb392 100644 --- a/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/ModelADServiceImpl.java +++ b/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/ModelADServiceImpl.java @@ -414,8 +414,11 @@ public class ModelADServiceImpl extends AbstractService implements ModelADServic try { modelRunProcess.setADProcessID(validateParameter("AD_Process_ID", modelRunProcess.getADProcessID())); } catch(XmlValueOutOfRangeException e) { // Catch the exception when the Process ID is not an Integer - log.warning(e.getMessage() + " -- " + " trying to parse string as the UUID"); - modelRunProcess.setADProcessID(validateParameter("AD_Process_ID", 0, getUUIDValue(modelRunProcess.xgetADProcessID()))); + String processUU = getUUIDValue(modelRunProcess.xgetADProcessID()); + if (processUU == null) { + throw e; + } + modelRunProcess.setADProcessID(validateParameter("AD_Process_ID", 0, processUU)); } modelRunProcess.setADRecordID(validateParameter("AD_Record_ID", modelRunProcess.getADRecordID())); modelRunProcess.setDocAction(validateParameter("DocAction", modelRunProcess.getDocAction())); @@ -440,15 +443,13 @@ public class ModelADServiceImpl extends AbstractService implements ModelADServic private String getUUIDValue(XmlInt xmlInt) { if (xmlInt != null) { - //Get the content between and - String content = xmlInt.toString().substring( - "".length(), xmlInt.toString().indexOf("")); - - if (content != null && !content.isEmpty()) + // String xml <...> blocks + String content = xmlInt.toString().replaceAll("<[^>]*>", ""); + if (! Util.isEmpty(content, true) && ADLookup.isUUID(content)) return content; } - //No string value + //No UUID value return null; }