@Override public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(className); out.writeObject(message); out.writeObject(trace); out.writeObject(causeProxy); byte[] originalBytes = new byte[0]; if (original != null) { try { // reset the cause, so we can serialize the exception chain individual SecurityActions.setFieldValue(Throwable.class, original, "cause", null); } catch (Exception e) { // move on, try to serialize anyway } try { ByteArrayOutputStream originalOut = new ByteArrayOutputStream(); ObjectOutputStream output = new ObjectOutputStream(originalOut); output.writeObject(original); output.flush(); originalBytes = originalOut.toByteArray(); } catch (NotSerializableException e) { // in case some class breaks Serialization contract serializationProcessException = e; } } out.writeObject(originalBytes); out.writeObject(serializationProcessException); }
@Override public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(className); out.writeObject(message); out.writeObject(trace); out.writeObject(causeProxy); byte[] originalBytes = new byte[0]; if (original != null) { try { // reset the cause, so we can serialize the exception chain individual SecurityActions.setFieldValue(Throwable.class, original, "cause", null); } catch (Exception e) { // move on, try to serialize anyway } try { ByteArrayOutputStream originalOut = new ByteArrayOutputStream(); ObjectOutputStream output = new ObjectOutputStream(originalOut); output.writeObject(original); output.flush(); originalBytes = originalOut.toByteArray(); } catch (NotSerializableException e) { // in case some class breaks Serialization contract serializationProcessException = e; } } out.writeObject(originalBytes); out.writeObject(serializationProcessException); }
SecurityActions.setFieldValue(InvocationTargetException.class, original, "target", cause); } else { SecurityActions.setFieldValue(Throwable.class, original, "cause", cause);
SecurityActions.setFieldValue(InvocationTargetException.class, original, "target", cause); } else { SecurityActions.setFieldValue(Throwable.class, original, "cause", cause);