Package org.apache.myfaces.portlet.faces.util

Examples of org.apache.myfaces.portlet.faces.util.QueryString


        (request.getAttribute(Bridge.VIEW_PATH) != null));
   
    // Now check to see if this is a Refresh (render) that follows a redirect
    // If it is use the redirect information cached in the session as the basis
    // for the request.
    QueryString redirectParams = (QueryString)
              request.getPortletSession(true).getAttribute(BridgeImpl.RENDER_REDIRECT_VIEWPARAMS);
   
    boolean modeChanged = hasModeChanged(request, redirectParams);

    if (redirectParams != null && (clientDirectedView || modeChanged)) 
View Full Code Here


      lifecycle.removePhaseListener(this);
    }
     
    // check here to see if a redirect occurred -- if so rerun doFacesRequest
    // for this new view
    QueryString redirectParams = (QueryString) context.getExternalContext()
            .getRequestMap().get(BridgeImpl.REDIRECT_VIEWPARAMS);
   
    if (redirectParams == null)
    {
      lifecycle.render(context);
View Full Code Here

  }
 
  private boolean isTokenLink(String token, String url)
  {
    int queryStart = url.indexOf('?');
    QueryString queryStr = null;
    String tokenParam = null;

    if (queryStart != -1)
    {
      queryStr = new QueryString(url.substring(queryStart + 1), "UTF8");
      tokenParam = queryStr.getParameter(token);
      return Boolean.parseBoolean(tokenParam);
    }

    return false;
  }
View Full Code Here

        .append(mode)
        .toString();
    }
    else
    {
      QueryString qs = new QueryString(viewId.substring(queryStart + 1), "UTF8");
      qs.setParameter(Bridge.PORTLET_MODE_PARAMETER, mode);
      return sb.append(viewId.substring(0, queryStart + 1)).append(qs.toString()).toString();
    }
  }
View Full Code Here

  }
 
  private String removeTokenLink(String token, String url)
  {
    int queryStart = url.indexOf('?');
    QueryString queryStr = null;

    if (queryStart != -1)
    {
      queryStr = new QueryString(url.substring(queryStart + 1), "UTF8");
      queryStr.removeParameter(token);
      String query = queryStr.toString();
      if (query != null && query.length() != 0)
      {
        url = url.substring(0, queryStart + 1) + query;
      }
      else
View Full Code Here

    }
   
    // If a redirect occurred -- merely return
    // check here to see if a redirect occurred -- if so rerun doFacesRequest
    // for this new view
    QueryString redirectParams = (QueryString) context.getExternalContext()
                      .getRequestMap().get(BridgeImpl.REDIRECT_VIEWPARAMS);
    if ((redirectParams != null))
    {
      return;
    }
View Full Code Here

  @Override
  public String encodeActionURL(String url)
  {
    String viewId = null, path = null;
    boolean nonFacesAction = false;
    QueryString queryStr = null;
    int queryStart = -1;
    boolean isPortletURL = false;
    Bridge.PortletPhase urlType = getPortletPhase();

    // First check to see if the special URI indicating we should encode
    // a Nonfaces target to just the current portlet (without an associated
    // path based resource).
    if (isPortletURL(url))
    {
      isPortletURL = true;
      nonFacesAction = true;
      //URL is of the form scheme:urlType?queryString
      // remove the scheme
      path = url.substring(url.indexOf(":")+ 1);
      queryStart = url.indexOf('?');

      if (queryStart != -1)
      {
        // Get the query string
        queryStr = new QueryString(path.substring(queryStart + 1), "UTF8");
        path = path.substring(0, queryStart);
      }
     
      if (path.equalsIgnoreCase("render"))
      {
        urlType = Bridge.PortletPhase.RENDER_PHASE;
      }
      else if (path.equalsIgnoreCase("action"))
      {
        urlType = Bridge.PortletPhase.ACTION_PHASE;
      }
      else
      {
        log("PortletExternalContextImpl.encodeActionURL:  malformed portlet url "
            + url);
        return url;
      }
    }
    else if (url.startsWith("#") || isExternalURL(url) || isDirectLink(url))
    {
      return url;
    }
    else
    {
      // Its a Path encoded URL
     
      // url might contain DirectLink=false parameter -- spec says remove if
      // it does.
      url = removeDirectLink(url);

      // Now determine the target viewId

      // First: split URL into path and query string
      // Hold onto QueryString for later processing
      queryStart = url.indexOf('?');

      if (queryStart != -1)
      {
        // Get the query string
        queryStr = new QueryString(url.substring(queryStart + 1), "UTF8");
        path = url.substring(0, queryStart);
      }
      else
      {
        path = url;
        // construct an empty queryString to hold the viewId
        queryStr = new QueryString("UTF8");
      }
   
      // Convert relative path to context path
      if (isRelativePath(path))
      {
        path = getPathFromRelativePath(path);
      }
   
      // Now se if this is a Faces URL
      viewId = getViewIdFromPath(path);

      if (viewId != null)
      {
        encodeFacesActionTarget(queryStr, viewId);
      }
      else
      {
        // URL points at non-Faces action
        nonFacesAction = true;
        encodeNonFacesActionTarget(queryStr, path);
      }
    }
   
    if (getPortletPhase() == Bridge.PortletPhase.RENDER_PHASE)
    { // render - write
      // the viewId into
      // the response
      // (interaction
      // state)
      RenderResponse renderResponse = (RenderResponse) getResponse();
      PortletURL actionURL = null;
      // Non-JSF actions are renderURLs as we merely dispatch to them
      if (nonFacesAction)
      {
        if (isPortletURL && urlType == Bridge.PortletPhase.ACTION_PHASE)
        {
          actionURL = renderResponse.createActionURL();
        }
        else
        {
          actionURL = renderResponse.createRenderURL();
        }
      }
      else
      {
        actionURL = renderResponse.createActionURL();
      }

      // Add parameters so they don't get lost
      Enumeration<String> list = queryStr.getParameterNames();
      while (list.hasMoreElements())
      {
        String param = list.nextElement().toString();
        if (param.equals(Bridge.PORTLET_MODE_PARAMETER))
        {
          try
          {
            actionURL.setPortletMode(new PortletMode(queryStr.getParameter(param)));
          }
          catch (Exception e)
          {
            ; // do nothing -- just ignore
          }
        }
        else if (param.equals(Bridge.PORTLET_WINDOWSTATE_PARAMETER))
        {
          try
          {
            actionURL.setWindowState(new WindowState(queryStr.getParameter(param)));
          }
          catch (Exception e)
          {
            ; // do nothing -- just ignore
          }
        }
        else if (param.equals(Bridge.PORTLET_SECURE_PARAMETER))
        {
          try
          {
            actionURL.setSecure(Boolean.getBoolean(queryStr.getParameter(param)));
          }
          catch (Exception e)
          {
            ; // do nothing -- just ignore
          }
        }
        else
        {
          actionURL.setParameter(param, queryStr.getParameter(param));
        }
      }

      // TODO hack to workaround double encoding problem
      url = actionURL.toString();
      url = url.replaceAll("\\&amp\\;", "&");
    }
    else
    { // action - write the viewId to navigational state
      ActionResponse actionResponse = (ActionResponse) getResponse();

      // set request params into navigational states
      Enumeration<String> list = queryStr.getParameterNames();
      while (list.hasMoreElements())
      {
        String param = list.nextElement();
        if (param.equals(Bridge.PORTLET_MODE_PARAMETER))
        {
          try
          {
            actionResponse.setPortletMode(new PortletMode(queryStr.getParameter(param)));
          }
          catch (Exception e)
          {
            //TODO: Ignoring is probably dangerous here as it means that we are
            //      EITHER using exceptions for flow control (which is extreemly
            //      inefficient) or we should log a message saying what the issue
            //      is.  According to the Javadocs an exception is thrown here if the
            //      portlet mode is not allowed or if sendRedirect has already been
            //      called.  In either case we should log an information type message
            //      here.
            ; // do nothing -- just ignore
          }
        }
        else if (param.equals(Bridge.PORTLET_WINDOWSTATE_PARAMETER))
        {
          try
          {
            actionResponse.setWindowState(new WindowState(queryStr.getParameter(param)));
          }
          catch (Exception e)
          {
            ; // do nothing -- just ignore
          }
        }
        else if (param.equals(Bridge.PORTLET_SECURE_PARAMETER))
        {
          ; // ignore -- do nothing as can't encode into an actionResponse
        }
        else
        {
          actionResponse.setRenderParameter(param, queryStr.getParameter(param));
        }
      }
    }
    // Because we want to support translating a redirect that occurs
    // during a render as an in place navigation AND we can't reverse
View Full Code Here

  private String replaceResourceQueryStringMarkers(String s, boolean hasBackLink,
                                                   boolean hasViewLink)
  {
    String path = null;
    QueryString queryStr = null;
    int queryStart = -1;

    // First: split URL into path and query string
    // Hold onto QueryString for later processing
    queryStart = s.indexOf('?');

    // references aren't in the querystring so nothing to do
    if (queryStart == -1)
      return s;

    FacesContext context = FacesContext.getCurrentInstance();

    queryStr = new QueryString(s.substring(queryStart + 1), "UTF8");
    path = s.substring(0, queryStart);

    if (hasBackLink)
    {
      Enumeration<String> list = queryStr.getParameterNames();
      while (list.hasMoreElements())
      {
        String param = list.nextElement().toString();
        if (hasBackLink && param.equals(Bridge.BACK_LINK))
        {
          try
          {
            // Set backlink as parameter using value as param name
            queryStr.setParameter(queryStr.getParameter(param),
                                encodeActionURL(context.getApplication().getViewHandler().getActionURL(context,
                                                                                                       context.getViewRoot().getViewId())));
            ;
          }
          catch (Exception e)
          {
            ; // do nothing -- just ignore
          }
        }
      }
    }
   
    // Now make sure the parameters are removed
    try
    {
      queryStr.removeParameter(Bridge.BACK_LINK);
      queryStr.removeParameter(Bridge.VIEW_LINK);
    }
    catch (Exception e)
    {
      ; // do nothing -- just ignore
   

    // Now put the string back together
    String qs = queryStr.toString();
    if (qs.length() > 0)
    {
      s = path + "?" + qs;
    }
    else
View Full Code Here

  }
 
  private boolean isTokenLink(String token, String url)
  {
    int queryStart = url.indexOf('?');
    QueryString queryStr = null;
    String tokenParam = null;

    if (queryStart != -1)
    {
      queryStr = new QueryString(url.substring(queryStart + 1), "UTF8");
      tokenParam = queryStr.getParameter(token);
      return Boolean.parseBoolean(tokenParam);
    }

    return false;
  }
View Full Code Here

  }
 
  private String removeTokenLink(String token, String url)
  {
    int queryStart = url.indexOf('?');
    QueryString queryStr = null;

    if (queryStart != -1)
    {
      queryStr = new QueryString(url.substring(queryStart + 1), "UTF8");
      queryStr.removeParameter(token);
      String query = queryStr.toString();
      if (query != null && query.length() != 0)
      {
        url = url.substring(0, queryStart + 1) + query;
      }
      else
View Full Code Here

TOP

Related Classes of org.apache.myfaces.portlet.faces.util.QueryString

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.