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. 32syntax = "proto3"; 33 34package google.protobuf.testing.maps; 35option java_package = "com.google.protobuf.testing.maps"; 36 37message MapIn { 38 string other = 1; 39 repeated string things = 2; 40 map<string, string> map_input = 3; 41} 42 43message 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). 55message 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 79message MapM { 80 string foo = 1; 81} 82 83service TestService { 84 rpc Call1(MapIn) returns (MapOut); 85 rpc Call2(MapIn) returns (MapOut); 86} 87