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