001 package railo; 002 003 import java.io.IOException; 004 import java.io.PrintStream; 005 import java.io.Reader; 006 import java.lang.reflect.InvocationTargetException; 007 import java.sql.ResultSet; 008 import java.util.Date; 009 import java.util.Enumeration; 010 import java.util.Iterator; 011 import java.util.List; 012 import java.util.ListIterator; 013 import java.util.Map; 014 import java.util.Set; 015 016 import javax.servlet.http.Cookie; 017 018 import org.w3c.dom.Attr; 019 import org.w3c.dom.NamedNodeMap; 020 import org.w3c.dom.Node; 021 import org.xml.sax.InputSource; 022 023 import railo.commons.io.IOUtil; 024 import railo.runtime.exp.PageException; 025 import railo.runtime.op.Caster; 026 import railo.runtime.type.QueryImpl; 027 028 /** 029 * 030 */ 031 public class aprint { 032 033 034 035 public static void date(String value) { 036 long millis=System.currentTimeMillis(); 037 o( 038 new Date(millis) 039 +"-" 040 +(millis-(millis/1000*1000)) 041 +" "+value); 042 } 043 044 public static void ds(boolean useOutStream) { 045 new Exception("Stack trace").printStackTrace(useOutStream?System.out:System.err); 046 } 047 048 public static void ds(Object label,boolean useOutStream) { 049 _(useOutStream?System.out:System.err, label); 050 ds(useOutStream); 051 } 052 053 public static void ds() {ds(false);} 054 public static void ds(Object label) {ds(label,false);} 055 public static void dumpStack() {ds(false);} 056 public static void dumpStack(boolean useOutStream) {ds(useOutStream);} 057 public static void dumpStack(String label) {ds(label,false);} 058 public static void dumpStack(String label,boolean useOutStream) {ds(label,useOutStream);} 059 060 public static void err(boolean o) { 061 System.err.println(o); 062 } 063 public static void err(double d) { 064 System.err.println(d); 065 } 066 public static void err(long d) { 067 System.err.println(d); 068 } 069 public static void err(float d) { 070 System.err.println(d); 071 } 072 public static void err(int d) { 073 System.err.println(d); 074 } 075 public static void err(short d) { 076 System.err.println(d); 077 } 078 079 public static void out(Object o1,Object o2,Object o3) { 080 System.out.print(o1); 081 System.out.print(o2); 082 System.out.println(o3); 083 } 084 085 public static void out(Object o1,Object o2) { 086 System.out.print(o1); 087 System.out.println(o2); 088 } 089 090 public static void out(Object o,long l) { 091 System.out.print(o); 092 System.out.println(l); 093 } 094 095 public static void out(Object o,double d) { 096 System.out.print(o); 097 System.out.println(d); 098 } 099 100 101 public static void out(byte[] arr, int offset, int len) { 102 System.out.print("byte[]{"); 103 for(int i=offset;i<len+offset;i++) { 104 if(i>0)System.out.print(','); 105 System.out.print(arr[i]); 106 } 107 System.out.println("}"); 108 } 109 110 111 112 113 114 115 public static void out(double o) { 116 System.out.println(o); 117 } 118 119 public static void out(float o) { 120 System.out.println(o); 121 } 122 public static void out(long o) { 123 System.out.println(o); 124 } 125 public static void out(int o) { 126 System.out.println(o); 127 } 128 public static void out(char o) { 129 System.out.println(o); 130 } 131 public static void out(boolean o) { 132 System.out.println(o); 133 } 134 public static void out() { 135 System.out.println(); 136 } 137 138 public static void printST(Throwable t) { 139 if(t instanceof InvocationTargetException){ 140 t=((InvocationTargetException)t).getTargetException(); 141 } 142 err(t.getClass().getName()); 143 t.printStackTrace(); 144 145 } 146 147 public static void printST(Throwable t,PrintStream ps) { 148 if(t instanceof InvocationTargetException){ 149 t=((InvocationTargetException)t).getTargetException(); 150 } 151 err(t.getClass().getName()); 152 t.printStackTrace(ps); 153 154 } 155 156 157 158 public static void out(Object o) { 159 _(System.out, o); 160 } 161 public static void err(Object o) { 162 _(System.err, o); 163 } 164 165 166 public static void o(Object o) { 167 _(System.out, o); 168 } 169 public static void e(Object o) { 170 _(System.err, o); 171 } 172 public static void oe(Object o, boolean valid) { 173 _(valid?System.out:System.err, o); 174 } 175 176 public static void dateO(String value) { 177 _date(System.out, value); 178 } 179 180 public static void dateE(String value) { 181 _date(System.err, value); 182 } 183 184 private static void _date(PrintStream ps,String value) { 185 long millis = System.currentTimeMillis(); 186 _(ps, 187 new Date(millis) 188 +"-" 189 +(millis-(millis/1000*1000)) 190 +" "+value); 191 } 192 193 194 195 private static void _(PrintStream ps,Object o) { 196 if(o instanceof Enumeration) _(ps,(Enumeration)o); 197 if(o instanceof Object[]) _(ps,(Object[])o); 198 else if(o instanceof boolean[]) _(ps,(boolean[])o); 199 else if(o instanceof byte[]) _(ps,(byte[])o); 200 else if(o instanceof int[]) _(ps,(int[])o); 201 else if(o instanceof float[]) _(ps,(float[])o); 202 else if(o instanceof long[]) _(ps,(long[])o); 203 else if(o instanceof double[]) _(ps,(double[])o); 204 else if(o instanceof char[]) _(ps,(char[])o); 205 else if(o instanceof short[]) _(ps,(short[])o); 206 else if(o instanceof Set) _(ps,(Set)o); 207 else if(o instanceof List) _(ps,(List)o); 208 else if(o instanceof Map) _(ps,(Map)o); 209 else if(o instanceof Iterator) _(ps,(Iterator)o); 210 else if(o instanceof NamedNodeMap) _(ps,(NamedNodeMap)o); 211 else if(o instanceof ResultSet) _(ps,(ResultSet)o); 212 else if(o instanceof Node) _(ps,(Node)o); 213 else if(o instanceof Throwable) _(ps,(Throwable)o); 214 else if(o instanceof Cookie) { 215 Cookie c=(Cookie) o; 216 ps.println("Cookie(name:"+c.getName()+";domain:"+c.getDomain()+";maxage:"+c.getMaxAge()+";path:"+c.getPath()+";value:"+c.getValue()+";version:"+c.getVersion()+";secure:"+c.getSecure()+")"); 217 } 218 else if(o instanceof InputSource) { 219 InputSource is=(InputSource) o; 220 Reader r = is.getCharacterStream(); 221 try { 222 ps.println(IOUtil.toString(is.getCharacterStream())); 223 } catch (IOException e) {} 224 finally { 225 IOUtil.closeEL(r); 226 } 227 } 228 229 else ps.println(o); 230 } 231 232 233 234 235 private static void _(PrintStream ps,Object[] arr) { 236 if(arr==null){ 237 ps.println("null"); 238 return; 239 } 240 ps.print(arr.getClass().getComponentType().getName()+"[]{"); 241 for(int i=0;i<arr.length;i++) { 242 if(i>0) { 243 ps.print("\t,"); 244 } 245 _(ps,arr[i]); 246 } 247 ps.println("}"); 248 } 249 250 private static void _(PrintStream ps,int[] arr) { 251 ps.print("int[]{"); 252 for(int i=0;i<arr.length;i++) { 253 if(i>0)ps.print(','); 254 ps.print(arr[i]); 255 } 256 ps.println("}"); 257 } 258 259 private static void _(PrintStream ps,byte[] arr) { 260 ps.print("byte[]{"); 261 for(int i=0;i<arr.length;i++) { 262 if(i>0)ps.print(','); 263 ps.print(arr[i]); 264 } 265 ps.println("}"); 266 } 267 268 private static void _(PrintStream ps,boolean[] arr) { 269 ps.print("boolean[]{"); 270 for(int i=0;i<arr.length;i++) { 271 if(i>0)ps.print(','); 272 ps.print(arr[i]); 273 } 274 ps.println("}"); 275 } 276 277 private static void _(PrintStream ps,char[] arr) { 278 ps.print("char[]{"); 279 for(int i=0;i<arr.length;i++) { 280 if(i>0)ps.print(','); 281 ps.print(arr[i]); 282 } 283 ps.println("}"); 284 } 285 286 private static void _(PrintStream ps,short[] arr) { 287 ps.print("short[]{"); 288 for(int i=0;i<arr.length;i++) { 289 if(i>0)ps.print(','); 290 ps.print(arr[i]); 291 } 292 ps.println("}"); 293 } 294 295 private static void _(PrintStream ps,float[] arr) { 296 ps.print("float[]{"); 297 for(int i=0;i<arr.length;i++) { 298 if(i>0)ps.print(','); 299 ps.print(arr[i]); 300 } 301 ps.println("}"); 302 } 303 304 private static void _(PrintStream ps,long[] arr) { 305 ps.print("long[]{"); 306 for(int i=0;i<arr.length;i++) { 307 if(i>0)ps.print(','); 308 ps.print(arr[i]); 309 } 310 ps.println("}"); 311 } 312 313 private static void _(PrintStream ps,double[] arr) { 314 ps.print("double[]{"); 315 for(int i=0;i<arr.length;i++) { 316 if(i>0)ps.print(','); 317 ps.print(arr[i]); 318 } 319 ps.println("}"); 320 } 321 322 323 private static void _(PrintStream ps,Node n) { 324 ps.print(Caster.toString(n,null)); 325 } 326 327 328 private static void _(PrintStream ps,Throwable t) { 329 t.printStackTrace(ps); 330 } 331 332 333 private static void _(PrintStream ps,Enumeration en) { 334 335 _(ps,en.getClass().getName()+" ["); 336 while(en.hasMoreElements()) { 337 ps.print(en.nextElement()); 338 ps.println(","); 339 } 340 _(ps,"]"); 341 } 342 343 private static void _(PrintStream ps,List list) { 344 ListIterator it = list.listIterator(); 345 _(ps,list.getClass().getName()+" {"); 346 while(it.hasNext()) { 347 int index = it.nextIndex(); 348 it.next(); 349 ps.print(index); 350 ps.print(":"); 351 ps.print(list.get(index)); 352 ps.println(";"); 353 } 354 _(ps,"}"); 355 } 356 357 private static void _(PrintStream ps,Iterator it) { 358 359 _(ps,it.getClass().getName()+" {"); 360 while(it.hasNext()) { 361 ps.print(it.next()); 362 ps.println(";"); 363 } 364 _(ps,"}"); 365 } 366 367 368 private static void _(PrintStream ps,Set set) { 369 Iterator it = set.iterator(); 370 ps.println(set.getClass().getName()+" {"); 371 while(it.hasNext()) { 372 _(ps,it.next()); 373 ps.println(","); 374 } 375 _(ps,"}"); 376 } 377 378 private static void _(PrintStream ps,ResultSet res) { 379 try { 380 _(ps, new QueryImpl(res,"query").toString()); 381 } catch (PageException e) { 382 _(ps, res.toString()); 383 } 384 } 385 386 private static void _(PrintStream ps,Map map) { 387 if(map==null) { 388 ps.println("null"); 389 return; 390 } 391 Iterator it = map.keySet().iterator(); 392 393 if(map.size()<2) { 394 ps.print(map.getClass().getName()+" {"); 395 while(it.hasNext()) { 396 Object key = it.next(); 397 398 ps.print(key); 399 ps.print(":"); 400 ps.print(map.get(key)); 401 } 402 ps.println("}"); 403 } 404 else { 405 ps.println(map.getClass().getName()+" {"); 406 while(it.hasNext()) { 407 Object key = it.next(); 408 ps.print(" "); 409 ps.print(key); 410 ps.print(":"); 411 ps.print(map.get(key)); 412 ps.println(";"); 413 } 414 ps.println("}"); 415 } 416 } 417 418 private static void _(PrintStream ps,NamedNodeMap map) { 419 if(map==null) { 420 ps.println("null"); 421 return; 422 } 423 int len = map.getLength(); 424 ps.print(map.getClass().getName()+" {"); 425 Attr attr; 426 for(int i=0;i<len;i++) { 427 attr=(Attr)map.item(i); 428 429 ps.print(attr.getName()); 430 ps.print(":"); 431 ps.print(attr.getValue()); 432 ps.println(";"); 433 } 434 ps.println("}"); 435 } 436 437 438 439 }