/**
   * @param request the request being processed
   * @param response the response to return
   * @param preferences the portlet preferences
   */
  @ActionMapping(params = Consts.ACTION_ENDDELEGATEMODE)
  public void doActionEndDelegationMode(
      ActionRequest request, ActionResponse response, PortletPreferences preferences, Model model)
      throws Exception {
    LogHelper log = new LogHelper(request);
    RequestMessages rqm = RequestMessages.getRequestMessages(request);
    PortletSession session = request.getPortletSession();
    try {
      log.startTimer("doActionEndDelegationMode");
      BannerPortletData data =
          (BannerPortletData)
              session.getAttribute("BannerPortletData", PortletSession.APPLICATION_SCOPE);
      if (data == null) {
        data = new BannerPortletData();
        data.loadFromRequest(request);
        data.loadFromPreferences(request, rqm);
      }
      // ProtectBlock actionEndDelegationModeBody
      logger.debug("In the doActionEndDelegationMode of ServiceCreditsDeleationView Controller ");
      log.startTimer("doActionEndDelegationMode");
      // logger.info("In the doActionEndDelegationMode,Sessin clean up triggred. "
      // +session.getAttributeMap(PortletSession.APPLICATION_SCOPE).keySet());
      logger.info(
          "Clearing all session attribute set by the ServiceCreditsDelegationView Controller : "
              + Consts.SESSION_SUBJECT_USER_MAP
              + " "
              + Consts.TEMP_SUBJECT_USER_MAP_KEY_IN_SESSION);
      session.removeAttribute(Consts.SESSION_SUBJECT_USER_MAP, PortletSession.APPLICATION_SCOPE);
      session.removeAttribute(
          Consts.TEMP_SUBJECT_USER_MAP_KEY_IN_SESSION, PortletSession.APPLICATION_SCOPE);

      // logger.info("In the doActionEndDelegationMode,Sessin clean up triggred. "
      // +session.getAttributeMap(PortletSession.APPLICATION_SCOPE).keySet());
      logger.debug("Setting the Session Cleanup flag to true");
      // request.setAttribute("spf.cleanupSession", true);
      logger.debug("Ending the Delegation session");
      logger.info("Sending redirect to ServiceCredits home page");
      PortalURL url = Utility.getServiceCreditsHomeUrl(request);
      url.setParameter("spf.cleanupSession", "true");
      response.sendRedirect(url.toString());
      logger.debug("End of doActionEndDelegationMode of ServiceCreditsDeleationView Controller ");
      // TODO Fill In Action Body
      // ProtectBlock End
      session.setAttribute("BannerPortletData", data, PortletSession.APPLICATION_SCOPE);
    } catch (Exception ex) {
      log.endTimer("doActionEndDelegationMode");
      throw ex;
    } finally {
      rqm.saveToRequest();
      session.setAttribute("ActionMode", "action", PortletSession.PORTLET_SCOPE);
      log.endTimer("doActionEndDelegationMode");
    }
  }
  // Process action is called for action URLs / form posts, etc
  // Process action is called once for each click - doView may be called many times
  // Hence an obsession in process action with putting things in session to
  // Send to the render process.
  public void processAction(ActionRequest request, ActionResponse response)
      throws PortletException, IOException {

    // System.out.println("==== processAction called ====");

    PortletSession pSession = request.getPortletSession(true);

    // Our first challenge is to figure out which action we want to take
    // The view selects the "next action" either as a URL parameter
    // or as a hidden field in the POST data - we check both

    String doCancel = request.getParameter("sakai.cancel");
    String doUpdate = request.getParameter("sakai.update");

    // Our next challenge is to pick which action the previous view
    // has told us to do.  Note that the view may place several actions
    // on the screen and the user may have an option to pick between
    // them.  Make sure we handle the "no action" fall-through.

    pSession.removeAttribute("error.message");

    if (doCancel != null) {
      response.setPortletMode(PortletMode.VIEW);
    } else if (doUpdate != null) {
      processActionEdit(request, response);
    } else {
      // System.out.println("Unknown action");
      response.setPortletMode(PortletMode.VIEW);
    }

    // System.out.println("==== End of ProcessAction  ====");
  }
 private void sendAlert(RenderRequest request, Context context) {
   PortletSession pSession = request.getPortletSession(true);
   String str = (String) pSession.getAttribute(ALERT_MESSAGE);
   pSession.removeAttribute(ALERT_MESSAGE);
   if (str != null && str.length() > 0)
     context.put("alertMessage", validator.escapeHtml(str, false));
 }
 public void removeAttribute(String string) {
   try {
     session.removeAttribute(string);
   } catch (IllegalStateException e) {
     throw new SessionExpiredException(e);
   }
 }
 /**
  * Set the session attribute with the given name to the given value in the given scope. Removes
  * the session attribute if value is {@code null}, if a session existed at all. Does not create a
  * new session if not necessary!
  *
  * @param request current portlet request
  * @param name the name of the session attribute
  * @param value the value of the session attribute
  * @param scope session scope of this attribute
  */
 public static void setSessionAttribute(
     PortletRequest request, String name, Object value, int scope) {
   Assert.notNull(request, "Request must not be null");
   if (value != null) {
     request.getPortletSession().setAttribute(name, value, scope);
   } else {
     PortletSession session = request.getPortletSession(false);
     if (session != null) {
       session.removeAttribute(name, scope);
     }
   }
 }
 /**
  * @see javax.servlet.http.HttpSession#removeValue(String)
  * @deprecated
  */
 @Override
 @Deprecated
 public void removeValue(final String arg0) {
   portletSession.removeAttribute(arg0);
 }
 /** @see javax.servlet.http.HttpSession#removeAttribute(String) */
 @Override
 public void removeAttribute(final String arg0) {
   portletSession.removeAttribute(arg0);
 }
 /*
  * (non-Javadoc)
  *
  * @see javax.servlet.http.HttpSession#removeAttribute(java.lang.String)
  */
 public void removeAttribute(String name) {
   portletSession.removeAttribute(name);
 }
  protected void initBridgeRequestScope(
      PortletRequest portletRequest,
      PortletResponse portletResponse,
      Bridge.PortletPhase portletPhase) {

    boolean bridgeRequestScopeEnabled = true;

    if (portletPhase == Bridge.PortletPhase.RESOURCE_PHASE) {
      bridgeRequestScopeEnabled =
          PortletConfigParam.BridgeRequestScopeAjaxEnabled.getBooleanValue(portletConfig);
    }

    if (bridgeRequestScopeEnabled) {

      // Determine if there is a bridge request scope "id" saved as a render parameter. Note that in
      // order to
      // avoid collisions with bridge request scopes for other portlets, the render parameter name
      // has to be
      // namespaced with the portlet name.
      String portletName = portletConfig.getPortletName();
      String bridgeRequestScopeKey = portletName + PARAM_BRIDGE_REQUEST_SCOPE_ID;

      // If there is a render parameter value found for the "id", then return the cached bridge
      // request scope
      // associated with the "id".
      String bridgeRequestScopeId = portletRequest.getParameter(bridgeRequestScopeKey);

      if (bridgeRequestScopeId != null) {

        bridgeRequestScope = bridgeRequestScopeCache.get(bridgeRequestScopeId);

        if (bridgeRequestScope != null) {
          logger.debug(
              "Found render parameter name=[{0}] value=[{1}] and cached bridgeRequestScope=[{2}]",
              bridgeRequestScopeKey, bridgeRequestScopeId, bridgeRequestScope);
        } else {

          if (bridgeRequestScopePreserved) {
            logger.error(
                "Found render parameter name=[{0}] value=[{1}] BUT bridgeRequestScope is NOT in the cache",
                bridgeRequestScopeKey, bridgeRequestScopeId);
          }
        }
      }

      // Otherwise, if there is a portlet session attribute found for the "id", then return the
      // cached bridge
      // request scope associated with the "id". Note: This occurs after an Ajax-based
      // ResourceRequest so that
      // non-excluded request attributes can be picked up by a subsequent RenderRequest.
      if (bridgeRequestScope == null) {

        // TCK TestPage071: nonFacesResourceTest
        // TCK TestPage073: scopeAfterRedisplayResourcePPRTest
        PortletSession portletSession = portletRequest.getPortletSession();
        bridgeRequestScopeId = (String) portletSession.getAttribute(bridgeRequestScopeKey);

        if (bridgeRequestScopeId != null) {

          portletSession.removeAttribute(bridgeRequestScopeKey);

          bridgeRequestScope = bridgeRequestScopeCache.get(bridgeRequestScopeId);

          if (bridgeRequestScope != null) {

            logger.debug(
                "Found (and removed) session-attribute name=[{0}] value=[{1}] and cached bridgeRequestScope=[{2}]",
                bridgeRequestScopeKey, bridgeRequestScopeId, bridgeRequestScope);

            if (portletResponse instanceof StateAwareResponse) {
              logger.debug(
                  "Setting former session-attribute as render parameter name=[{0}] value=[{1}]",
                  bridgeRequestScopeKey, bridgeRequestScopeId);

              StateAwareResponse stateAwareResponse = (StateAwareResponse) portletResponse;
              stateAwareResponse.setRenderParameter(bridgeRequestScopeKey, bridgeRequestScopeId);
            }
          } else {

            logger.error(
                "Found session attribute name=[{0}] value=[{1}] but bridgeRequestScope is not in the cache",
                bridgeRequestScopeKey, bridgeRequestScopeId);
          }
        }
      }

      // Otherwise, return a new factory created instance.
      if (bridgeRequestScope == null) {
        bridgeRequestScope =
            BridgeRequestScopeFactory.getBridgeRequestScopeInstance(
                portletRequest, portletConfig, bridgeConfig);
      }
    }
  }
  @Override
  public void render(RenderRequest portletReq, RenderResponse portletResp)
      throws PortletException, IOException {
    LOGGER.entering(LOG_CLASS, "main portlet render entry");

    long tid = Thread.currentThread().getId();
    portletReq.setAttribute(THREADID_ATTR, tid);

    PrintWriter writer = portletResp.getWriter();

    PortletSession ps = portletReq.getPortletSession();
    String msg =
        (String)
            ps.getAttribute(
                RESULT_ATTR_PREFIX + "DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse",
                APPLICATION_SCOPE);
    if (msg != null) {
      writer.write("<p>" + msg + "</p><br/>\n");
      ps.removeAttribute(
          RESULT_ATTR_PREFIX + "DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse",
          APPLICATION_SCOPE);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_containsHeader */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.containsHeader must return false"         */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_containsHeader", aurl);
      tb.writeTo(writer);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_encodeRedirectURL1 */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.encodeRedirectURL must return null"       */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_encodeRedirectURL1",
              aurl);
      tb.writeTo(writer);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_encodeRedirectUrl */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.encodeRedirectUrl must return null"       */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_encodeRedirectUrl",
              aurl);
      tb.writeTo(writer);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_encodeURL1 */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.encodeURL must provide the same           */
    /* functionality as ActionResponse.encodeURL"                           */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_encodeURL1", aurl);
      tb.writeTo(writer);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_encodeUrl */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.encodeUrl must provide the same           */
    /* functionality as ActionResponse.encodeURL"                           */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_encodeUrl", aurl);
      tb.writeTo(writer);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_getBufferSize */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.getBufferSize must return 0"              */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_getBufferSize", aurl);
      tb.writeTo(writer);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_getCharacterEncoding */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.getCharacterEncoding must return null"    */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_getCharacterEncoding",
              aurl);
      tb.writeTo(writer);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_getContentType */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.getContentType must return null"          */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_getContentType", aurl);
      tb.writeTo(writer);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_getLocale */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.getLocale must return null"               */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_getLocale", aurl);
      tb.writeTo(writer);
    }

    /* TestCase: V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_isCommitted */
    /* Details: "In a target jsp of a include in the Action phase, the      */
    /* method HttpServletResponse.isCommitted must return true"             */
    {
      PortletURL aurl = portletResp.createActionURL();
      aurl.setParameters(portletReq.getPrivateParameterMap());
      TestButton tb =
          new TestButton(
              "V2DispatcherReqRespTests3_SPEC2_19_IncludeJSPActionResponse_isCommitted", aurl);
      tb.writeTo(writer);
    }
  }
  /**
   * @param request the render request being processed
   * @param response the render response to be returned
   * @param preferences portlet preferences
   * @param model model for rendering
   * @return the view name or view content for the content
   * @throws any exceptions that occur
   */
  @RenderMapping
  public String doRenderDelegationDefaultView(
      RenderRequest request, RenderResponse response, PortletPreferences preferences, Model model)
      throws Exception {
    LogHelper log = new LogHelper(request);
    RequestMessages rqm = RequestMessages.getRequestMessages(request);
    String viewName = Consts.DELEGATEUSERACCESSTOSERVICECREDITSDELEGATIONDEFAULTVIEWVIEWNAME;
    try {
      log.startTimer("doRenderDelegationDefaultView");
      TTT t = new TTT();
      PortletSession session = request.getPortletSession();
      session.setAttribute("x", t);
      String test = (String) session.getAttribute("ActionMode", PortletSession.PORTLET_SCOPE);
      boolean action = (test != null && "action".equals(test));
      if (action) session.removeAttribute("ActionMode");
      model.addAttribute("Consts", new Consts());
      BannerPortletData data =
          (BannerPortletData)
              session.getAttribute("BannerPortletData", PortletSession.APPLICATION_SCOPE);
      if (data == null) {
        data = new BannerPortletData();
        data.loadFromRequest(request);
        data.loadFromPreferences(request, rqm);
      }
      // ProtectBlock renderDelegationDefaultViewBody
      // TODO Fill In Render Body
      logger.debug("In the default render method of the ServiceCrerditsDelegationView Controller");

      logger.info(
          "Logged in user id in default render method: "
              + Utility.isLoggedInUserInDelegateMode(request)
              + "--->>"
              + Utility.retrieveDelegateUserProfileMapFromRequest(request));
      logger.info(
          "Subject user id in default render method: "
              + Utility.isLoggedInUserInDelegateMode(request)
              + "===>>"
              + Utility.retrieveUserId(request)
              + Utility.retrieveUserEmail(request));
      // logger.info("In the doRenderDefault,Sessin clean up triggred in previous action method. "
      // +session.getAttributeMap(PortletSession.APPLICATION_SCOPE).keySet());
      viewName = "FindCustomerUser";
      if (session.getAttribute("showOverlayFlag", PortletSession.APPLICATION_SCOPE) != null) {
        boolean showOverlayFlag =
            (Boolean) session.getAttribute("showOverlayFlag", PortletSession.APPLICATION_SCOPE);
        if (showOverlayFlag) {
          model.addAttribute("display_modal_overlay", "true");
          session.removeAttribute("showOverlayFlag", PortletSession.APPLICATION_SCOPE);
        }
      } else {
        model.addAttribute("display_modal_overlay", "false");
      }
      if (Utility.isLoggedInUserInDelegateMode(request)) {
        logger.debug(
            "Changing view to DelegationView as the Delegate has still not signed out of the delegation mode");
        logger.info(
            "Changing view to DelegationView as the Delegate has still not signed out of the delegation mode");
        // ExternalUserProfile userProfile =
        // (ExternalUserProfile)session.getAttribute(Consts.TEMP_SUBJECT_USER_MAP_KEY_IN_SESSION,
        // PortletSession.APPLICATION_SCOPE);
        Map<String, Object> userProfile =
            (Map<String, Object>)
                session.getAttribute(
                    Consts.SESSION_SUBJECT_USER_MAP, PortletSession.APPLICATION_SCOPE);

        if (userProfile == null) {
          logger.info("The user profile returned in the Do-render-Delegate view was null");
          viewName = "FindCustomerUser";
          return viewName;
        } else {
          logger.debug(
              "Adding a few attribute fo the subject user in to the model like the name,company name and email-id");
          logger.info(
              "Setting the attribute of the subject user to model :"
                  + (String) userProfile.get(Consts.KEY_FIRST_NAME)
                  + " "
                  + (String) userProfile.get(Consts.KEY_LAST_NAME));
          model.addAttribute("company_Name", (String) userProfile.get("Company"));
          model.addAttribute("user_ID", (String) userProfile.get(Consts.KEY_USER_NAME));
          model.addAttribute("last_Name", (String) userProfile.get(Consts.KEY_LAST_NAME));
          model.addAttribute("first_Name", (String) userProfile.get(Consts.KEY_FIRST_NAME));
          model.addAttribute("email_Address", (String) userProfile.get(Consts.KEY_EMAIL));
        }
        viewName = "DelegationView";
      }
      logger.debug("End of default render method of the ServiceCrerditsDelegationView Controller");
      // ProtectBlock End
      data.saveToModel(model, rqm);
      session.setAttribute("BannerPortletData", data, PortletSession.APPLICATION_SCOPE);
    } catch (Exception ex) {
      log.endTimer("doRenderDelegationDefaultView");
      throw ex;
    } finally {
      rqm.release();
      log.endTimer("doRenderDelegationDefaultView");
    }
    return viewName;
  }
  /**
   * @param request the request being processed
   * @param response the response to return
   * @param preferences the portlet preferences
   */
  @ActionMapping(params = Consts.ACTION_BEGINDELEGATIONMODE)
  public void doActionBeginDelegationMode(
      ActionRequest request, ActionResponse response, PortletPreferences preferences, Model model)
      throws Exception {
    LogHelper log = new LogHelper(request);
    RequestMessages rqm = RequestMessages.getRequestMessages(request);
    PortletSession session = request.getPortletSession();
    try {
      log.startTimer("doActionBeginDelegationMode");
      BannerPortletData data =
          (BannerPortletData)
              session.getAttribute("BannerPortletData", PortletSession.APPLICATION_SCOPE);
      if (data == null) {
        data = new BannerPortletData();
        data.loadFromRequest(request);
        data.loadFromPreferences(request, rqm);
      }
      // ProtectBlock actionBeginDelegationModeBody
      logger.debug("In the doActionBeginDelegationMode of ServiceCreditsDelegationView Controller");
      logger.info("Constructing the Subject user map from the ExternalUserProfile");
      Map<String, Object> subjectUserProfile =
          Utility.constructSubjectUserMap(
              (ExternalUserProfile)
                  session.getAttribute(
                      Consts.TEMP_SUBJECT_USER_MAP_KEY_IN_SESSION,
                      PortletSession.APPLICATION_SCOPE),
              request);

      logger.info(
          "Setting the constructed Subject user in to session under the name SPF_RETAIN_SESSION_SUBJECT_USER_MAP");
      session.setAttribute(
          Consts.SESSION_SUBJECT_USER_MAP, subjectUserProfile, PortletSession.APPLICATION_SCOPE);
      session.removeAttribute(
          Consts.TEMP_SUBJECT_USER_MAP_KEY_IN_SESSION, PortletSession.APPLICATION_SCOPE);
      logger.info(
          "The constructed Subject user "
              + session.getAttribute(
                  Consts.SESSION_SUBJECT_USER_MAP, PortletSession.APPLICATION_SCOPE));
      logger.info("Setting the Session cleanup attribute to true in the request");
      // request.setAttribute("spf.cleanupSession", true);
      // logger.info("In the doActionBeginDelegationMode,Sessin clean up triggred. "
      // +session.getAttributeMap(PortletSession.APPLICATION_SCOPE).keySet());
      PortalURL url = Utility.getServiceCreditsHomeUrl(request);
      if (session.getAttribute(Consts.SESSION_SUBJECT_USER_MAP, PortletSession.APPLICATION_SCOPE)
          != null) {
        url.setParameter("delegateuseraccesstoservicecredits1", "action", "delegationView");
        url.setParameter("spf.cleanupSession", "true");
      }
      logger.info("Redirecting to Service Credirs Home page");
      logger.debug("The deleagtion session has now begun");
      response.sendRedirect(url.toString());
      logger.debug("End of doActionBeginDelegationMode of ServiceCreditsDelegationView Controller");
      // TODO Fill In Action Body
      // ProtectBlock End
      session.setAttribute("BannerPortletData", data, PortletSession.APPLICATION_SCOPE);
    } catch (Exception ex) {
      log.endTimer("doActionBeginDelegationMode");
      throw ex;
    } finally {
      rqm.saveToRequest();
      session.setAttribute("ActionMode", "action", PortletSession.PORTLET_SCOPE);
      log.endTimer("doActionBeginDelegationMode");
    }
  }
  /**
   * @param request the render request being processed
   * @param response the render response to be returned
   * @param preferences portlet preferences
   * @param model model for rendering
   * @return the view name or view content for the content
   * @throws any exceptions that occur
   */
  @RenderMapping(params = Consts.ACTION_SEARCHRESULTVIEW)
  public String doRenderSearchResultView(
      RenderRequest request, RenderResponse response, PortletPreferences preferences, Model model)
      throws Exception {
    LogHelper log = new LogHelper(request);
    RequestMessages rqm = RequestMessages.getRequestMessages(request);
    String viewName = Consts.DELEGATEUSERACCESSTOSERVICECREDITSSEARCHRESULTVIEWVIEWNAME;
    try {
      log.startTimer("doRenderSearchResultView");
      PortletSession session = request.getPortletSession();
      String test = (String) session.getAttribute("ActionMode", PortletSession.PORTLET_SCOPE);
      boolean action = (test != null && "action".equals(test));
      if (action) session.removeAttribute("ActionMode");
      model.addAttribute("Consts", new Consts());
      BannerPortletData data =
          (BannerPortletData)
              session.getAttribute("BannerPortletData", PortletSession.APPLICATION_SCOPE);
      if (data == null) {
        data = new BannerPortletData();
        data.loadFromRequest(request);
        data.loadFromPreferences(request, rqm);
      }
      // ProtectBlock renderSearchResultViewBody
      logger.debug("In the render result view of the ServiceCreditsDelegationView Controller");
      logger.debug("setting modal overlay display flag to true");

      // logger.info("In the doRenderSearchResult,Sessin clean up triggred in previous action
      // method. " +session.getAttributeMap(PortletSession.APPLICATION_SCOPE).keySet());
      if (session.getAttribute("showOverlayFlag", PortletSession.APPLICATION_SCOPE) != null) {
        boolean showOverlayFlag =
            (Boolean) session.getAttribute("showOverlayFlag", PortletSession.APPLICATION_SCOPE);
        if (showOverlayFlag) {
          model.addAttribute("display_modal_overlay", "true");
          session.removeAttribute("showOverlayFlag", PortletSession.APPLICATION_SCOPE);
        }
      } else {
        model.addAttribute("display_modal_overlay", "false");
      }
      logger.debug("Setting the attribute of the subject user to model");
      ExternalUserProfile user_profile =
          (ExternalUserProfile)
              session.getAttribute(
                  Consts.TEMP_SUBJECT_USER_MAP_KEY_IN_SESSION, PortletSession.APPLICATION_SCOPE);
      model.addAttribute("company_Name", user_profile.getBusCompanyName());
      model.addAttribute("user_ID", user_profile.getHppUserId());
      model.addAttribute("last_Name", user_profile.getFamilyName());
      model.addAttribute("first_Name", user_profile.getGivenName());
      model.addAttribute("email_Address", user_profile.getEmail());
      viewName = "FindCustomerUser";
      logger.debug("End of render result view of ServiceCreditsDelegationView Controller");
      // TODO Fill In Render Body
      // ProtectBlock End
      data.saveToModel(model, rqm);
      session.setAttribute("BannerPortletData", data, PortletSession.APPLICATION_SCOPE);
    } catch (Exception ex) {
      log.endTimer("doRenderSearchResultView");
      throw ex;
    } finally {
      rqm.release();
      log.endTimer("doRenderSearchResultView");
    }
    return viewName;
  }
	/**
	 * Processes the actual dispatching to the handler for render requests.
	 * <p>The handler will be obtained by applying the portlet's HandlerMappings in order.
	 * The HandlerAdapter will be obtained by querying the portlet's installed
	 * HandlerAdapters to find the first that supports the handler class.
	 * @param request current portlet render request
	 * @param response current portlet render response
	 * @throws Exception in case of any kind of processing failure
	 */
	@Override
	protected void doRenderService(RenderRequest request, RenderResponse response) throws Exception {
		if (logger.isDebugEnabled()) {
			logger.debug("DispatcherPortlet with name '" + getPortletName() + "' received render request");
		}

		HandlerExecutionChain mappedHandler = null;
		int interceptorIndex = -1;

		try {
			ModelAndView mv;
			try {
				// Determine handler for the current request.
				mappedHandler = getHandler(request);
				if (mappedHandler == null || mappedHandler.getHandler() == null) {
					noHandlerFound(request, response);
					return;
				}

				// Apply preHandle methods of registered interceptors.
				HandlerInterceptor[] interceptors = mappedHandler.getInterceptors();
				if (interceptors != null) {
					for (int i = 0; i < interceptors.length; i++) {
						HandlerInterceptor interceptor = interceptors[i];
						if (!interceptor.preHandleRender(request, response, mappedHandler.getHandler())) {
							triggerAfterRenderCompletion(mappedHandler, interceptorIndex, request, response, null);
							return;
						}
						interceptorIndex = i;
					}
				}

				// Check for forwarded exception from the action phase
				PortletSession session = request.getPortletSession(false);
				if (session != null) {
					if (request.getParameter(ACTION_EXCEPTION_RENDER_PARAMETER) != null) {
						Exception ex = (Exception) session.getAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE);
						if (ex != null) {
							logger.debug("Render phase found exception caught during action phase - rethrowing it");
							throw ex;
						}
					}
					else {
						session.removeAttribute(ACTION_EXCEPTION_SESSION_ATTRIBUTE);
					}
				}

				// Actually invoke the handler.
				HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
				mv = ha.handleRender(request, response, mappedHandler.getHandler());

				// Apply postHandle methods of registered interceptors.
				if (interceptors != null) {
					for (int i = interceptors.length - 1; i >= 0; i--) {
						HandlerInterceptor interceptor = interceptors[i];
						interceptor.postHandleRender(request, response, mappedHandler.getHandler(), mv);
					}
				}
			}
			catch (ModelAndViewDefiningException ex) {
				logger.debug("ModelAndViewDefiningException encountered", ex);
				mv = ex.getModelAndView();
			}
			catch (Exception ex) {
				Object handler = (mappedHandler != null ? mappedHandler.getHandler() : null);
				mv = processHandlerException(request, response, handler, ex);
			}

			// Did the handler return a view to render?
			if (mv != null && !mv.isEmpty()) {
				render(mv, request, response);
			}
			else {
				if (logger.isDebugEnabled()) {
					logger.debug("Null ModelAndView returned to DispatcherPortlet with name '" +
							getPortletName() + "': assuming HandlerAdapter completed request handling");
				}
			}

			// Trigger after-completion for successful outcome.
			triggerAfterRenderCompletion(mappedHandler, interceptorIndex, request, response, null);
		}

		catch (Exception ex) {
			// Trigger after-completion for thrown exception.
			triggerAfterRenderCompletion(mappedHandler, interceptorIndex, request, response, ex);
			throw ex;
		}
		catch (Error err) {
			PortletException ex =
					new PortletException("Error occured during request processing: " + err.getMessage(), err);
			// Trigger after-completion for thrown exception.
			triggerAfterRenderCompletion(mappedHandler, interceptorIndex, request, response, ex);
			throw ex;
		}
	}