diff --git a/platform/script-debugger/backend/src/org/jetbrains/rpc/AsyncResultCallbackBase.java b/platform/script-debugger/backend/src/org/jetbrains/rpc/AsyncResultCallbackBase.java deleted file mode 100644 index 56486ec61a83..000000000000 --- a/platform/script-debugger/backend/src/org/jetbrains/rpc/AsyncResultCallbackBase.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.jetbrains.rpc; - -import com.intellij.openapi.util.ActionCallback; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -abstract class AsyncResultCallbackBase implements AsyncResultCallback { - protected final C callback; - private final ErrorConsumer errorConsumer; - - protected AsyncResultCallbackBase(C callback, @Nullable ErrorConsumer errorConsumer) { - this.callback = callback; - this.errorConsumer = errorConsumer; - } - - @Override - public final void onError(@NotNull String errorMessage, ERROR_DETAILS errorDetails) { - try { - if (errorConsumer == null) { - callback.reject(errorMessage); - } - else { - try { - errorConsumer.consume(errorMessage, errorDetails, callback); - } - catch (Throwable e) { - try { - callback.reject(e.getMessage()); - } - finally { - CommandProcessor.LOG.error(e); - } - } - } - } - catch (Throwable e) { - CommandProcessor.LOG.error(e); - } - } -} \ No newline at end of file diff --git a/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandCallbackWithResponse.java b/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandCallbackWithResponse.java deleted file mode 100644 index 94bd01276811..000000000000 --- a/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandCallbackWithResponse.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.jetbrains.rpc; - -import com.intellij.openapi.util.AsyncResult; -import com.intellij.util.Function; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -final class CommandCallbackWithResponse - extends AsyncResultCallbackBase,ERROR_DETAILS> { - private final Function transform; - private final String methodName; - - public CommandCallbackWithResponse(String methodName, Function transform, @Nullable ErrorConsumer, ERROR_DETAILS> errorConsumer) { - this(new AsyncResult(), methodName, transform, errorConsumer); - } - - public CommandCallbackWithResponse(AsyncResult asyncResult, String methodName, Function transform, @Nullable ErrorConsumer, ERROR_DETAILS> errorConsumer) { - super(asyncResult, errorConsumer); - - this.methodName = methodName; - - this.transform = transform; - } - - private void onSuccess(RESULT result) { - try { - callback.setDone(transform.fun(result)); - } - catch (Throwable e) { - CommandProcessor.LOG.error(e); - } - } - - @Override - public final void onSuccess(SUCCESS_RESPONSE response, @NotNull ResultReader resultReader) { - try { - onSuccess(resultReader.readResult(methodName, response)); - } - catch (Throwable e) { - CommandProcessor.LOG.error(e); - callback.reject(e.getMessage()); - } - } -} \ No newline at end of file diff --git a/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandProcessor.java b/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandProcessor.java index 035da28f1685..d76f87c25b9e 100644 --- a/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandProcessor.java +++ b/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandProcessor.java @@ -38,7 +38,7 @@ public abstract class CommandProcessor callback) { + protected void send(@NotNull Request message, @NotNull RequestPromise callback) { messageManager.send(message, callback); } } \ No newline at end of file diff --git a/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandSender.java b/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandSender.java index ad3d571538c9..87618be3bb93 100644 --- a/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandSender.java +++ b/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandSender.java @@ -1,20 +1,10 @@ package org.jetbrains.rpc; -import com.intellij.openapi.util.AsyncResult; -import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.concurrency.Promise; import org.jetbrains.jsonProtocol.Request; -import org.jetbrains.jsonProtocol.RequestWithResponse; -public interface CommandSender { +public interface CommandSender { @NotNull - Promise send(@NotNull Request message); - - Promise send(@NotNull RequestWithResponse message); - - AsyncResult send(@NotNull RequestWithResponse message, - @NotNull Function transform, - @Nullable ErrorConsumer, ERROR_DETAILS> errorConsumer); + Promise send(@NotNull Request message); } \ No newline at end of file diff --git a/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandSenderBase.java b/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandSenderBase.java index 2d7977e45c07..76884ba68653 100644 --- a/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandSenderBase.java +++ b/platform/script-debugger/backend/src/org/jetbrains/rpc/CommandSenderBase.java @@ -1,45 +1,39 @@ package org.jetbrains.rpc; -import com.intellij.openapi.util.AsyncResult; -import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.concurrency.AsyncPromise; import org.jetbrains.concurrency.Promise; import org.jetbrains.jsonProtocol.Request; -import org.jetbrains.jsonProtocol.RequestWithResponse; -public abstract class CommandSenderBase implements CommandSender { - protected abstract void send(@NotNull Request message, @NotNull AsyncResultCallback callback); +public abstract class CommandSenderBase implements CommandSender { + protected abstract void send(@NotNull Request message, @NotNull RequestPromise callback); + @Override @NotNull - @Override - public final Promise send(@NotNull Request message) { - PromiseWrapper callback = new PromiseWrapper(null); - send(message, callback); - return callback; - } - - @Override - public final Promise send(@NotNull RequestWithResponse request) { - PromiseWrapper callback = new PromiseWrapper(request.getMethodName()); + public final Promise send(@NotNull Request request) { + RequestPromise callback = new RequestPromise(request.getMethodName()); send(request, callback); return callback; } - - - protected static final class PromiseWrapper extends AsyncPromise implements AsyncResultCallback { + protected static final class RequestPromise extends AsyncPromise implements RequestCallback { private final String methodName; - public PromiseWrapper(@Nullable String methodName) { + public RequestPromise(@Nullable String methodName) { this.methodName = methodName; } @Override - public void onSuccess(SUCCESS_RESPONSE response, @NotNull ResultReader resultReader) { + public void onSuccess(SUCCESS_RESPONSE response, @Nullable ResultReader resultReader) { try { - setResult(methodName == null ? null : resultReader.readResult(methodName, response)); + if (resultReader == null) { + //noinspection unchecked + setResult((RESULT)response); + } + else { + setResult(methodName == null ? null : resultReader.readResult(methodName, response)); + } } catch (Throwable e) { CommandProcessor.LOG.error(e); @@ -52,14 +46,4 @@ public abstract class CommandSenderBase impleme setError(errorMessage); } } - - @Override - public final AsyncResult send(@NotNull RequestWithResponse message, - @NotNull Function transform, - @Nullable ErrorConsumer, ERROR_DETAILS> errorConsumer) { - CommandCallbackWithResponse callback = - new CommandCallbackWithResponse(message.getMethodName(), transform, errorConsumer); - send(message, callback); - return callback.callback; - } } \ No newline at end of file diff --git a/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageManager.java b/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageManager.java index 042f2ee907f1..6194db6f08a4 100644 --- a/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageManager.java +++ b/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageManager.java @@ -28,7 +28,7 @@ import java.util.Arrays; * @param type of incoming message that is a command (has sequence number) */ public final class MessageManager extends MessageManagerBase { - private final ConcurrentIntObjectMap> callbackMap = ContainerUtil.createConcurrentIntObjectMap(); + private final ConcurrentIntObjectMap> callbackMap = ContainerUtil.createConcurrentIntObjectMap(); private final Handler handler; public MessageManager(Handler handler) { @@ -46,10 +46,10 @@ public final class MessageManager callback); + void call(INCOMING_WITH_SEQ response, RequestCallback callback); } - public void send(@NotNull REQUEST message, @NotNull AsyncResultCallback callback) { + public void send(@NotNull REQUEST message, @NotNull RequestCallback callback) { if (rejectIfClosed(callback)) { return; } @@ -77,7 +77,7 @@ public final class MessageManager callback = callbackMap.remove(sequence); + RequestCallback callback = callbackMap.remove(sequence); if (callback != null) { callback.onError("Failed to send", null); } @@ -96,7 +96,7 @@ public final class MessageManager callback = getCallbackAndRemove(handler.getSequence(commandResponse)); + RequestCallback callback = getCallbackAndRemove(handler.getSequence(commandResponse)); if (rejectIfClosed(callback)) { return; } @@ -110,8 +110,8 @@ public final class MessageManager getCallbackAndRemove(int id) { - AsyncResultCallback callback = callbackMap.remove(id); + public RequestCallback getCallbackAndRemove(int id) { + RequestCallback callback = callbackMap.remove(id); if (callback == null) { throw new IllegalArgumentException("Cannot find callback with id " + id); } @@ -120,11 +120,11 @@ public final class MessageManager> map = callbackMap; + ConcurrentIntObjectMap> map = callbackMap; int[] keys = map.keys(); Arrays.sort(keys); for (int key : keys) { - AsyncResultCallback callback = map.get(key); + RequestCallback callback = map.get(key); if (callback != null) { rejectCallback(callback); } diff --git a/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageManagerBase.java b/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageManagerBase.java index 97672b220de8..1764d1644918 100644 --- a/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageManagerBase.java +++ b/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageManagerBase.java @@ -5,7 +5,7 @@ import org.jetbrains.annotations.NotNull; public abstract class MessageManagerBase { protected volatile boolean closed; - protected final boolean rejectIfClosed(AsyncResultCallback callback) { + protected final boolean rejectIfClosed(RequestCallback callback) { if (closed) { callback.onError("Connection closed", null); return true; @@ -17,7 +17,7 @@ public abstract class MessageManagerBase { closed = true; } - protected static void rejectCallback(@NotNull AsyncResultCallback callback) { + protected static void rejectCallback(@NotNull RequestCallback callback) { callback.onError("Connection closed", null); } } \ No newline at end of file diff --git a/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageProcessor.java b/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageProcessor.java index 442d436c7fca..719d8b033040 100644 --- a/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageProcessor.java +++ b/platform/script-debugger/backend/src/org/jetbrains/rpc/MessageProcessor.java @@ -10,5 +10,5 @@ public interface MessageProcessor { void closed(); @NotNull - Promise send(@NotNull Request message); + Promise send(@NotNull Request message); } \ No newline at end of file diff --git a/platform/script-debugger/backend/src/org/jetbrains/rpc/AsyncResultCallback.java b/platform/script-debugger/backend/src/org/jetbrains/rpc/RequestCallback.java similarity index 52% rename from platform/script-debugger/backend/src/org/jetbrains/rpc/AsyncResultCallback.java rename to platform/script-debugger/backend/src/org/jetbrains/rpc/RequestCallback.java index eef53a471187..470ad65b5e91 100644 --- a/platform/script-debugger/backend/src/org/jetbrains/rpc/AsyncResultCallback.java +++ b/platform/script-debugger/backend/src/org/jetbrains/rpc/RequestCallback.java @@ -3,8 +3,8 @@ package org.jetbrains.rpc; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public interface AsyncResultCallback { - void onSuccess(SUCCESS_RESPONSE successResponse, @NotNull ResultReader resultReader); +public interface RequestCallback { + void onSuccess(SUCCESS_RESPONSE successResponse, @Nullable ResultReader resultReader); void onError(@NotNull String errorMessage, @Nullable ERROR_DETAILS errorDetails); } \ No newline at end of file diff --git a/platform/script-debugger/protocol/protocol-model-generator/src/org/jetbrains/protocolReader/DomainGenerator.java b/platform/script-debugger/protocol/protocol-model-generator/src/org/jetbrains/protocolReader/DomainGenerator.java index 6798629e835c..e4ac51081a4b 100644 --- a/platform/script-debugger/protocol/protocol-model-generator/src/org/jetbrains/protocolReader/DomainGenerator.java +++ b/platform/script-debugger/protocol/protocol-model-generator/src/org/jetbrains/protocolReader/DomainGenerator.java @@ -56,7 +56,7 @@ class DomainGenerator { public void append(TextOutput out) { out.space().append("extends ").append(generator.getNaming().requestClassName); if (hasResponse) { - out.space().append("implements org.jetbrains.jsonProtocol.RequestWithResponse"); + out.space().append("implements org.jetbrains.jsonProtocol.Request"); } } }; diff --git a/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/Request.java b/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/Request.java index a3f52c963deb..373bd249ef5f 100644 --- a/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/Request.java +++ b/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/Request.java @@ -2,7 +2,7 @@ package org.jetbrains.jsonProtocol; import org.jetbrains.annotations.NotNull; -public interface Request { +public interface Request { @NotNull CharSequence toJson(); diff --git a/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/RequestImpl.java b/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/RequestImpl.java index 2a4cafdef23c..7230c69bbb4e 100644 --- a/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/RequestImpl.java +++ b/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/RequestImpl.java @@ -2,7 +2,7 @@ package org.jetbrains.jsonProtocol; import java.io.IOException; -public abstract class RequestImpl extends OutMessage implements Request { +public abstract class RequestImpl extends OutMessage implements Request { protected boolean argumentsObjectStarted; protected abstract String getIdKeyName(); diff --git a/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/RequestWithResponse.java b/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/RequestWithResponse.java deleted file mode 100644 index 29ba9492326b..000000000000 --- a/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/RequestWithResponse.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.jetbrains.jsonProtocol; - -public interface RequestWithResponse extends Request { -}