public Portlet get(String portletHandle) throws WSRPException {
    Portlet wsrpPortlet = null;

    try {
      wsrpPortlet = (Portlet) _consumerConfiguredPortlets.get(portletHandle);

      if (wsrpPortlet == null) {
        String companyId = WSRPUtil.getCompanyId();

        com.liferay.portal.model.Portlet liferayPortlet =
            PortletServiceUtil.getPortletById(companyId, portletHandle);

        if (liferayPortlet != null) {
          wsrpPortlet = _createProducerPortlet(liferayPortlet);
        }
      }
    } catch (Exception e) {
    }

    return wsrpPortlet;
  }
  public Iterator getAllProducerOfferedPortlets() {
    String companyId = WSRPUtil.getCompanyId();
    Iterator wsrpPortletsIt = null;
    List wsrpPortlets = new ArrayList();

    try {
      List liferayPortlets = PortletServiceUtil.getPortlets(companyId);

      for (int i = 0; i < liferayPortlets.size(); i++) {
        com.liferay.portal.model.Portlet liferayPortlet =
            (com.liferay.portal.model.Portlet) liferayPortlets.get(i);

        Portlet producerPortlet = _createProducerPortlet(liferayPortlet);

        wsrpPortlets.add(producerPortlet);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    return wsrpPortlets.iterator();
  }
  public MarkupResponse invokeGetMarkup(GetMarkup getMarkup) throws WSRPException {
    String portletHandle = getMarkup.getPortletContext().getPortletHandle();

    MarkupResponse markupResponse = new MarkupResponse();
    MarkupContext markupContext = new MarkupContext();
    markupResponse.setMarkupContext(markupContext);

    try {
      MarkupParams markupParams = getMarkup.getMarkupParams();

      // window state
      String wsrpWindowState = markupParams.getWindowState();
      WindowState windowState = WSRPUtil.fromWsrpWindowState(wsrpWindowState);

      // portlet mode
      String wsrpMode = markupParams.getMode();
      PortletMode mode = WSRPUtil.fromWsrpMode(wsrpMode);

      ServletContext ctx = WSRPUtil.getServletContext();
      long companyId = WSRPUtil.getCompanyId();

      Portlet portlet = PortletLocalServiceUtil.getPortletById(companyId, portletHandle);
      CachePortlet cachePortlet = PortletInstanceFactory.create(portlet, ctx);
      PortletConfig portletConfig = PortletConfigFactory.create(portlet, ctx);
      PortletContext portletCtx = portletConfig.getPortletContext();

      Locale reqLocale = LocaleHelper.getLocale(markupParams.getLocales()[0]);
      String reqMimeType = markupParams.getMimeTypes()[0];
      Map renderParameters = _getRenderParameters(markupParams);
      HttpServletRequest httpReq =
          new WSRPServletRequest(
              WSRPUtil.getHttpServletRequest(), reqLocale, reqMimeType, renderParameters);
      PortletPreferencesIds portletPreferencesIds =
          PortletPreferencesFactoryUtil.getPortletPreferencesIds(httpReq, portlet.getPortletId());
      PortletPreferences portletPreferences =
          PortletPreferencesLocalServiceUtil.getPreferences(portletPreferencesIds);

      // this gets the default layout of the general guest
      User user = UserLocalServiceUtil.getDefaultUser(companyId);
      Layout layout = _getDefaultUserLayout(user.getCompanyId());

      RenderRequestImpl renderRequest =
          RenderRequestFactory.create(
              httpReq,
              portlet,
              cachePortlet,
              portletCtx,
              windowState,
              mode,
              portletPreferences,
              layout.getPlid());
      WSRPServletResponse res = new WSRPServletResponse();

      RenderResponseImpl renderResponse =
          new WSRPRenderResponseImpl(
              getMarkup,
              _provider,
              (RenderRequestImpl) renderRequest,
              res,
              portlet.getPortletId(),
              companyId,
              layout.getPlid());
      renderResponse.setContentType("text/html");
      renderRequest.defineObjects(portletConfig, renderResponse);
      cachePortlet.render(renderRequest, renderResponse);
      markupContext.setMarkupString(res.getString());
      String contentType = renderResponse.getContentType();
      if (contentType == null) {
        contentType = ContentTypes.TEXT_HTML_UTF8;
      }
      markupContext.setMimeType(contentType);
      markupContext.setLocale(renderResponse.getLocale().getLanguage());
      markupContext.setPreferredTitle(renderResponse.getTitle());

      RenderRequestFactory.recycle(renderRequest);
    } catch (Exception e) {
      e.printStackTrace();
    }

    return markupResponse;
  }
  public BlockingInteractionResponse invokePerformBlockingInteraction(
      PerformBlockingInteraction pbo) throws WSRPException {
    String portletHandle = pbo.getPortletContext().getPortletHandle();

    BlockingInteractionResponse bir = new BlockingInteractionResponse();
    UpdateResponse updateRes = new UpdateResponse();
    bir.setUpdateResponse(updateRes);

    try {
      MarkupParams markupParams = pbo.getMarkupParams();

      // window state
      String wsrpWindowState = markupParams.getWindowState();
      WindowState windowState = WSRPUtil.fromWsrpWindowState(wsrpWindowState);

      // portlet mode
      String wsrpMode = markupParams.getMode();
      PortletMode mode = WSRPUtil.fromWsrpMode(wsrpMode);

      ServletContext ctx = WSRPUtil.getServletContext();
      long companyId = WSRPUtil.getCompanyId();

      Portlet portlet = PortletLocalServiceUtil.getPortletById(companyId, portletHandle);
      CachePortlet cachePortlet = PortletInstanceFactory.create(portlet, ctx);
      PortletConfig portletConfig = PortletConfigFactory.create(portlet, ctx);
      PortletContext portletCtx = portletConfig.getPortletContext();

      Locale reqLocale = LocaleHelper.getLocale(markupParams.getLocales()[0]);
      String reqMimeType = markupParams.getMimeTypes()[0];
      InteractionParams interactionParams = pbo.getInteractionParams();
      Map actionParameters = _getActionParameters(interactionParams);
      HttpServletRequest httpReq =
          new WSRPServletRequest(
              WSRPUtil.getHttpServletRequest(), reqLocale, reqMimeType, actionParameters);
      PortletPreferencesIds portletPreferencesIds =
          PortletPreferencesFactoryUtil.getPortletPreferencesIds(httpReq, portlet.getPortletId());
      PortletPreferences portletPreferences =
          PortletPreferencesLocalServiceUtil.getPreferences(portletPreferencesIds);

      // this gets the default layout of the general guest
      User user = UserLocalServiceUtil.getDefaultUser(companyId);
      Layout layout = _getDefaultUserLayout(user.getCompanyId());

      ActionRequestImpl actionRequest =
          ActionRequestFactory.create(
              httpReq,
              portlet,
              cachePortlet,
              portletCtx,
              windowState,
              mode,
              portletPreferences,
              layout.getPlid());
      WSRPServletResponse res = new WSRPServletResponse();

      ActionResponseImpl actionResponse =
          new WSRPActionResponseImpl(
              pbo,
              _provider,
              actionRequest,
              res,
              portlet.getPortletId(),
              user,
              layout,
              windowState,
              mode);

      cachePortlet.processAction(actionRequest, actionResponse);
      String newNavState = null;

      Map renderParams = _getRenderParameters(httpReq, actionResponse);
      newNavState = Base64.encode(ObjectSerializer.serialize(renderParams));

      updateRes.setNavigationalState(newNavState);

      ActionRequestFactory.recycle(actionRequest);
    } catch (Exception e) {
      e.printStackTrace();
    }

    return bir;
  }