hessian2 2.0.3 → 2.0.5
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/README.md +2 -0
- data/hessian2.gemspec +0 -1
- data/lib/hessian2/class_wrapper.rb +9 -0
- data/lib/hessian2/struct_wrapper.rb +3 -0
- data/lib/hessian2/version.rb +1 -1
- data/lib/hessian2/writer.rb +10 -5
- metadata +10 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c29b58ed9dcdc79f7e81a7dc8e204f9846fbd8ce
|
4
|
+
data.tar.gz: 868e420d3e2193979cac16c54fe1e8a72f0c3da8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b34738c7d43f403b072ba23ee182bfefe680da6f6534b036a18329ecbd8f916c62cec834d2c4322bc169f4d4598dc32f753821d48cc3f3d3c6a776e42766da9c
|
7
|
+
data.tar.gz: ac41f701ff5b2cedd999be07986f8a4e58740a1fe9a3cd64e28f37d955d09943b328e2faf884797d85610a2600beea011be58cb8f6502899f4a836bdb5ca7e7e
|
data/README.md
CHANGED
@@ -4,6 +4,8 @@ like json, additionally, 麻绳2 parse your object as a struct.
|
|
4
4
|
|
5
5
|
hessian2 implements hessian 2.0 protocol. look [web services protocol](http://hessian.caucho.com/doc/hessian-ws.html) and [serialization protocol](http://hessian.caucho.com/doc/hessian-serialization.html).
|
6
6
|
|
7
|
+
Sequel::Mysql2::Dataset and ActiveRecord::Relation are also okey.
|
8
|
+
|
7
9
|
## comparing
|
8
10
|
|
9
11
|
yajl-ruby: json, fast.
|
data/hessian2.gemspec
CHANGED
@@ -15,6 +15,8 @@ module Hessian2
|
|
15
15
|
else
|
16
16
|
fields = if sample.is_a?(Hash)
|
17
17
|
sample.keys.map{|k| k.to_sym }
|
18
|
+
elsif sample.instance_variable_get(:@values).is_a?(Hash)
|
19
|
+
sample.values.keys.map{|k| k }
|
18
20
|
elsif sample.instance_variable_get(:@attributes).is_a?(Hash)
|
19
21
|
sample.attributes.keys.map{|k| k.to_sym }
|
20
22
|
elsif sample.is_a?(ClassWrapper)
|
@@ -32,6 +34,8 @@ module Hessian2
|
|
32
34
|
nil
|
33
35
|
elsif obj.is_a?(Hash)
|
34
36
|
fields.map{|f| obj[f] || obj[f.to_s] }
|
37
|
+
elsif obj.instance_variable_get(:@values).is_a?(Hash)
|
38
|
+
fields.map{|f| obj.values[f] }
|
35
39
|
elsif obj.instance_variable_get(:@attributes).is_a?(Hash)
|
36
40
|
fields.map{|f| obj.attributes[f.to_s] }
|
37
41
|
elsif obj.is_a?(ClassWrapper)
|
@@ -53,6 +57,11 @@ module Hessian2
|
|
53
57
|
fields << k.to_sym
|
54
58
|
values << v
|
55
59
|
end
|
60
|
+
elsif object.instance_variable_get(:@values).is_a?(Hash)
|
61
|
+
object.values.each do |k, v|
|
62
|
+
fields << k
|
63
|
+
values << v
|
64
|
+
end
|
56
65
|
elsif object.instance_variable_get(:@attributes).is_a?(Hash)
|
57
66
|
object.attributes.each do |k, v|
|
58
67
|
fields << k.to_sym
|
@@ -41,6 +41,9 @@ module Hessian2
|
|
41
41
|
values = []
|
42
42
|
if object.is_a?(Hash)
|
43
43
|
members.each{|f| values << (object[f] || object[f.to_s]) }
|
44
|
+
elsif object.instance_variable_get(:@values).is_a?(Hash)
|
45
|
+
attrs = object.values
|
46
|
+
members.each{|f| values << attrs[f] }
|
44
47
|
elsif object.instance_variable_get(:@attributes).is_a?(Hash)
|
45
48
|
attrs = object.attributes
|
46
49
|
members.each{|f| values << attrs[f.to_s] }
|
data/lib/hessian2/version.rb
CHANGED
data/lib/hessian2/writer.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'hessian2/constants'
|
2
2
|
require 'bigdecimal'
|
3
|
-
require 'active_record'
|
4
3
|
|
5
4
|
module Hessian2
|
6
5
|
module Writer
|
@@ -53,7 +52,7 @@ module Hessian2
|
|
53
52
|
write_float(val)
|
54
53
|
when Fixnum
|
55
54
|
write_int(val)
|
56
|
-
when Array
|
55
|
+
when Array
|
57
56
|
write_array(val, refs, crefs, trefs)
|
58
57
|
when Bignum
|
59
58
|
if val >= -0x80_000_000 && val <= 0x7f_fff_fff # four octet longs
|
@@ -102,7 +101,7 @@ module Hessian2
|
|
102
101
|
return write_ref(idx) if idx
|
103
102
|
|
104
103
|
refs[arr.object_id] = refs.size
|
105
|
-
len = arr.
|
104
|
+
len = arr.count
|
106
105
|
if len <= LIST_DIRECT_MAX # [x78-7f] value*
|
107
106
|
str = [ BC_LIST_DIRECT_UNTYPED + len ].pack('C')
|
108
107
|
else # x58 int value*
|
@@ -287,6 +286,8 @@ module Hessian2
|
|
287
286
|
def write_object(object, refs = {}, crefs = {}, trefs = {})
|
288
287
|
return write_nil unless object
|
289
288
|
|
289
|
+
return write_array(object, refs, crefs, trefs) if object.respond_to?(:count) && (object.respond_to?(:sql) || object.respond_to?(:to_sql))
|
290
|
+
|
290
291
|
idx = refs[object.object_id]
|
291
292
|
return write_ref(idx) if idx
|
292
293
|
|
@@ -469,8 +470,10 @@ module Hessian2
|
|
469
470
|
def get_fields(object)
|
470
471
|
fields = if object.is_a?(Hash)
|
471
472
|
object.keys.map{|k| k.to_sym }
|
473
|
+
elsif object.instance_variable_get(:@values).is_a?(Hash)
|
474
|
+
object.values.keys
|
472
475
|
elsif object.instance_variable_get(:@attributes).is_a?(Hash)
|
473
|
-
object.attributes.keys
|
476
|
+
object.attributes.keys
|
474
477
|
else
|
475
478
|
object.instance_variables.map{|k| k[1..-1].to_sym }
|
476
479
|
end
|
@@ -486,8 +489,10 @@ module Hessian2
|
|
486
489
|
|
487
490
|
vstr = if object.is_a?(Hash)
|
488
491
|
fields.map{|f| write(object[f] || object[f.to_s], refs, crefs, trefs) }.join
|
492
|
+
elsif object.instance_variable_get(:@values).is_a?(Hash)
|
493
|
+
fields.map{|f| write(object.values[f], refs, crefs, trefs) }.join
|
489
494
|
elsif object.instance_variable_get(:@attributes).is_a?(Hash)
|
490
|
-
fields.map{|f| write(object.attributes[f
|
495
|
+
fields.map{|f| write(object.attributes[f], refs, crefs, trefs) }.join
|
491
496
|
else
|
492
497
|
fields.map{|f| write(object.instance_variable_get(f.to_s.prepend('@')), refs, crefs, trefs) }.join
|
493
498
|
end
|
metadata
CHANGED
@@ -1,55 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hessian2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- takafan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: activerecord
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '>='
|
24
|
+
- - ">="
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: bigdecimal
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- -
|
31
|
+
- - ">="
|
46
32
|
- !ruby/object:Gem::Version
|
47
33
|
version: '0'
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- -
|
38
|
+
- - ">="
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '0'
|
55
41
|
description: like json, additionally, 麻绳2 parse your object as a struct.
|
@@ -59,7 +45,7 @@ executables: []
|
|
59
45
|
extensions: []
|
60
46
|
extra_rdoc_files: []
|
61
47
|
files:
|
62
|
-
- .gitignore
|
48
|
+
- ".gitignore"
|
63
49
|
- Gemfile
|
64
50
|
- LICENSE.txt
|
65
51
|
- README.md
|
@@ -129,17 +115,17 @@ require_paths:
|
|
129
115
|
- lib
|
130
116
|
required_ruby_version: !ruby/object:Gem::Requirement
|
131
117
|
requirements:
|
132
|
-
- -
|
118
|
+
- - ">="
|
133
119
|
- !ruby/object:Gem::Version
|
134
120
|
version: '0'
|
135
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
122
|
requirements:
|
137
|
-
- -
|
123
|
+
- - ">="
|
138
124
|
- !ruby/object:Gem::Version
|
139
125
|
version: '0'
|
140
126
|
requirements: []
|
141
127
|
rubyforge_project: hessian2
|
142
|
-
rubygems_version: 2.
|
128
|
+
rubygems_version: 2.2.2
|
143
129
|
signing_key:
|
144
130
|
specification_version: 4
|
145
131
|
summary: Hessian2
|