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 // Proto to test proto3 maps. 32 syntax = "proto3"; 33 34 package google.protobuf.testing.maps; 35 option java_package = "com.google.protobuf.testing.maps"; 36 37 message MapIn { 38 string other = 1; 39 repeated string things = 2; 40 map<string, string> map_input = 3; 41 } 42 43 message MapOut { 44 map<string, MapM> map1 = 1; 45 map<string, MapOut> map2 = 2; 46 map<int32, string> map3 = 3; 47 map<bool, string> map4 = 5; 48 string bar = 4; 49 } 50 51 // A message with exactly the same wire representation as MapOut, but using 52 // repeated message fields instead of map fields. We use this message to test 53 // the wire-format compatibility of the JSON transcoder (e.g., whether it 54 // handles missing keys correctly). 55 message MapOutWireFormat { 56 message Map1Entry { 57 string key = 1; 58 MapM value = 2; 59 } 60 repeated Map1Entry map1 = 1; 61 message Map2Entry { 62 string key = 1; 63 MapOut value = 2; 64 } 65 repeated Map2Entry map2 = 2; 66 message Map3Entry { 67 int32 key = 1; 68 string value = 2; 69 } 70 repeated Map3Entry map3 = 3; 71 message Map4Entry { 72 bool key = 1; 73 string value = 2; 74 } 75 repeated Map4Entry map4 = 5; 76 string bar = 4; 77 } 78 79 message MapM { 80 string foo = 1; 81 } 82 83 service TestService { 84 rpc Call1(MapIn) returns (MapOut); 85 rpc Call2(MapIn) returns (MapOut); 86 } 87