Home | History | Annotate | Download | only in js
      1 // Protocol Buffers - Google's data interchange format
      2 // Copyright 2008 Google Inc.  All rights reserved.
      3 // https://developers.google.com/protocol-buffers/
      4 //
      5 // Redistribution and use in source and binary forms, with or without
      6 // modification, are permitted provided that the following conditions are
      7 // met:
      8 //
      9 //     * Redistributions of source code must retain the above copyright
     10 // notice, this list of conditions and the following disclaimer.
     11 //     * Redistributions in binary form must reproduce the above
     12 // copyright notice, this list of conditions and the following disclaimer
     13 // in the documentation and/or other materials provided with the
     14 // distribution.
     15 //     * Neither the name of Google Inc. nor the names of its
     16 // contributors may be used to endorse or promote products derived from
     17 // this software without specific prior written permission.
     18 //
     19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     30 
     31 // Author: mwr (a] google.com (Mark Rawling)
     32 
     33 syntax = "proto2";
     34 
     35 option java_package = "com.google.apps.jspb.proto";
     36 option java_multiple_files = true;
     37 
     38 import "google/protobuf/descriptor.proto";
     39 
     40 package jspb.test;
     41 
     42 message Empty {
     43 }
     44 
     45 enum OuterEnum {
     46   FOO = 1;
     47   BAR = 2;
     48 }
     49 
     50 message EnumContainer {
     51   optional OuterEnum outer_enum = 1;
     52 }
     53 
     54 message Simple1 {
     55   required string a_string = 1;
     56   repeated string a_repeated_string = 2;
     57   optional bool a_boolean = 3;
     58 }
     59 
     60 // A message that differs from Simple1 only by name
     61 message Simple2 {
     62   required string a_string = 1;
     63   repeated string a_repeated_string = 2;
     64 }
     65 
     66 message SpecialCases {
     67   required string normal = 1;
     68   // Examples of Js reserved names that are converted to pb_<name>.
     69   required string default = 2;
     70   required string function = 3;
     71   required string var = 4;
     72 }
     73 
     74 message OptionalFields {
     75   message Nested {
     76     optional int32 an_int = 1;
     77   }
     78   optional string a_string = 1;
     79   required bool a_bool = 2;
     80   optional Nested a_nested_message = 3;
     81   repeated Nested a_repeated_message = 4;
     82   repeated string a_repeated_string = 5;
     83 }
     84 
     85 message HasExtensions {
     86   optional string str1 = 1;
     87   optional string str2 = 2;
     88   optional string str3 = 3;
     89   extensions 10 to max;
     90 }
     91 
     92 message Complex {
     93   message Nested {
     94     required int32 an_int = 2;
     95   }
     96   required string a_string = 1;
     97   required bool an_out_of_order_bool = 9;
     98   optional Nested a_nested_message = 4;
     99   repeated Nested a_repeated_message = 5;
    100   repeated string a_repeated_string = 7;
    101 }
    102 
    103 message OuterMessage {
    104   // Make sure this doesn't conflict with the other Complex message.
    105   message Complex {
    106     optional int32 inner_complex_field = 1;
    107   }
    108 }
    109 
    110 message IsExtension {
    111   extend HasExtensions {
    112     optional IsExtension ext_field = 100;
    113   }
    114   optional string ext1 = 1;
    115 
    116   // Extensions of proto2 Descriptor messages will be ignored.
    117   extend google.protobuf.EnumOptions {
    118     optional string simple_option = 42113038;
    119   }
    120 }
    121 
    122 message IndirectExtension {
    123   extend HasExtensions {
    124     optional Simple1 simple = 101;
    125     optional string str = 102;
    126     repeated string repeated_str = 103;
    127     repeated Simple1 repeated_simple = 104;
    128   }
    129 }
    130 
    131 extend HasExtensions {
    132   optional Simple1 simple1 = 105;
    133 }
    134 
    135 message DefaultValues {
    136   enum Enum {
    137     E1 = 13;
    138     E2 = 77;
    139   }
    140   optional string string_field = 1 [default="default<>\'\"abc"];
    141   optional bool bool_field = 2 [default=true];
    142   optional int64 int_field = 3 [default=11];
    143   optional Enum enum_field = 4 [default=E1];
    144   optional string empty_field = 6 [default=""];
    145   optional bytes bytes_field = 8 [default="moo"]; // Base64 encoding is "bW9v"
    146 }
    147 
    148 message FloatingPointFields {
    149   optional float optional_float_field = 1;
    150   required float required_float_field = 2;
    151   repeated float repeated_float_field = 3;
    152   optional float default_float_field = 4 [default = 2.0];
    153   optional double optional_double_field = 5;
    154   required double required_double_field = 6;
    155   repeated double repeated_double_field = 7;
    156   optional double default_double_field = 8 [default = 2.0];
    157 }
    158 
    159 message TestClone {
    160   optional string str = 1;
    161   optional Simple1 simple1 = 3;
    162   repeated Simple1 simple2 = 5;
    163   optional string unused = 7;
    164   extensions 10 to max;
    165 }
    166 
    167 message CloneExtension {
    168   extend TestClone {
    169     optional CloneExtension ext_field = 100;
    170   }
    171   optional string ext = 2;
    172 }
    173 
    174 message TestGroup {
    175   repeated group RepeatedGroup = 1 {
    176     required string id = 1;
    177     repeated bool some_bool = 2;
    178   }
    179   required group RequiredGroup = 2 {
    180     required string id = 1;
    181   }
    182   optional group OptionalGroup = 3 {
    183     required string id = 1;
    184   }
    185   optional string id = 4;
    186   required Simple2 required_simple = 5;
    187   optional Simple2 optional_simple = 6;
    188 }
    189 
    190 message TestGroup1 {
    191   optional TestGroup.RepeatedGroup group = 1;
    192 }
    193 
    194 message TestReservedNames {
    195   optional int32 extension = 1;
    196   extensions 10 to max;
    197 }
    198 
    199 message TestReservedNamesExtension {
    200   extend TestReservedNames {
    201     optional int32 foo = 10;
    202   }
    203 }
    204 
    205 message TestMessageWithOneof {
    206 
    207   oneof partial_oneof {
    208     string pone = 3;
    209     string pthree = 5;
    210   }
    211 
    212   oneof recursive_oneof {
    213     TestMessageWithOneof rone = 6;
    214     string rtwo = 7;
    215   }
    216 
    217   optional bool normal_field = 8;
    218   repeated string repeated_field = 9;
    219 
    220   oneof default_oneof_a {
    221     int32 aone = 10 [default = 1234];
    222     int32 atwo = 11;
    223   }
    224 
    225   oneof default_oneof_b {
    226     int32 bone = 12;
    227     int32 btwo = 13 [default = 1234];
    228   }
    229 }
    230 
    231