docs: @Override
      public void doReset(
              IPortletWindowId portletWindowId,
              HttpServletRequest httpServletRequest,
              HttpServletResponse httpServletResponse) {
  
          // Don't enforce config mode restriction because this is going to snap the portlet window
          // back into view mode.
  
          final IPortletWindow portletWindow =
                  this.portletWindowRegistry.getPortletWindow(httpServletRequest, portletWindowId);
          if (portletWindow != null) {
              portletWindow.setPortletMode(PortletMode.VIEW);
              portletWindow.setRenderParameters(new ParameterMap());
              portletWindow.setExpirationCache(null);
  
              httpServletRequest = this.setupPortletRequest(httpServletRequest);
              httpServletResponse =
                      new PortletHttpServletResponseWrapper(httpServletResponse, portletWindow);
  
              httpServletRequest.setAttribute(
                      AdministrativeRequestListenerController.DEFAULT_LISTENER_KEY_ATTRIBUTE,
                      "sessionActionListener");
              httpServletRequest.setAttribute(
                      PortletSessionAdministrativeRequestListener.ACTION,
                      PortletSessionAdministrativeRequestListener.SessionAction.CLEAR);
              httpServletRequest.setAttribute(
                      PortletSessionAdministrativeRequestListener.SCOPE,
                      PortletSession.PORTLET_SCOPE);
  
              // TODO modify PortletContainer.doAdmin to create a specific "admin" req/res object and
              // context so we don't have to fake it with a render req
              // These are required for a render request to be created and admin requests use a render
              // request under the hood
              final String characterEncoding = httpServletResponse.getCharacterEncoding();
              httpServletRequest.setAttribute(
                      IPortletRenderer.ATTRIBUTE__PORTLET_OUTPUT_HANDLER,
                      new RenderPortletOutputHandler(characterEncoding));
              httpServletRequest.setAttribute(
                      IPortletRenderer.ATTRIBUTE__PORTLET_CACHE_CONTROL, new CacheControlImpl());
  
              try {
                  this.portletContainer.doAdmin(
                          portletWindow.getPlutoPortletWindow(),
                          httpServletRequest,
                          httpServletResponse);
              } catch (PortletException pe) {
                  throw new PortletDispatchException(
                          "The portlet window '"
                                  + portletWindow
                                  + "' threw an exception while executing admin command to clear session.",
                          portletWindow,
                          pe);
              } catch (PortletContainerException pce) {
                  throw new PortletDispatchException(
                          "The portlet container threw an exception while executing admin command to clear session on portlet window '"
                                  + portletWindow
                                  + "'.",
                          portletWindow,
                          pce);
              } catch (IOException ioe) {
                  throw new PortletDispatchException(
                          "The portlet window '"
                                  + portletWindow
                                  + "' threw an exception while executing admin command to clear session.",
                          portletWindow,
                          ioe);
              }
          } else {
              logger.debug(
                      "ignoring doReset as portletWindowRegistry#getPortletWindow returned a null result for portletWindowId {}",
                      portletWindowId);
          }
      }