diff --git a/base/src/org/compiere/model/ModelValidationEngine.java b/base/src/org/compiere/model/ModelValidationEngine.java index 17f96a008c..db72bc39dc 100644 --- a/base/src/org/compiere/model/ModelValidationEngine.java +++ b/base/src/org/compiere/model/ModelValidationEngine.java @@ -22,6 +22,7 @@ import java.util.Iterator; import java.util.List; import java.util.Properties; import java.util.StringTokenizer; +import java.util.logging.Level; import javax.script.ScriptEngine; @@ -386,11 +387,19 @@ public class ModelValidationEngine { String error = validator.modelChange(po, changeType); if (error != null && error.length() > 0) + { + if (log.isLoggable(Level.FINE)) + { + log.log(Level.FINE, "po="+po+" validator="+validator+" changeType="+changeType); + } return error; + } } } catch (Exception e) { + //log the exception + log.log(Level.SEVERE, e.getLocalizedMessage(), e); String error = e.getLocalizedMessage(); if (error == null) error = e.toString(); @@ -533,13 +542,20 @@ public class ModelValidationEngine { String error = validator.docValidate(po, docTiming); if (error != null && error.length() > 0) + { + if (log.isLoggable(Level.FINE)) + { + log.log(Level.FINE, "po="+po+" validator="+validator+" timing="+docTiming); + } return error; + } } } catch (Exception e) { + //log the stack trace + log.log(Level.SEVERE, e.getLocalizedMessage(), e); // Exeptions are errors and should stop the document processing - teo_sarca [ 1679692 ] - // log.log(Level.SEVERE, validator.toString(), e); String error = e.getLocalizedMessage(); if (error == null) error = e.toString(); @@ -666,13 +682,20 @@ public class ModelValidationEngine { String error = validator.factsValidate(schema, facts, po); if (error != null && error.length() > 0) + { + if (log.isLoggable(Level.FINE)) + { + log.log(Level.FINE, "po="+po+" schema="+schema+" validator="+validator); + } return error; + } } } catch (Exception e) { - // Exeptions are errors and should stop the document processing - teo_sarca [ 1679692 ] - // log.log(Level.SEVERE, validator.toString(), e); + //log the stack trace + log.log(Level.SEVERE, e.getLocalizedMessage(), e); + // Exeptions are errors and should stop the document processing - teo_sarca [ 1679692 ] String error = e.getLocalizedMessage(); if (error == null) error = e.toString(); diff --git a/base/src/org/compiere/wf/MWFActivity.java b/base/src/org/compiere/wf/MWFActivity.java index 9a193eb6a7..a0c3869a6d 100644 --- a/base/src/org/compiere/wf/MWFActivity.java +++ b/base/src/org/compiere/wf/MWFActivity.java @@ -542,17 +542,25 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable if (obj == null) return; // - StringBuffer TextMsg = new StringBuffer (obj.toString()); + StringBuffer TextMsg = new StringBuffer (); if (obj instanceof Exception) { Exception ex = (Exception)obj; + if (ex.getMessage() != null && ex.getMessage().trim().length() > 0) + { + TextMsg.append(ex.toString()); + } + else if (ex instanceof NullPointerException) + { + TextMsg.append(ex.getClass().getName()); + } while (ex != null) { StackTraceElement[] st = ex.getStackTrace(); for (int i = 0; i < st.length; i++) { StackTraceElement ste = st[i]; - if (i == 0 || ste.getClassName().startsWith("org.compiere")) + if (i == 0 || ste.getClassName().startsWith("org.compiere") || ste.getClassName().startsWith("org.adempiere")) TextMsg.append(" (").append(i).append("): ") .append(ste.toString()) .append("\n"); @@ -563,6 +571,10 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable ex = null; } } + else + { + TextMsg.append(obj.toString()); + } // String oldText = getTextMsg(); if (oldText == null || oldText.length() == 0) @@ -759,6 +771,7 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable if (!m_state.isValidAction(StateEngine.ACTION_Start)) { setTextMsg("State=" + getWFState() + " - cannot start"); + addTextMsg(new Exception("")); setWFState(StateEngine.STATE_Terminated); return; } @@ -1283,6 +1296,7 @@ public class MWFActivity extends X_AD_WF_Activity implements Runnable { newState = StateEngine.STATE_Terminated; setTextMsg ("User Choice: " + e.toString()); + addTextMsg(e); log.log(Level.WARNING, "", e); } // Send Approval Notification diff --git a/base/src/org/compiere/wf/MWFProcess.java b/base/src/org/compiere/wf/MWFProcess.java index 0cb32ab61d..f867f8cf28 100644 --- a/base/src/org/compiere/wf/MWFProcess.java +++ b/base/src/org/compiere/wf/MWFProcess.java @@ -33,6 +33,7 @@ import org.compiere.process.StateEngine; import org.compiere.util.DB; import org.compiere.util.Env; import org.compiere.util.TimeUtil; +import org.compiere.util.Util; /** @@ -110,6 +111,7 @@ public class MWFProcess extends X_AD_WF_Process if (getPO() == null) { setTextMsg("No PO with ID=" + pi.getRecord_ID()); + addTextMsg(new Exception("")); super.setWFState (WFSTATE_Terminated); } else @@ -310,6 +312,7 @@ public class MWFProcess extends X_AD_WF_Process if (activities.length == 0) { setTextMsg("No Active Processed found"); + addTextMsg(new Exception("")); closedState = WFSTATE_Terminated; } if (closedState != null) @@ -503,6 +506,7 @@ public class MWFProcess extends X_AD_WF_Process { log.log(Level.SEVERE, "AD_WF_Node_ID=" + AD_WF_Node_ID, e); setTextMsg(e.toString()); + addTextMsg(e); setWFState(StateEngine.STATE_Terminated); return false; } @@ -549,7 +553,56 @@ public class MWFProcess extends X_AD_WF_Process super.setTextMsg (oldText + "\n - " + TextMsg); } // setTextMsg - + /** + * Add to Text Msg + * @param obj some object + */ + public void addTextMsg (Object obj) + { + if (obj == null) + return; + // + StringBuffer TextMsg = new StringBuffer (); + if (obj instanceof Exception) + { + Exception ex = (Exception)obj; + if (ex.getMessage() != null && ex.getMessage().trim().length() > 0) + { + TextMsg.append(ex.toString()); + } + else if (ex instanceof NullPointerException) + { + TextMsg.append(ex.getClass().getName()); + } + while (ex != null) + { + StackTraceElement[] st = ex.getStackTrace(); + for (int i = 0; i < st.length; i++) + { + StackTraceElement ste = st[i]; + if (i == 0 || ste.getClassName().startsWith("org.compiere") || ste.getClassName().startsWith("org.adempiere")) + TextMsg.append(" (").append(i).append("): ") + .append(ste.toString()) + .append("\n"); + } + if (ex.getCause() instanceof Exception) + ex = (Exception)ex.getCause(); + else + ex = null; + } + } + else + { + TextMsg.append(obj.toString()); + } + // + String oldText = getTextMsg(); + if (oldText == null || oldText.length() == 0) + super.setTextMsg(Util.trimSize(TextMsg.toString(),1000)); + else if (TextMsg != null && TextMsg.length() > 0) + super.setTextMsg(Util.trimSize(oldText + "\n - " + TextMsg.toString(),1000)); + } // addTextMsg + /** * Set Runtime (Error) Message * @param msg message