You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by cu...@apache.org on 2013/02/20 00:14:50 UTC

svn commit: r1447958 - in /avro/trunk: CHANGES.txt lang/ruby/lib/avro/io.rb lang/ruby/test/random_data.rb lang/ruby/test/test_io.rb

Author: cutting
Date: Tue Feb 19 23:14:49 2013
New Revision: 1447958

URL: http://svn.apache.org/r1447958
Log:
AVRO-1258. Ruby: Fix handing of RPC errors.  Contributed by Martin Kleppmann.

Modified:
    avro/trunk/CHANGES.txt
    avro/trunk/lang/ruby/lib/avro/io.rb
    avro/trunk/lang/ruby/test/random_data.rb
    avro/trunk/lang/ruby/test/test_io.rb

Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1447958&r1=1447957&r2=1447958&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Tue Feb 19 23:14:49 2013
@@ -91,6 +91,8 @@ Trunk (not yet released)
     AVRO-1257. Ruby: Fix UTF-8 encoding in Ruby 1.9.
     (Martin Kleppmann via cutting)
 
+    AVRO-1258. Ruby: Fix handing of RPC errors.  (Martin Kleppmann via cutting)
+
 Avro 1.7.3 (6 December 2012)
 
   NEW FEATURES

Modified: avro/trunk/lang/ruby/lib/avro/io.rb
URL: http://svn.apache.org/viewvc/avro/trunk/lang/ruby/lib/avro/io.rb?rev=1447958&r1=1447957&r2=1447958&view=diff
==============================================================================
--- avro/trunk/lang/ruby/lib/avro/io.rb (original)
+++ avro/trunk/lang/ruby/lib/avro/io.rb Tue Feb 19 23:14:49 2013
@@ -245,7 +245,7 @@ module Avro
           when 'record'
             return check_props(writers_schema, readers_schema, [:fullname])
           when 'error'
-            return check_props(writers_scheam, readers_schema, [:fullname])
+            return check_props(writers_schema, readers_schema, [:fullname])
           when 'request'
             return true
           when 'fixed'
@@ -315,7 +315,7 @@ module Avro
         when 'array';   read_array(writers_schema, readers_schema, decoder)
         when 'map';     read_map(writers_schema, readers_schema, decoder)
         when 'union';   read_union(writers_schema, readers_schema, decoder)
-        when 'record', 'errors', 'request';  read_record(writers_schema, readers_schema, decoder)
+        when 'record', 'error', 'request';  read_record(writers_schema, readers_schema, decoder)
         else
           raise AvroError, "Cannot read unknown schema type: #{writers_schema.type}"
         end
@@ -443,7 +443,7 @@ module Avro
           return read_map
         when 'union'
           return read_default_value(field_schema.schemas[0], default_value)
-        when 'record'
+        when 'record', 'error'
           read_record = {}
           field_schema.fields.each do |field|
             json_val = default_value[field.name]
@@ -454,7 +454,7 @@ module Avro
           return read_record
         else
           fail_msg = "Unknown type: #{field_schema.type}"
-          raise AvroError(fail_msg)
+          raise AvroError, fail_msg
         end
       end
 
@@ -566,7 +566,7 @@ module Avro
         when 'array';   write_array(writers_schema, datum, encoder)
         when 'map';     write_map(writers_schema, datum, encoder)
         when 'union';   write_union(writers_schema, datum, encoder)
-        when 'record', 'errors', 'request';  write_record(writers_schema, datum, encoder)
+        when 'record', 'error', 'request';  write_record(writers_schema, datum, encoder)
         else
           raise AvroError.new("Unknown type: #{writers_schema.type}")
         end

Modified: avro/trunk/lang/ruby/test/random_data.rb
URL: http://svn.apache.org/viewvc/avro/trunk/lang/ruby/test/random_data.rb?rev=1447958&r1=1447957&r2=1447958&view=diff
==============================================================================
--- avro/trunk/lang/ruby/test/random_data.rb (original)
+++ avro/trunk/lang/ruby/test/random_data.rb Tue Feb 19 23:14:49 2013
@@ -58,7 +58,7 @@ class RandomData
         map[nextdata(Avro::Schema::PrimitiveSchema.new('string'))] = nextdata(schm.values, d+1)
       end
       map
-    when 'record'
+    when 'record', 'error'
       m = {}
       schm.fields.each do |field|
         m[field.name] = nextdata(field.type, d+1)

Modified: avro/trunk/lang/ruby/test/test_io.rb
URL: http://svn.apache.org/viewvc/avro/trunk/lang/ruby/test/test_io.rb?rev=1447958&r1=1447957&r2=1447958&view=diff
==============================================================================
--- avro/trunk/lang/ruby/test/test_io.rb (original)
+++ avro/trunk/lang/ruby/test/test_io.rb Tue Feb 19 23:14:49 2013
@@ -73,6 +73,16 @@ EOS
     check_default(record_schema, '{"f": 11}', {"f" => 11})
   end
 
+  def test_error
+    error_schema = <<EOS
+      {"type": "error",
+       "name": "TestError",
+       "fields": [{"name": "message",
+                   "type": "string"}]}
+EOS
+    check_default(error_schema, '{"message": "boom"}', {"message" => "boom"})
+  end
+
   def test_enum
     enum_schema = '{"type": "enum", "name": "Test","symbols": ["A", "B"]}'
     check_default(enum_schema, '"B"', "B")