1 29 30 package com.caucho.quercus.lib; 31 32 import com.caucho.quercus.QuercusModuleException; 33 import com.caucho.quercus.annotation.Optional; 34 import com.caucho.quercus.env.ArrayValue; 35 import com.caucho.quercus.env.ArrayValueImpl; 36 import com.caucho.quercus.env.Env; 37 import com.caucho.quercus.env.StringValueImpl; 38 import com.caucho.quercus.env.Value; 39 import com.caucho.quercus.module.AbstractQuercusModule; 40 import com.caucho.util.L10N; 41 42 import javax.servlet.http.*; 43 import java.util.Enumeration ; 44 import java.util.logging.Logger ; 45 46 49 public class ApacheModule extends AbstractQuercusModule { 50 private static final L10N L = new L10N(ApacheModule.class); 51 52 private static final Logger log = 53 Logger.getLogger(ApacheModule.class.getName()); 54 55 58 public boolean apache_child_terminate() 59 { 60 return false; 61 } 62 63 68 71 public String apache_note(Env env, 72 String name, 73 @Optional Value value) 74 { 75 HttpServletRequest req = env.getRequest(); 76 77 Object oldValue = req.getAttribute(name); 78 79 if (value.isset()) 80 req.setAttribute(name, value.toString()); 81 82 if (oldValue != null) 83 return oldValue.toString(); 84 else 85 return null; 86 } 87 88 91 public Value apache_request_headers(Env env) 92 { 93 HttpServletRequest req = env.getRequest(); 94 95 ArrayValue result = new ArrayValueImpl(); 96 97 Enumeration e = req.getHeaderNames(); 98 99 while (e.hasMoreElements()) { 100 String key = (String ) e.nextElement(); 101 102 result.put(new StringValueImpl(key), new StringValueImpl(req.getHeader(key))); 103 } 104 105 return result; 106 } 107 108 110 113 public boolean apache_reset_timeout() 114 { 115 return false; 116 } 117 118 122 125 public Value getallheaders(Env env) 126 { 127 return apache_request_headers(env); 128 } 129 130 133 public boolean virtual(Env env, String url) 134 { 135 try { 136 HttpServletRequest req = env.getRequest(); 137 HttpServletResponse res = env.getResponse(); 138 139 env.getOut().flushBuffer(); 142 143 req.getRequestDispatcher(url).include(req, res); 144 145 return true; 146 } catch (RuntimeException e) { 147 throw e; 148 } catch (Exception e) { 149 throw new QuercusModuleException(e); 150 } 151 } 152 } 153 | Popular Tags |