You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by ro...@apache.org on 2011/06/14 21:38:28 UTC

svn commit: r1135763 - in /thrift/trunk: lib/java/test/org/apache/thrift/server/ServerTestBase.java lib/js/test/test.html lib/js/thrift.js test/ThriftTest.thrift

Author: roger
Date: Tue Jun 14 19:38:27 2011
New Revision: 1135763

URL: http://svn.apache.org/viewvc?rev=1135763&view=rev
Log:
THRIFT-1202 Malformed JSON for map<string,type> services parameters
Patch: Henrique Mendonca

Modified:
    thrift/trunk/lib/java/test/org/apache/thrift/server/ServerTestBase.java
    thrift/trunk/lib/js/test/test.html
    thrift/trunk/lib/js/thrift.js
    thrift/trunk/test/ThriftTest.thrift

Modified: thrift/trunk/lib/java/test/org/apache/thrift/server/ServerTestBase.java
URL: http://svn.apache.org/viewvc/thrift/trunk/lib/java/test/org/apache/thrift/server/ServerTestBase.java?rev=1135763&r1=1135762&r2=1135763&view=diff
==============================================================================
--- thrift/trunk/lib/java/test/org/apache/thrift/server/ServerTestBase.java (original)
+++ thrift/trunk/lib/java/test/org/apache/thrift/server/ServerTestBase.java Tue Jun 14 19:38:27 2011
@@ -38,13 +38,7 @@ import org.apache.thrift.protocol.TProto
 import org.apache.thrift.transport.TSocket;
 import org.apache.thrift.transport.TTransport;
 
-import thrift.test.Insanity;
-import thrift.test.Numberz;
-import thrift.test.ThriftTest;
-import thrift.test.Xception;
-import thrift.test.Xception2;
-import thrift.test.Xtruct;
-import thrift.test.Xtruct2;
+import thrift.test.*;
 
 public abstract class ServerTestBase extends TestCase {
 
@@ -104,15 +98,14 @@ public abstract class ServerTestBase ext
   
     public Map<Integer,Integer> testMap(Map<Integer,Integer> thing) {
       System.out.print("testMap({");
-      boolean first = true;
-      for (int key : thing.keySet()) {
-        if (first) {
-          first = false;
-        } else {
-          System.out.print(", ");
-        }
-        System.out.print(key + " => " + thing.get(key));
-      }
+      System.out.print(thing);
+      System.out.print("})\n");
+      return thing;
+    }
+
+    public Map<String,String> testStringMap(Map<String,String> thing) {
+      System.out.print("testStringMap({");
+      System.out.print(thing);
       System.out.print("})\n");
       return thing;
     }

Modified: thrift/trunk/lib/js/test/test.html
URL: http://svn.apache.org/viewvc/thrift/trunk/lib/js/test/test.html?rev=1135763&r1=1135762&r2=1135763&view=diff
==============================================================================
--- thrift/trunk/lib/js/test/test.html (original)
+++ thrift/trunk/lib/js/test/test.html Tue Jun 14 19:38:27 2011
@@ -43,15 +43,16 @@
     var protocol  = new Thrift.Protocol(transport);
     var client    = new ThriftTest.ThriftTestClient(protocol);
 
+    // all Languages in UTF-8
+    var stringTest = "Afrikaans, Alemannisch, Aragonés, العربية, مصرى, Asturianu, Aymar aru, Azərbaycan, Башҡорт, Boarisch, Žemaitėška, Беларуская, Беларуская (тарашкевіца), Български, Bamanankan, বাংলা, Brezhoneg, Bosanski, Català, Mìng-dĕ̤ng-ngṳ̄, Нохчийн, Cebuano, ᏣᎳᎩ, Česky, Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ, Чӑвашла, Cymraeg, Dansk, Zazaki, ދިވެހިބަސް, Ελληνικά, Emiliàn e rumagnòl, English, Esperanto, Español, Eesti, Euskara, فارسی, Suomi, Võro, Føroyskt, Français, Arpetan, Furlan, Frysk, Gaeilge, 贛語, Gàidhlig,
  Galego, Avañe'ẽ, ગુજરાતી, Gaelg, עברית, हिन्दी, Fiji Hindi, Hrvatski, Kreyòl ayisyen, Magyar, Հայերեն, Interlingua, Bahasa Indonesia, Ilokano, Ido, Íslenska, Italiano, 日本語, Lojban, Basa Jawa, ქართული, Kongo, Kalaallisut, ಕನ್ನಡ, 한국어, Къарачай-Малкъар, Ripoarisch, Kurdî, Коми, Kernewek, Кыргызча, Latina, Ladino, Lëtzebuergesch, Limburgs, Lingála, ລາວ, Lietuvių, Latviešu, Basa Banyumasan, Malagasy, Македонски, മലയാളം, मराठी, Bahasa Melayu, مازِرونی, Nnapulitano, Nedersaksisch, नेपाल भाषा, Nederlands, ‪Norsk (ny
 norsk)‬, ‪Norsk (bokmål)‬, Nouormand, Diné bizaad, Occitan, Иронау, Papiamentu, Deitsch, Norfuk / Pitkern, Polski, پنجابی, پښتو, Português, Runa Simi, Rumantsch, Romani, Română, Русский, Саха тыла, Sardu, Sicilianu, Scots, Sámegiella, Simple English, Slovenčina, Slovenščina, Српски / Srpski, Seeltersk, Svenska, Kiswahili, தமிழ், తెలుగు, Тоҷикӣ, ไทย, Türkmençe, Tagalog, Türkçe, Татарча/Tatarça, Українська, اردو, Tiếng Việt, Volapük, Walon, Winaray, 吴语, isiXhosa, ייִדיש, Yorùbá, Zeêuws, 中文, Bân-lâm-gú, 粵語";
+
 
     module("Base Types");
-    
+
     test("Void", function() {
       equals(client.testVoid(), undefined);
     });
     test("String", function() {
-      // all Languages in UTF-8
-      var stringTest = "Afrikaans, Alemannisch, Aragonés, العربية, مصرى, Asturianu, Aymar aru, Azərbaycan, Башҡорт, Boarisch, Žemaitėška, Беларуская, Беларуская (тарашкевіца), Български, Bamanankan, বাংলা, Brezhoneg, Bosanski, Català, Mìng-dĕ̤ng-ngṳ̄, Нохчийн, Cebuano, ᏣᎳᎩ, Česky, Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ, Чӑвашла, Cymraeg, Dansk, Zazaki, ދިވެހިބަސް, Ελληνικά, Emiliàn e rumagnòl, English, Esperanto, Español, Eesti, Euskara, فارسی, Suomi, Võro, Føroyskt, Français, Arpetan, Furlan, Frysk, Gaeilge, 贛語, Gàidhli
 g, Galego, Avañe'ẽ, ગુજરાતી, Gaelg, עברית, हिन्दी, Fiji Hindi, Hrvatski, Kreyòl ayisyen, Magyar, Հայերեն, Interlingua, Bahasa Indonesia, Ilokano, Ido, Íslenska, Italiano, 日本語, Lojban, Basa Jawa, ქართული, Kongo, Kalaallisut, ಕನ್ನಡ, 한국어, Къарачай-Малкъар, Ripoarisch, Kurdî, Коми, Kernewek, Кыргызча, Latina, Ladino, Lëtzebuergesch, Limburgs, Lingála, ລາວ, Lietuvių, Latviešu, Basa Banyumasan, Malagasy, Македонски, മലയാളം, मराठी, Bahasa Melayu, مازِرونی, Nnapulitano, Nedersaksisch, नेपाल भाषा, Nederlands, ‪Norsk (
 nynorsk)‬, ‪Norsk (bokmål)‬, Nouormand, Diné bizaad, Occitan, Иронау, Papiamentu, Deitsch, Norfuk / Pitkern, Polski, پنجابی, پښتو, Português, Runa Simi, Rumantsch, Romani, Română, Русский, Саха тыла, Sardu, Sicilianu, Scots, Sámegiella, Simple English, Slovenčina, Slovenščina, Српски / Srpski, Seeltersk, Svenska, Kiswahili, தமிழ், తెలుగు, Тоҷикӣ, ไทย, Türkmençe, Tagalog, Türkçe, Татарча/Tatarça, Українська, اردو, Tiếng Việt, Volapük, Walon, Winaray, 吴语, isiXhosa, ייִדיש, Yorùbá, Zeêuws, 中文, Bân-lâm-gú, 粵語";
       equals(client.testString(stringTest), stringTest);
 
       var specialCharacters = 'quote: \" backslash:' +
@@ -117,20 +118,30 @@
       
       equals(JSON.stringify(nestTestOutput), JSON.stringify(nestTestInput))
     });
-    
+
     test("Map", function() {
       var mapTestInput = {7:77, 8:88, 9:99};
 
       var mapTestOutput = client.testMap(mapTestInput)
-      
+
       for (var key in mapTestOutput) {
         equals(mapTestOutput[key], mapTestInput[key]);
       }
+    });
 
-      //HACK: content is OK but Java server returns JSON items in the wrong order {"8":88,"9":99,"7":77}
-      //equals(JSON.stringify(mapTestOutput), JSON.stringify(mapTestInput))
+    test("StringMap", function() {
+      var mapTestInput = {
+        "a":"123", "a b":"with spaces ", "same":"same", "0":"numeric key",
+        "longValue":stringTest, stringTest:"long key"
+      };
+
+      var mapTestOutput = client.testStringMap(mapTestInput)
+
+      for (var key in mapTestOutput) {
+        equals(mapTestOutput[key], mapTestInput[key]);
+      }
     });
-    
+
     test("Set", function() {
       var setTestInput = new Array(1,2,3)
       ok(client.testSet(setTestInput), setTestInput);

Modified: thrift/trunk/lib/js/thrift.js
URL: http://svn.apache.org/viewvc/thrift/trunk/lib/js/thrift.js?rev=1135763&r1=1135762&r2=1135763&view=diff
==============================================================================
--- thrift/trunk/lib/js/thrift.js (original)
+++ thrift/trunk/lib/js/thrift.js Tue Jun 14 19:38:27 2011
@@ -460,7 +460,8 @@ Thrift.Protocol.prototype = {
                 map = ',' + map;
             }
 
-            map = '"' + k + '":' + v + map;
+            if ( ! isNaN(k)) { k = '"' + k + '"'; } //json "keys" need to be strings
+            map = k + ':' + v + map;
         }
         map = '{' + map;
 

Modified: thrift/trunk/test/ThriftTest.thrift
URL: http://svn.apache.org/viewvc/thrift/trunk/test/ThriftTest.thrift?rev=1135763&r1=1135762&r2=1135763&view=diff
==============================================================================
--- thrift/trunk/test/ThriftTest.thrift (original)
+++ thrift/trunk/test/ThriftTest.thrift Tue Jun 14 19:38:27 2011
@@ -129,6 +129,7 @@ service ThriftTest
   Xtruct       testStruct(1: Xtruct thing),
   Xtruct2      testNest(1: Xtruct2 thing),
   map<i32,i32> testMap(1: map<i32,i32> thing),
+  map<string,string> testStringMap(1: map<string,string> thing),
   set<i32>     testSet(1: set<i32> thing),
   list<i32>    testList(1: list<i32> thing),
   Numberz      testEnum(1: Numberz thing),