Class ExceptionUtil

java.lang.Object
org.camunda.bpm.engine.impl.util.ExceptionUtil

public class ExceptionUtil extends Object
Author:
Roman Smirnov, Askar Akhmerov
  • Field Details

  • Constructor Details

    • ExceptionUtil

      public ExceptionUtil()
  • Method Details

    • getExceptionStacktrace

      public static String getExceptionStacktrace(Throwable exception)
    • getExceptionStacktrace

      public static String getExceptionStacktrace(ByteArrayEntity byteArray)
    • createJobExceptionByteArray

      public static ByteArrayEntity createJobExceptionByteArray(byte[] byteArray, ResourceType type)
    • createExceptionByteArray

      public static ByteArrayEntity createExceptionByteArray(String name, byte[] byteArray, ResourceType type)
      create ByteArrayEntity with specified name and payload and make sure it's persisted used in Jobs and ExternalTasks
      Parameters:
      name - - type\source of the exception
      byteArray - - payload of the exception
      type - - resource type of the exception
      Returns:
      persisted entity
    • getPersistenceCauseException

      protected static Throwable getPersistenceCauseException(org.apache.ibatis.exceptions.PersistenceException persistenceException)
    • unwrapException

      public static SQLException unwrapException(org.apache.ibatis.exceptions.PersistenceException persistenceException)
    • unwrapException

      public static SQLException unwrapException(ProcessEngineException genericPersistenceException)
    • checkValueTooLongException

      public static boolean checkValueTooLongException(SQLException sqlException)
    • checkValueTooLongException

      public static boolean checkValueTooLongException(ProcessEngineException genericPersistenceException)
    • checkConstraintViolationException

      public static boolean checkConstraintViolationException(ProcessEngineException genericPersistenceException)
    • checkForeignKeyConstraintViolation

      public static boolean checkForeignKeyConstraintViolation(org.apache.ibatis.exceptions.PersistenceException persistenceException)
    • checkForeignKeyConstraintViolation

      public static boolean checkForeignKeyConstraintViolation(SQLException sqlException)
    • checkVariableIntegrityViolation

      public static boolean checkVariableIntegrityViolation(org.apache.ibatis.exceptions.PersistenceException persistenceException)
    • checkCrdbTransactionRetryException

      public static boolean checkCrdbTransactionRetryException(Throwable exception)
    • checkCrdbTransactionRetryException

      public static boolean checkCrdbTransactionRetryException(SQLException sqlException)
    • checkDeadlockException

      public static boolean checkDeadlockException(SQLException sqlException)
    • findBatchExecutorException

      public static org.apache.ibatis.executor.BatchExecutorException findBatchExecutorException(org.apache.ibatis.exceptions.PersistenceException exception)
    • doWithExceptionWrapper

      public static <T> T doWithExceptionWrapper(Supplier<T> supplier)
      Pass logic, which directly calls MyBatis API. In case a MyBatis exception is thrown, it is wrapped into a ProcessEngineException and never propagated directly to an Engine API call. In some cases, the top-level exception and its message are shown as a response body in the REST API. Wrapping all MyBatis API calls in our codebase makes sure that the top-level exception is always a ProcessEngineException with a generic message. Like this, SQL details are never disclosed to potential attackers.
      Type Parameters:
      T - is the type of the return value
      Parameters:
      supplier - which calls MyBatis API
      Returns:
      the value returned by the supplier
      Throws:
      ProcessEngineException - which wraps the actual exception
    • wrapPersistenceException

      public static ProcessEnginePersistenceException wrapPersistenceException(Exception ex)