Your browser does not support JavaScript and this site utilizes JavaScript to build content and provide links to additional information. You should either enable JavaScript in your browser settings or use a browser that supports JavaScript in order to take full advantage of this site.
1 48 49 package com.caucho.hessian.io; 50 51 import java.io.*; 52 import java.util.HashMap ; 53 54 57 public class StackTraceElementDeserializer extends AbstractMapDeserializer { 58 private static Class _stackTraceClass; 59 60 public StackTraceElementDeserializer() 61 { 62 } 63 64 public Class getType() 65 { 66 return _stackTraceClass; 67 } 68 69 public Object readMap(AbstractHessianInput in) 70 throws IOException 71 { 72 HashMap map = new HashMap (); 73 74 in.addRef(map); 75 76 String declaringClass = null; 77 String methodName = null; 78 String fileName = null; 79 int lineNumber = 0; 80 81 while (! in.isEnd()) { 82 String key = in.readString(); 83 84 if (key.equals("declaringClass")) 85 declaringClass = in.readString(); 86 else if (key.equals("methodName")) 87 methodName = in.readString(); 88 else if (key.equals("fileName")) 89 fileName = in.readString(); 90 else if (key.equals("lineNumber")) 91 lineNumber = in.readInt(); 92 else { 93 Object value = in.readObject(); 94 } 95 } 96 97 in.readMapEnd(); 98 99 ByteArrayOutputStream bos = new ByteArrayOutputStream(); 100 DataOutputStream dos = new DataOutputStream(bos); 101 ObjectOutputStream oos = new ObjectOutputStream(dos); 102 103 oos.writeObject(_stackTraceClass); 104 105 Throwable e1 = new IOException(); 106 try { 107 throw e1; 108 } catch (Throwable e2) { 109 e1 = e2; 110 } 111 112 dos.writeByte(ObjectStreamConstants.TC_OBJECT); 113 dos.writeByte(ObjectStreamConstants.TC_REFERENCE); 114 dos.writeShort(0x007e); 115 dos.writeShort(0); 116 117 dos.writeInt(lineNumber); 118 119 if (declaringClass != null) { 120 dos.writeByte(ObjectStreamConstants.TC_STRING); 121 dos.writeUTF(declaringClass); 122 } 123 else 124 dos.writeByte(ObjectStreamConstants.TC_NULL); 125 126 if (fileName != null) { 127 dos.writeByte(ObjectStreamConstants.TC_STRING); 128 dos.writeUTF(fileName); 129 } 130 else 131 dos.writeByte(ObjectStreamConstants.TC_NULL); 132 133 if (methodName != null) { 134 dos.writeByte(ObjectStreamConstants.TC_STRING); 135 dos.writeUTF(methodName); 136 } 137 else 138 dos.writeByte(ObjectStreamConstants.TC_NULL); 139 140 oos.close(); 141 dos.close(); 142 bos.close(); 143 144 byte []data = bos.toByteArray(); 145 146 try { 147 ByteArrayInputStream bis = new ByteArrayInputStream(data); 148 ObjectInputStream ois = new ObjectInputStream(bis); 149 150 Object cl = ois.readObject(); 151 152 Object obj = ois.readObject(); 153 154 ois.close(); 155 bis.close(); 156 157 return obj; 158 } catch (Throwable e) { 159 return null; 160 } 161 } 162 163 static { 164 try { 165 _stackTraceClass = Class.forName("java.lang.StackTraceElement"); 166 } catch (Throwable e) { 167 } 168 } 169 } 170
| Popular Tags
|