eventq_base 1.15.0 → 1.16.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: f980a0a7d00cd7ae3afde6b14bbf1d0ac2458532
4
- data.tar.gz: aa0195339109ced497fdb7ba64be7d11e2eb0c8f
3
+ metadata.gz: c7bc52253b5e75c043fcdb12327c7ebdda89d225
4
+ data.tar.gz: 80c4aec87566f6a76c0968fd1bc928764408170a
5
5
  SHA512:
6
- metadata.gz: ba37017768a9ce6ebd23949b28d573e798e531f8783108b7f5a29ba7c69f3991dc803d0216810615825269d794adec1533758c2788568cd3f4de705daa1fd84e
7
- data.tar.gz: 5d38ccd26ac916312661160e8ed99ffd1ed4fdfd195b87e674b83e4cca7c24d31bec8dc1109352a049d989c7fa97bf5c42c819acefe6b423f4d793845081a865
6
+ metadata.gz: 98ba8648aba395b3cf0d0e2ee8901315d410fc0e201a6a6d194fcd2cf895e96ee6011388aca8d9d6c4400b6ba1c4cc41d1754cda3f7a2cd8fd777fdff74e76f9
7
+ data.tar.gz: 06072ad359b209d8e31d4f3b5ce420ae8356e979807b7563324e58ffc1ed0dd30ded3aa42f0e6bf0ed2758a20912e6c034829505c234b42e7f38af0f0a8ca868
@@ -2,6 +2,7 @@ require_relative 'serialization_providers/json_serialization_provider'
2
2
  unless RUBY_PLATFORM =~ /java/
3
3
  require_relative 'serialization_providers/oj_serialization_provider'
4
4
  end
5
+ require_relative 'serialization_providers/jruby'
5
6
  require_relative 'serialization_providers/binary_serialization_provider'
6
7
 
7
8
  module EventQ
@@ -14,7 +15,9 @@ module EventQ
14
15
  class Manager
15
16
  def initialize
16
17
  @providers = {}
17
- unless RUBY_PLATFORM =~ /java/
18
+ if RUBY_PLATFORM =~ /java/
19
+ @providers[OJ_PROVIDER] = EventQ::SerializationProviders::JRuby::OjSerializationProvider
20
+ else
18
21
  @providers[OJ_PROVIDER] = EventQ::SerializationProviders::OjSerializationProvider
19
22
  end
20
23
  @providers[JSON_PROVIDER] = EventQ::SerializationProviders::JsonSerializationProvider
@@ -23,11 +26,11 @@ module EventQ
23
26
 
24
27
  def get_provider(provider_type)
25
28
  provider = @providers[provider_type]
26
- if provider == nil
29
+ if provider.nil?
27
30
  raise "Invalid provider type specified: #{provider_type}"
28
31
  end
29
32
  return provider.new
30
33
  end
31
34
  end
32
35
  end
33
- end
36
+ end
@@ -0,0 +1,2 @@
1
+ require_relative 'jruby/oj'
2
+ require_relative 'jruby/oj_serialization_provider'
@@ -0,0 +1,10 @@
1
+ require_relative 'oj/attribute_writer'
2
+ require_relative 'oj/class_writer'
3
+ require_relative 'oj/rational_writer'
4
+ require_relative 'oj/date_time_writer'
5
+ require_relative 'oj/date_writer'
6
+ require_relative 'oj/time_writer'
7
+ require_relative 'oj/array_writer'
8
+ require_relative 'oj/hash_writer'
9
+ require_relative 'oj/value_writer'
10
+ require_relative 'oj/serializer'
@@ -0,0 +1,20 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class ArrayWriter < AttributeWriter
6
+ def valid?(obj)
7
+ obj.is_a?(Array)
8
+ end
9
+ def exec(obj)
10
+ array = []
11
+ obj.each do |a|
12
+ array << AttributeWriter.exec(a)
13
+ end
14
+ array
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,24 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class AttributeWriter
6
+
7
+ def self.exec(obj)
8
+ aw = descendants.detect { |a| a.new.valid?(obj) } || ClassWriter
9
+ aw.new.exec(obj)
10
+ end
11
+
12
+ def self.descendants
13
+ descendants = []
14
+ ObjectSpace.each_object(singleton_class) do |k|
15
+ next if k.singleton_class?
16
+ descendants.unshift k unless k == self
17
+ end
18
+ descendants
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class ClassWriter < AttributeWriter
6
+ def valid?(obj)
7
+ false
8
+ end
9
+ def exec(obj)
10
+ hash = { '^o': obj.class }
11
+ obj.instance_variables.each do |key|
12
+ hash[key[1..-1]] = AttributeWriter.exec(obj.instance_variable_get(key))
13
+ end
14
+ hash
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,33 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class DateTimeWriter < AttributeWriter
6
+ def valid?(obj)
7
+ obj.is_a?(DateTime)
8
+ end
9
+ def exec(obj)
10
+ seconds = obj.strftime('%S%N')
11
+ d = 1_000_000_000
12
+ if seconds.start_with?('0')
13
+ seconds[0] = ''
14
+ d = 100_000_000
15
+ end
16
+
17
+ {
18
+ '^O': 'DateTime',
19
+ year: obj.year,
20
+ month: obj.month,
21
+ day: obj.day,
22
+ hour: obj.hour,
23
+ min: obj.min,
24
+ sec: RationalWriter.new.exec(Rational(Integer(seconds), d)),
25
+ offset: RationalWriter.new.exec(obj.offset),
26
+ start: obj.start
27
+ }
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,22 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class DateWriter < AttributeWriter
6
+ def valid?(obj)
7
+ obj.is_a?(Date) && !obj.is_a?(DateTime)
8
+ end
9
+ def exec(obj)
10
+ {
11
+ '^O': 'Date',
12
+ year: obj.year,
13
+ month: obj.month,
14
+ day: obj.day,
15
+ start: obj.start
16
+ }
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class HashWriter < AttributeWriter
6
+ def valid?(obj)
7
+ obj.is_a?(Hash)
8
+ end
9
+ def exec(obj)
10
+ obj.each do |key, value|
11
+ obj[key] = AttributeWriter.exec(value)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class RationalWriter < AttributeWriter
6
+ def valid?(obj)
7
+ obj.is_a?(Rational)
8
+ end
9
+ def exec(obj)
10
+ {
11
+ '^O': 'Rational',
12
+ numerator: obj.numerator,
13
+ denominator: obj.denominator
14
+ }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class Serializer
6
+ def dump(obj)
7
+ JSON.dump(AttributeWriter.exec(obj))
8
+ end
9
+
10
+ def load(json)
11
+ raise NotImplementedError.new("[#{self.class}] - #load method has not yet been implemented.")
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class TimeWriter < AttributeWriter
6
+ def valid?(obj)
7
+ obj.is_a?(Time)
8
+ end
9
+ def exec(obj)
10
+ {
11
+ '^t': obj.to_f
12
+ }
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ module Oj
5
+ class ValueWriter < AttributeWriter
6
+ def valid?(obj)
7
+ obj.is_a?(String) || obj.is_a?(Integer) || obj.is_a?(Float)
8
+ end
9
+ def exec(obj)
10
+ obj
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ module EventQ
2
+ module SerializationProviders
3
+ module JRuby
4
+ class OjSerializationProvider
5
+ def initialize
6
+ @json_serializer = EventQ::SerializationProviders::JsonSerializationProvider.new
7
+ @oj_serializer = Oj::Serializer.new
8
+ end
9
+
10
+ def serialize(object)
11
+ @oj_serializer.dump(object)
12
+ end
13
+
14
+ def deserialize(json)
15
+ begin
16
+ return @oj_serializer.load(json)
17
+ rescue
18
+ EventQ.log(:debug, "[#{self.class}] - Failed to deserialize using Oj, falling back to JsonSerializationProvider.")
19
+ return @json_serializer.deserialize(json)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module EventqBase
2
- VERSION = "1.15.0"
2
+ VERSION = "1.16.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventq_base
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.0
4
+ version: 1.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - vaughanbrittonsage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-26 00:00:00.000000000 Z
11
+ date: 2018-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -134,6 +134,19 @@ files:
134
134
  - lib/eventq_base/queue_worker_contract.rb
135
135
  - lib/eventq_base/serialization_providers.rb
136
136
  - lib/eventq_base/serialization_providers/binary_serialization_provider.rb
137
+ - lib/eventq_base/serialization_providers/jruby.rb
138
+ - lib/eventq_base/serialization_providers/jruby/oj.rb
139
+ - lib/eventq_base/serialization_providers/jruby/oj/array_writer.rb
140
+ - lib/eventq_base/serialization_providers/jruby/oj/attribute_writer.rb
141
+ - lib/eventq_base/serialization_providers/jruby/oj/class_writer.rb
142
+ - lib/eventq_base/serialization_providers/jruby/oj/date_time_writer.rb
143
+ - lib/eventq_base/serialization_providers/jruby/oj/date_writer.rb
144
+ - lib/eventq_base/serialization_providers/jruby/oj/hash_writer.rb
145
+ - lib/eventq_base/serialization_providers/jruby/oj/rational_writer.rb
146
+ - lib/eventq_base/serialization_providers/jruby/oj/serializer.rb
147
+ - lib/eventq_base/serialization_providers/jruby/oj/time_writer.rb
148
+ - lib/eventq_base/serialization_providers/jruby/oj/value_writer.rb
149
+ - lib/eventq_base/serialization_providers/jruby/oj_serialization_provider.rb
137
150
  - lib/eventq_base/serialization_providers/json_serialization_provider.rb
138
151
  - lib/eventq_base/serialization_providers/oj_serialization_provider.rb
139
152
  - lib/eventq_base/signature_providers.rb