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 +4 -4
- data/lib/avrocado.rb +3 -3
- data/lib/avrocado/deserializer.rb +20 -8
- data/lib/avrocado/serializer.rb +23 -10
- data/lib/avrocado/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2e587806c5053c5a4cb59dd071c4d80c88fcad7
|
4
|
+
data.tar.gz: 1f397b5a86bf38c162b91b5915e83b1925d1e497
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
4
|
-
|
5
|
-
|
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
|
3
|
+
attr_reader :schema
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
@
|
7
|
-
|
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
|
11
|
-
|
21
|
+
def initialize(message, schema)
|
22
|
+
@message = message
|
23
|
+
@schema = schema
|
12
24
|
end
|
13
25
|
|
14
|
-
def
|
15
|
-
JSON.parse
|
26
|
+
def decoded
|
27
|
+
JSON.parse reader.read(nil, decoder).to_s
|
16
28
|
end
|
17
29
|
|
18
30
|
private
|
data/lib/avrocado/serializer.rb
CHANGED
@@ -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
|
21
|
+
def initialize(message, schema)
|
6
22
|
@message = message
|
7
23
|
@schema = schema
|
8
24
|
end
|
9
25
|
|
10
|
-
def
|
11
|
-
|
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(
|
42
|
+
@record ||= Java::Avro::GenericData::Record.new(schema)
|
30
43
|
end
|
31
44
|
|
32
45
|
def output
|
data/lib/avrocado/version.rb
CHANGED