summaryrefslogtreecommitdiff
path: root/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/JsonType.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/JsonType.java')
-rw-r--r--platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/JsonType.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/JsonType.java b/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/JsonType.java
new file mode 100644
index 000000000000..79dc453ac9fb
--- /dev/null
+++ b/platform/script-debugger/protocol/protocol-reader-runtime/src/org/jetbrains/jsonProtocol/JsonType.java
@@ -0,0 +1,25 @@
+// 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.jetbrains.jsonProtocol;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Marks an interface as interface to json type object. This way user may hold JSON object in
+ * form of statically typed Java interface. The interface provides methods for reading properties
+ * (here called fields, because we imply there are "types" in JSON) and for accessing subtypes.
+ * <p/>
+ * In this design casting to subtypes means getting a different object of the subtype interface.
+ * For a type interface, a set of subtypes is defined by its methods
+ * with {@link JsonSubtypeCasting} annotation. These methods provide access to subtype objects.
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface JsonType {
+ boolean allowsOtherProperties() default false;
+}