avrocado 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8a9110e9f327ce49a1742b78c437a44e6290945
4
- data.tar.gz: 1bcdb8c2ebd918e32d7581b5eac834e8bd30288b
3
+ metadata.gz: c2e587806c5053c5a4cb59dd071c4d80c88fcad7
4
+ data.tar.gz: 1f397b5a86bf38c162b91b5915e83b1925d1e497
5
5
  SHA512:
6
- metadata.gz: 1f27e87683d9d96f509adb04c0c18c0969273f55a6c705a267085f8462af67a19ac789c9c3f44dc08ae0cca572cde9f46a3cd1a9d01242d1bfe33cf7d2ff0508
7
- data.tar.gz: 74565a9492286cec2bb8156aa9756b5c208279cbff4993c5b641d4300b19b7500582d586a8c746d8c6a4179363eb928344606b04e80bf9c0b70a6ea6ceba4800
6
+ metadata.gz: b1ddcd675c1ff035ed5ce5cf9b01ee84b34ba4578bc3dd660d3c8401fb19bf1c115f61b29881acca62681cae2283d81784fc317f0f8d2b5b11755f9bf18a15b6
7
+ data.tar.gz: efcb08947b795dd6fda500b60c205e2f026bb3f8b92f318ad4a1455b9cfd8d599e0d87673e5fd9fe468d692f7cb87c9dbfaca4bef8b207709a919911e186fd4c
data/lib/avrocado.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  require 'java'
2
2
  require 'json'
3
- require './vendor/java/jackson-core-asl'
4
- require './vendor/java/jackson-mapper-asl'
5
- require './vendor/java/avro'
3
+ require_relative '../vendor/java/jackson-core-asl'
4
+ require_relative '../vendor/java/jackson-mapper-asl'
5
+ require_relative '../vendor/java/avro'
6
6
 
7
7
  require 'avrocado/schema'
8
8
  require 'avrocado/serializer'
@@ -1,18 +1,30 @@
1
1
  module Avrocado
2
2
  class Deserializer
3
- attr_reader :schema, :message
3
+ attr_reader :schema
4
4
 
5
- def initialize(message, schema = Schema.parse)
6
- @message = message
7
- @schema = schema
5
+ def initialize(schema)
6
+ @schema = schema
7
+ end
8
+
9
+ def self.deserialize(message, schema)
10
+ new(schema).deserialize(message)
11
+ end
12
+
13
+ def deserialize(message)
14
+ Avrocado::Decoder.new(message, schema).decoded
8
15
  end
16
+ end
17
+
18
+ class Decoder
19
+ attr_reader :message, :schema
9
20
 
10
- def self.deserialize(message)
11
- new(message).deserialize
21
+ def initialize(message, schema)
22
+ @message = message
23
+ @schema = schema
12
24
  end
13
25
 
14
- def deserialize
15
- JSON.parse(reader.read(nil, decoder).to_s)
26
+ def decoded
27
+ JSON.parse reader.read(nil, decoder).to_s
16
28
  end
17
29
 
18
30
  private
@@ -1,20 +1,30 @@
1
1
  module Avrocado
2
2
  class Serializer
3
+ attr_reader :schema
4
+
5
+ def initialize(schema)
6
+ @schema = schema
7
+ end
8
+
9
+ def self.serialize(message, schema)
10
+ new(schema).serialize(message)
11
+ end
12
+
13
+ def serialize(message)
14
+ Avrocado::Encoder.new(message, schema).encoded
15
+ end
16
+ end
17
+
18
+ class Encoder
3
19
  attr_reader :message, :schema
4
20
 
5
- def initialize(message, schema = Schema.parse)
21
+ def initialize(message, schema)
6
22
  @message = message
7
23
  @schema = schema
8
24
  end
9
25
 
10
- def self.serialize(message)
11
- new(message).serialize
12
- end
13
-
14
- def serialize
15
- message.each do |field, value|
16
- record.put(field.to_s, value)
17
- end
26
+ def encoded
27
+ message.each { |field, value| record.put(field.to_s, value) }
18
28
 
19
29
  writer.write(record, encoder)
20
30
 
@@ -25,8 +35,11 @@ module Avrocado
25
35
 
26
36
  private
27
37
 
38
+ # TODO: explore whether we can reuse the Java-based objects below
39
+ # if so, we can reuse an instance of a Serializer
40
+
28
41
  def record
29
- @record ||= Java::Avro::GenericData::Record.new(Avrocado::Schema.parse)
42
+ @record ||= Java::Avro::GenericData::Record.new(schema)
30
43
  end
31
44
 
32
45
  def output
@@ -1,3 +1,3 @@
1
1
  module Avrocado
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avrocado
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Allen