package org.wikipedia.crash;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
/** Wrapper around {@link Exception} used to send a JSON payload via {@link CrashReporter}. */
public class RemoteLogException extends Exception {
@NonNull private final Map<String, String> props = new HashMap<>();
public RemoteLogException(@Nullable String message) {
this(message, null);
}
public RemoteLogException(@Nullable Throwable throwable) {
this(null, throwable);
}
public RemoteLogException(@Nullable String message, @Nullable Throwable throwable) {
super(throwable);
putMessage(message == null && throwable != null ? throwable.getMessage() : message);
}
public RemoteLogException put(String key, String value) {
props.put(key, value);
return this;
}
@Override
public String getMessage() {
super.getMessage();
return propsToJsonMsg();
}
private void putMessage(@Nullable String message) {
if (message != null) {
props.put("message", message);
}
}
private String propsToJsonMsg() {
return new JSONObject(props).toString();
}
}