org.chromium.sdk/src/org/chromium/sdk/internal/protocol/CommandResponseBody.java
changeset 2 e4420d2515f1
child 355 8726e95bcbba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.chromium.sdk/src/org/chromium/sdk/internal/protocol/CommandResponseBody.java	Wed Dec 23 17:13:18 2009 -0800
@@ -0,0 +1,44 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.sdk.internal.protocol;
+
+import java.util.List;
+
+import org.chromium.sdk.internal.protocol.data.ScriptHandle;
+import org.chromium.sdk.internal.protocol.data.ValueHandle;
+import org.chromium.sdk.internal.protocolparser.JsonProtocolParseException;
+import org.chromium.sdk.internal.protocolparser.JsonSubtypeCasting;
+import org.chromium.sdk.internal.protocolparser.JsonType;
+import org.json.simple.JSONObject;
+
+/**
+ * This is empty base type for all command response body types. The actual type
+ * depends on a particular command. Note that in JSON sometimes it is an array rather than object
+ * (for scripts).
+ */
+@JsonType(subtypesChosenManually=true)
+public interface CommandResponseBody {
+  @JsonSubtypeCasting
+  BacktraceCommandBody asBacktraceCommandBody() throws JsonProtocolParseException;
+
+  @JsonSubtypeCasting
+  List<ScriptHandle> asScripts() throws JsonProtocolParseException;
+
+  @JsonSubtypeCasting
+  BreakpointBody asBreakpointBody() throws JsonProtocolParseException;
+
+  @JsonSubtypeCasting
+  // map refId -> ValueHandle
+  JSONObject asLookupMap() throws JsonProtocolParseException;
+
+  @JsonSubtypeCasting(reinterpret=true)
+  ValueHandle asEvaluateBody() throws JsonProtocolParseException;
+
+  @JsonSubtypeCasting
+  ScopeBody asScopeBody() throws JsonProtocolParseException;
+
+  @JsonSubtypeCasting
+  VersionBody asVersionBody() throws JsonProtocolParseException;
+}