Example #1
0
  private void handleFault(MessageContext synCtx, Exception ex) {
    synCtx.setProperty(SynapseConstants.SENDING_FAULT, Boolean.TRUE);

    if (ex != null && ex instanceof AxisFault) {
      AxisFault axisFault = (AxisFault) ex;

      if (axisFault.getFaultCodeElement() != null) {
        synCtx.setProperty(SynapseConstants.ERROR_CODE, axisFault.getFaultCodeElement().getText());
      } else {
        synCtx.setProperty(SynapseConstants.ERROR_CODE, SynapseConstants.CALLOUT_OPERATION_FAILED);
      }

      if (axisFault.getMessage() != null) {
        synCtx.setProperty(SynapseConstants.ERROR_MESSAGE, axisFault.getMessage());
      } else {
        synCtx.setProperty(
            SynapseConstants.ERROR_MESSAGE, "Error while performing " + "the call operation");
      }

      if (axisFault.getFaultDetailElement() != null) {
        if (axisFault.getFaultDetailElement().getFirstElement() != null) {
          synCtx.setProperty(
              SynapseConstants.ERROR_DETAIL, axisFault.getFaultDetailElement().getFirstElement());
        } else {
          synCtx.setProperty(
              SynapseConstants.ERROR_DETAIL, axisFault.getFaultDetailElement().getText());
        }
      }
    }

    synCtx.setProperty(SynapseConstants.ERROR_EXCEPTION, ex);
    throw new SynapseException("Error while performing the call operation", ex);
  }