Package railo.runtime.net.http

Source Code of railo.runtime.net.http.HttpUtil

package railo.runtime.net.http;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

import railo.commons.lang.Pair;
import railo.runtime.PageContext;
import railo.runtime.config.Config;
import railo.runtime.engine.ThreadLocalPageContext;
import railo.runtime.type.Struct;
import railo.runtime.type.StructImpl;

public class HttpUtil {

  /**
   * read all headers from request and return it
   * @param req
   * @return
   */
  public static Pair[] cloneHeaders(HttpServletRequest req) {
    List headers=new ArrayList();
    Enumeration e = req.getHeaderNames(),ee;
    String name;
    while(e.hasMoreElements()){
      name=(String) e.nextElement();
      ee=req.getHeaders(name);
      while(ee.hasMoreElements()){
        headers.add(new Pair(name,ee.nextElement().toString()));
      }
    }
    return (Pair[]) headers.toArray(new Pair[headers.size()]);
  }

  public static Struct getAttributesAsStruct(HttpServletRequest req) {
    Struct attributes=new StructImpl();
    Enumeration e = req.getAttributeNames();
    String name;
    while(e.hasMoreElements()){
      name=(String) e.nextElement();// MUST (hhlhgiug) can throw ConcurrentModificationException
      if(name!=null)attributes.setEL(name, req.getAttribute(name));
    }
    return attributes;
  }

  public static Pair<String,Object>[] getAttributes(HttpServletRequest req) {
    List<Pair<String,Object>> attributes=new ArrayList<Pair<String,Object>>();
    Enumeration e = req.getAttributeNames();
    String name;
    while(e.hasMoreElements()){
      name=(String) e.nextElement();
      attributes.add(new Pair<String,Object>(name, req.getAttribute(name)));
    }
    return attributes.toArray(new Pair[attributes.size()]);
  }

  public static Pair<String,String>[] cloneParameters(HttpServletRequest req) {
    List<Pair<String,String>> parameters=new ArrayList<Pair<String,String>>();
    Enumeration e = req.getParameterNames();
    String[] values;
    String name;
   
    while(e.hasMoreElements()){
      name=(String) e.nextElement();
      values=req.getParameterValues(name);
      if(values==null && ReqRspUtil.needEncoding(name, true))
        values=req.getParameterValues(ReqRspUtil.encode(name, ReqRspUtil.getCharacterEncoding(null,req)));
      if(values==null) {
        PageContext pc = ThreadLocalPageContext.get();
        if(pc!=null && ReqRspUtil.identical(pc.getHttpServletRequest(),req) ) {
          values=HTTPServletRequestWrap.getParameterValues(ThreadLocalPageContext.get(), name);
        }
      }
      if(values!=null)for(int i=0;i<values.length;i++){
        parameters.add(new Pair<String,String>(name,values[i]));
      }
    }
    return parameters.toArray(new Pair[parameters.size()]);
  }
 
  public static Cookie[] cloneCookies(Config config,HttpServletRequest req) {
    Cookie[] src=ReqRspUtil.getCookies(config, req);
    if(src==null)return new Cookie[0];
   
    Cookie[] dest=new Cookie[src.length];
    for(int i=0;i<src.length;i++) {
      dest[i]=(Cookie) src[i].clone();
    }
    return dest;
  }

}
TOP

Related Classes of railo.runtime.net.http.HttpUtil

TOP
Copyright © 2018 www.massapi.com. 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.