blob: aad3023ad340a1b36c0a3aa3ad2fdaa3a5343122 [file] [log] [blame]
package org.jetbrains.rpc;
import com.intellij.openapi.util.ActionCallback;
import org.jetbrains.annotations.Nullable;
abstract class CommandCallbackWithResponseBase<SUCCESS_RESPONSE, C extends ActionCallback, RESULT, ERROR_DETAILS>
extends AsyncResultCallbackBase<SUCCESS_RESPONSE, C, ERROR_DETAILS> {
private final String methodName;
public CommandCallbackWithResponseBase(C callback, String methodName, @Nullable ErrorConsumer<C, ERROR_DETAILS> errorConsumer) {
super(callback, errorConsumer);
this.methodName = methodName;
}
@Override
public final void onSuccess(SUCCESS_RESPONSE response, ResultReader<SUCCESS_RESPONSE> resultReader) {
try {
onSuccess(resultReader.<RESULT>readResult(methodName, response));
}
catch (Throwable e) {
MessageManager.LOG.error(e);
callback.reject(e.getMessage());
}
}
protected abstract void onSuccess(RESULT result);
}