package org.eclipse.bpmn2.modeler.ui.editor; import org.eclipse.emf.common.util.BasicDiagnostic; import org.eclipse.emf.transaction.ExceptionHandler; import org.eclipse.emf.transaction.TransactionalCommandStack; import org.eclipse.emf.transaction.TransactionalEditingDomainEvent; import org.eclipse.emf.transaction.TransactionalEditingDomainListenerImpl; public class BPMN2EditingDomainListener extends TransactionalEditingDomainListenerImpl implements ExceptionHandler { protected BPMN2Editor bpmn2Editor; protected BasicDiagnostic diagnostics; public BPMN2EditingDomainListener(BPMN2Editor bpmn2Editor) { super(); this.bpmn2Editor = bpmn2Editor; TransactionalCommandStack stack = (TransactionalCommandStack) bpmn2Editor.getEditingDomain().getCommandStack(); stack.setExceptionHandler(this); } @Override public void transactionStarting(TransactionalEditingDomainEvent event) { diagnostics = null; } @Override public void handleException(Exception e) { String source = null; int code = 0; String message = e.getMessage(); Object[] data = null; StackTraceElement trace[] = e.getStackTrace(); if (trace!=null && trace.length>0) { source = trace[0].getMethodName(); } if (diagnostics==null) { diagnostics = new BasicDiagnostic(source,code,message,data); } else diagnostics.add(new BasicDiagnostic(source,code,message,data)); } public BasicDiagnostic getDiagnostics() { return diagnostics; } }