/**
   * Determines the return location and redirects based on federation termination Return URL of the
   * provider that sent the termination request.
   */
  private void returnToSource() {
    FSUtils.debug.message("Entered FSFedTerminationHandler::returnToSource");
    try {
      StringBuffer finalReturnURL = new StringBuffer();
      String retURL = remoteDescriptor.getFederationTerminationServiceReturnURL();
      if (FSUtils.debug.messageEnabled()) {
        FSUtils.debug.message("Redirecting to : " + retURL);
      }
      resetFederateCookie();
      FSUtils.debug.message("Checking retURL for null value");
      if (retURL == null || retURL.length() < 1) {
        FSUtils.debug.error("Return URL is null");

        FSServiceUtils.showErrorPage(
            response,
            error_page_url,
            IFSConstants.TERMINATION_INVALID_REDIRECT_URL,
            IFSConstants.METADATA_ERROR);
        return;
      } else {
        finalReturnURL.append(retURL);
        if (!(relayState == null || relayState.length() < 1)) {
          char delimiter;
          if (retURL.indexOf(IFSConstants.QUESTION_MARK) < 0) {
            delimiter = IFSConstants.QUESTION_MARK;
          } else {
            delimiter = IFSConstants.AMPERSAND;
          }
          finalReturnURL
              .append(delimiter)
              .append(RELAY_STATE)
              .append(IFSConstants.EQUAL_TO)
              .append(URLEncDec.encode(relayState));
        }
        if (FSUtils.debug.messageEnabled()) {
          FSUtils.debug.message("Now sendRedirecting to : " + finalReturnURL.toString());
        }
        response.sendRedirect(finalReturnURL.toString());
        return;
      }
    } catch (IOException e) {
      FSUtils.debug.error(
          "Unable to get LRURL. No location to redirect." + " processing completed", e);
    }
    // create new bundle entry for redirect failure
    FSUtils.debug.message("After exception calling response.sendError");
    FSServiceUtils.showErrorPage(
        response,
        error_page_url,
        IFSConstants.TERMINATION_INVALID_REDIRECT_URL,
        IFSConstants.METADATA_ERROR);
    return;
  }