avrocado 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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