package com.ledger.wallet.service; import android.os.Parcel; import android.os.Parcelable; public class ServiceResult implements Parcelable { private byte[] result; private byte[] extendedResult; private String exceptionMessage; public ServiceResult() { } public ServiceResult(byte[] result) { this.result = result; } public ServiceResult(byte[] result, byte[] extendedResult) { this.result = result; this.extendedResult = extendedResult; } public ServiceResult(String exceptionMessage) { this.exceptionMessage = exceptionMessage; } public ServiceResult(Throwable t) { this.exceptionMessage = t.toString(); } public ServiceResult(Parcel parcel) { this.result = readArrayFromParcel(parcel); this.extendedResult = readArrayFromParcel(parcel); this.exceptionMessage = readStringFromParcel(parcel); } public byte[] getResult() { return result; } public byte[] getExtendedResult() { return extendedResult; } public String getExceptionMessage() { return exceptionMessage; } @Override public int describeContents() { return 0; } private void writeArrayToParcel(byte[] array, Parcel dest) { if (array != null) { dest.writeByte((byte)0); dest.writeInt(array.length); dest.writeByteArray(array); } else { dest.writeByte((byte)1); } } private void writeStringToParcel(String data, Parcel dest) { if (data != null) { dest.writeByte((byte)0); dest.writeString(data); } else { dest.writeByte((byte)1); } } private byte[] readArrayFromParcel(Parcel src) { if (src.readByte() == (byte)1) { return null; } int arraySize = src.readInt(); byte[] result = new byte[arraySize]; src.readByteArray(result); return result; } private String readStringFromParcel(Parcel src) { if (src.readByte() == (byte)1) { return null; } return src.readString(); } @Override public void writeToParcel(Parcel dest, int flags) { writeArrayToParcel(result, dest); writeArrayToParcel(extendedResult, dest); writeStringToParcel(exceptionMessage, dest); } public static final Parcelable.Creator<ServiceResult> CREATOR = new Creator<ServiceResult>() { @Override public ServiceResult createFromParcel(Parcel source) { return new ServiceResult(source); } @Override public ServiceResult[] newArray(int size) { return new ServiceResult[size]; } }; }