blob: 52f022818d83115cb1d8c1992b5f424f981091b7 [file] [log] [blame]
syntax = "proto3";
import "google/protobuf/descriptor.proto";
package test;
//Simple int32 based options (both single and repeated)
//for fields and messages
extend google.protobuf.FieldOptions {
repeated int32 fo_rep_int = 50000;
int32 fo_single_int = 50001;
}
extend google.protobuf.MessageOptions {
repeated int32 mo_rep_int = 50000;
int32 mo_single_int = 50001;
}
message TestFieldOptionsInt {
string field1 = 2 [(fo_rep_int) = 1, (fo_rep_int) = 2];
string field2 = 1 [(fo_single_int) = 3];
}
message TestMessageOptionsInt {
option (mo_rep_int) = 1;
option (mo_rep_int) = 2;
option (mo_single_int) = 3;
}
//Message based options including nested sub messages (both single and repeated)
//for fields and messages
message Msg {
int32 value = 1;
repeated int32 rep_value = 2;
SubMsg nested = 3;
repeated SubMsg rep_nested = 4;
}
message SubMsg {
string value = 1;
SubMsg nested = 2;
}
extend google.protobuf.FieldOptions {
repeated Msg fo_rep_msg = 50002;
Msg fo_single_msg = 50003;
}
extend google.protobuf.MessageOptions {
repeated Msg mo_rep_msg = 50002;
Msg mo_single_msg = 50003;
}
extend google.protobuf.MethodOptions {
repeated Msg method_rep_msg = 50002;
Msg method_single_msg = 50003;
}
message TestFieldOptionsMsg {
string field1 = 1 [(fo_rep_msg) = {value: 1 rep_value: 2 rep_value: 3}, (fo_rep_msg) = {value: 4 rep_value: 5 rep_value: 6}];
string field2 = 2 [(fo_single_msg).value = 7, (fo_single_msg).rep_value = 8, (fo_single_msg).rep_value = 9];
}
message TestMessageOptionsMsg {
option (mo_rep_msg) = {
value: 1
rep_value: 2
rep_value: 3
};
option (mo_rep_msg) = {
value: 4
rep_value: 5
rep_value: 6
};
option (mo_rep_msg) = {
value: 5
rep_value: [ 7, 8 ]
};
option (mo_single_msg).value = 7;
option (mo_single_msg).rep_value = 8;
option (mo_single_msg).rep_value = 9;
}
message TestFieldOptionsNested {
string field1 = 1 [(fo_rep_msg) = {value: 1 nested { nested {value: "x"} } rep_nested { value: "y"} rep_nested { value: "z" } rep_value: 3}, (fo_rep_msg) = { nested { value: "w" }}];
string field2 = 2 [(fo_single_msg).nested.value = "x", (fo_single_msg).rep_nested = {value : "x"}, (fo_single_msg).rep_nested = {value : "y"}];
string field3 = 3 [(fo_single_msg).nested = {value: "x" nested {nested{value: "y"}}}];
}
message TestMessageOptionsNested {
option (mo_rep_msg) = {
value: 1
nested {
nested {
value: "x"
}
}
rep_nested {
value: "y"
}
rep_nested {
value: "z"
}
rep_value: 3
};
option (mo_rep_msg) = {
nested {
value: "w"
}
};
option (mo_single_msg).nested.value = "x";
option (mo_single_msg).rep_nested = {value : "x" nested {nested{value: "y"}}};
option (mo_single_msg).rep_nested = {value : "y"};
}
service TestOptionsService {
rpc TestOptionsRpc(Msg) returns (Msg) {
option (method_rep_msg) = {
value: 1
nested {
nested {
value: "x"
}
}
rep_nested {
value: "y"
}
rep_nested {
value: "z"
}
rep_value: 3
};
option (method_rep_msg) = {
nested {
value: "w"
}
};
option (method_single_msg).nested.value = "x";
option (method_single_msg).rep_nested = {value : "x" nested {nested{value: "y"}}};
option (method_single_msg).rep_nested = {value : "y"};
}
}