/*
   * (non-Javadoc)
   *
   * @see
   * gov.samhsa.consent2share.si.AbstractConsentMessageHandler#handleMessage
   * (java.lang.String)
   */
  @Override
  public String handleMessage(String data) throws Throwable {
    String messageId = UUID.randomUUID().toString();
    logger.debug("Consent Signed Message Received: ConsentId" + new String(data));

    Long consentId = Long.parseLong(data);

    // Get consent
    SimpleConsentDto consentDto = consentGetter.getConsent(consentId);

    // Save to XDS.b repository
    RegistryResponse response = null;
    try {
      response =
          xdsbRepository.provideAndRegisterDocumentSet(
              consentDto.getConsent(), domainId, XdsbDocumentType.PRIVACY_CONSENT, null, null);
      audit(messageId, consentDto, response);
    } catch (Throwable e) {
      logger.error("Failed to save in xds.b repository", e);

      throw e;
    }

    if (!URN_RESPONSE_SUCCESS.equals(response.getStatus())) {
      String errorMessage =
          "Failed to save in XDS.b repository becuase response status is not "
              + URN_RESPONSE_SUCCESS;
      if (response.getRegistryErrorList() != null)
        logger.error(response.getRegistryErrorList().getRegistryError().get(0).getCodeContext());
      logger.error(errorMessage);

      throw new Exception(errorMessage);
    }

    return "Saved in XDS.b repository";
  }