blob: 14418ac93c88d888bf5c63630d0b568c475ddfc5 [file] [log] [blame]
Feng Xiaoe841bac2015-12-11 17:09:20 -08001// 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@google.com (Mark Rawling)
32
33syntax = "proto2";
34
35option java_package = "com.google.apps.jspb.proto";
36option java_multiple_files = true;
37
38import "google/protobuf/descriptor.proto";
39
40package jspb.test;
41
42message Empty {
43}
44
45enum OuterEnum {
46 FOO = 1;
47 BAR = 2;
48}
49
50message EnumContainer {
51 optional OuterEnum outer_enum = 1;
52}
53
54message 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
61message Simple2 {
62 required string a_string = 1;
63 repeated string a_repeated_string = 2;
64}
65
66message 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
74message 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
85message HasExtensions {
86 optional string str1 = 1;
87 optional string str2 = 2;
88 optional string str3 = 3;
89 extensions 10 to max;
90}
91
92message 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
Josh Haberman77af5d02016-02-04 16:11:07 -0800103message 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
Feng Xiaoe841bac2015-12-11 17:09:20 -0800110message 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
122message 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
131extend HasExtensions {
132 optional Simple1 simple1 = 105;
133}
134
135message 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
148message TestClone {
149 optional string str = 1;
150 optional Simple1 simple1 = 3;
151 repeated Simple1 simple2 = 5;
152 optional string unused = 7;
153 extensions 10 to max;
154}
155
156message CloneExtension {
157 extend TestClone {
158 optional CloneExtension ext_field = 100;
159 }
160 optional string ext = 2;
161}
162
163message TestGroup {
164 repeated group RepeatedGroup = 1 {
165 required string id = 1;
166 repeated bool some_bool = 2;
167 }
168 required group RequiredGroup = 2 {
169 required string id = 1;
170 }
171 optional group OptionalGroup = 3 {
172 required string id = 1;
173 }
174 optional string id = 4;
175 required Simple2 required_simple = 5;
176 optional Simple2 optional_simple = 6;
177}
178
179message TestGroup1 {
180 optional TestGroup.RepeatedGroup group = 1;
181}
182
183message TestReservedNames {
184 optional int32 extension = 1;
185 extensions 10 to max;
186}
187
188message TestReservedNamesExtension {
189 extend TestReservedNames {
190 optional int32 foo = 10;
191 }
192}
193
194message TestMessageWithOneof {
195
196 oneof partial_oneof {
197 string pone = 3;
198 string pthree = 5;
199 }
200
201 oneof recursive_oneof {
202 TestMessageWithOneof rone = 6;
203 string rtwo = 7;
204 }
205
206 optional bool normal_field = 8;
207 repeated string repeated_field = 9;
208
209 oneof default_oneof_a {
210 int32 aone = 10 [default = 1234];
211 int32 atwo = 11;
212 }
213
214 oneof default_oneof_b {
215 int32 bone = 12;
216 int32 btwo = 13 [default = 1234];
217 }
218}