// Copyright (c) 2011 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.wip.tools.protocolgenerator; import java.util.List; import org.chromium.sdk.internal.protocolparser.FieldLoadStrategy; import org.chromium.sdk.internal.protocolparser.JsonField; import org.chromium.sdk.internal.protocolparser.JsonOptionalField; import org.chromium.sdk.internal.protocolparser.JsonType; /** * Defines schema of WIP metamodel defined in * "http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/inspector/Inspector.json". */ public interface WipMetamodel { @JsonType interface Root { @JsonOptionalField Object version(); List<Domain> domains(); } @JsonType interface Domain { String domain(); @JsonField(loadStrategy=FieldLoadStrategy.LAZY) @JsonOptionalField List<StandaloneType> types(); @JsonField(loadStrategy=FieldLoadStrategy.LAZY) List<Command> commands(); @JsonField(loadStrategy=FieldLoadStrategy.LAZY) @JsonOptionalField List<Event> events(); @JsonOptionalField String description(); @JsonOptionalField Boolean hidden(); } @JsonType interface Command { String name(); @JsonOptionalField List<Parameter> parameters(); @JsonOptionalField List<Parameter> returns(); @JsonOptionalField String description(); @JsonOptionalField Boolean hidden(); } @JsonType interface Parameter { String name(); @JsonOptionalField String type(); @JsonOptionalField ArrayItemType items(); @JsonField(jsonLiteralName="enum") @JsonOptionalField List<String> getEnum(); // This is unparsable. @JsonOptionalField List<ObjectProperty> properties(); @JsonOptionalField @JsonField(jsonLiteralName="$ref") String ref(); @JsonOptionalField Boolean optional(); @JsonOptionalField String description(); @JsonOptionalField Boolean hidden(); } @JsonType interface Event { String name(); @JsonOptionalField List<Parameter> parameters(); @JsonOptionalField String description(); @JsonOptionalField Boolean hidden(); } @JsonType interface StandaloneType { String id(); String description(); String type(); @JsonOptionalField Boolean hidden(); @JsonOptionalField List<ObjectProperty> properties(); @JsonField(jsonLiteralName="enum") @JsonOptionalField List<String> getEnum(); @JsonOptionalField ArrayItemType items(); } @JsonType interface ObjectProperty { String name(); @JsonOptionalField String description(); @JsonOptionalField Boolean optional(); @JsonOptionalField String type(); @JsonOptionalField ArrayItemType items(); @JsonField(jsonLiteralName="$ref") @JsonOptionalField String ref(); @JsonField(jsonLiteralName="enum") @JsonOptionalField List<String> getEnum(); } @JsonType interface ArrayItemType { @JsonOptionalField String description(); @JsonOptionalField Boolean optional(); @JsonOptionalField String type(); @JsonOptionalField ArrayItemType items(); @JsonField(jsonLiteralName="$ref") @JsonOptionalField String ref(); @JsonField(jsonLiteralName="enum") @JsonOptionalField List<String> getEnum(); @JsonOptionalField List<ObjectProperty> properties(); } String STRING_TYPE = "string"; String INTEGER_TYPE = "integer"; String NUMBER_TYPE = "number"; String BOOLEAN_TYPE = "boolean"; String OBJECT_TYPE = "object"; String ARRAY_TYPE = "array"; String UNKNOWN_TYPE = "unknown"; String ANY_TYPE = "any"; }