jrjackson 0.4.18-java → 0.4.20-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/jrjackson.gemspec +1 -2
- data/lib/com/fasterxml/jackson/core/jackson-annotations/{2.15.2/jackson-annotations-2.15.2.jar → 2.15.4/jackson-annotations-2.15.4.jar} +0 -0
- data/lib/com/fasterxml/jackson/core/jackson-core/{2.15.2/jackson-core-2.15.2.jar → 2.15.4/jackson-core-2.15.4.jar} +0 -0
- data/lib/com/fasterxml/jackson/core/jackson-databind/{2.15.2/jackson-databind-2.15.2.jar → 2.15.4/jackson-databind-2.15.4.jar} +0 -0
- data/lib/com/fasterxml/jackson/module/jackson-module-afterburner/{2.15.2/jackson-module-afterburner-2.15.2.jar → 2.15.4/jackson-module-afterburner-2.15.4.jar} +0 -0
- data/lib/jrjackson/build_info.rb +8 -8
- data/lib/jrjackson/jars/{jrjackson-1.2.35.jar → jrjackson-1.2.37.jar} +0 -0
- data/lib/jrjackson_jars.rb +8 -8
- data/pom.xml +12 -17
- metadata +13 -78
- data/.gitignore +0 -16
- data/.jrubyr_c +0 -433
- data/Gemfile +0 -13
- data/Mavenfile +0 -25
- data/Rakefile +0 -39
- data/alt_bench.rb +0 -46
- data/changelog.md +0 -181
- data/profiling/profiled.rb +0 -15
- data/run_all_individual_bench.sh +0 -25
- data/run_jruby_individual_bench.sh +0 -20
- data/run_mri_individual_bench.sh +0 -7
- data/src/main/java/com/jrjackson/IParseHandler.java +0 -53
- data/src/main/java/com/jrjackson/JavaBigDecimalValueConverter.java +0 -17
- data/src/main/java/com/jrjackson/JavaBigIntValueConverter.java +0 -17
- data/src/main/java/com/jrjackson/JavaConverter.java +0 -10
- data/src/main/java/com/jrjackson/JavaFloatValueConverter.java +0 -16
- data/src/main/java/com/jrjackson/JavaHandler.java +0 -118
- data/src/main/java/com/jrjackson/JavaLongValueConverter.java +0 -16
- data/src/main/java/com/jrjackson/JjParse.java +0 -139
- data/src/main/java/com/jrjackson/JrJacksonBase.java +0 -152
- data/src/main/java/com/jrjackson/JrJacksonJava.java +0 -81
- data/src/main/java/com/jrjackson/JrJacksonRaw.java +0 -108
- data/src/main/java/com/jrjackson/JrJacksonRuby.java +0 -89
- data/src/main/java/com/jrjackson/JrJacksonSaj.java +0 -26
- data/src/main/java/com/jrjackson/JrJacksonSch.java +0 -25
- data/src/main/java/com/jrjackson/JrJacksonService.java +0 -38
- data/src/main/java/com/jrjackson/JrParse.java +0 -142
- data/src/main/java/com/jrjackson/ParseError.java +0 -16
- data/src/main/java/com/jrjackson/RubyAnySerializer.java +0 -291
- data/src/main/java/com/jrjackson/RubyBigDecimalValueConverter.java +0 -18
- data/src/main/java/com/jrjackson/RubyBigIntValueConverter.java +0 -21
- data/src/main/java/com/jrjackson/RubyConverter.java +0 -12
- data/src/main/java/com/jrjackson/RubyDateFormat.java +0 -34
- data/src/main/java/com/jrjackson/RubyFloatValueConverter.java +0 -18
- data/src/main/java/com/jrjackson/RubyHandler.java +0 -119
- data/src/main/java/com/jrjackson/RubyIntValueConverter.java +0 -18
- data/src/main/java/com/jrjackson/RubyJacksonModule.java +0 -80
- data/src/main/java/com/jrjackson/RubyKeyConverter.java +0 -12
- data/src/main/java/com/jrjackson/RubyNameConverter.java +0 -9
- data/src/main/java/com/jrjackson/RubyObjectDeserializer.java +0 -182
- data/src/main/java/com/jrjackson/RubyStringConverter.java +0 -18
- data/src/main/java/com/jrjackson/RubyStringKeyConverter.java +0 -15
- data/src/main/java/com/jrjackson/RubyStringNameConverter.java +0 -12
- data/src/main/java/com/jrjackson/RubySymbolKeyConverter.java +0 -15
- data/src/main/java/com/jrjackson/RubySymbolNameConverter.java +0 -12
- data/src/main/java/com/jrjackson/RubyUtils.java +0 -149
- data/src/main/java/com/jrjackson/SajParse.java +0 -169
- data/src/main/java/com/jrjackson/SchParse.java +0 -209
- data/src/main/java/com/jrjackson/StreamParse.java +0 -66
- data/src/test/java/com/jrjackson/RubyAnySerializerTest.java +0 -56
- data/test/jrjackson_test.rb +0 -578
data/changelog.md
DELETED
@@ -1,181 +0,0 @@
|
|
1
|
-
v0.4.17
|
2
|
-
Bump jackson and jackson-databind to v2.14.1
|
3
|
-
|
4
|
-
v0.4.16
|
5
|
-
Publish v0.4.15 again without world writable files
|
6
|
-
|
7
|
-
v0.4.15
|
8
|
-
Bump jackson and jackson-databind to v2.13.3
|
9
|
-
|
10
|
-
v0.4.14
|
11
|
-
Bump jackson-databind to v2.9.10.8
|
12
|
-
|
13
|
-
v0.4.13
|
14
|
-
Bump jackson-databind to v2.9.10.6
|
15
|
-
|
16
|
-
v0.4.12
|
17
|
-
Bump jackson-databind to v2.9.10.4
|
18
|
-
|
19
|
-
v0.4.11
|
20
|
-
Bump Jackson to v2.9.10, and jackson-databind to v2.9.10.1
|
21
|
-
|
22
|
-
v0.4.10
|
23
|
-
fix concurrency issue when serializing dates.
|
24
|
-
Cache UTC TimeZone class to avoid unnecessary calls to synchronized method
|
25
|
-
Use a ThreadLocal to hold per-thread instances of SimpleDateFormat to avoid
|
26
|
-
unnecessary expensive clonings of that object
|
27
|
-
Replace unsafe call to setDateFormat on static ObjectMapper class by creating
|
28
|
-
an amended SerializationConfig
|
29
|
-
|
30
|
-
v0.4.9
|
31
|
-
bump Jackson to v2.9.9, and jackson-databind to v2.9.9.3
|
32
|
-
|
33
|
-
v0.4.8
|
34
|
-
fix serialisation of big numbers as Ruby 2.4 unifies Fixnum and Bignum into Integer
|
35
|
-
|
36
|
-
v0.4.4
|
37
|
-
fix for issue 64
|
38
|
-
Ruby parse() null/nil handling
|
39
|
-
|
40
|
-
v0.4.3
|
41
|
-
bump Jackson to v2.9.1
|
42
|
-
make static_mapper public
|
43
|
-
|
44
|
-
v0.4.1
|
45
|
-
fix for issue 55
|
46
|
-
Refactor AnySerializer acceptable class detection that does not use an exception
|
47
|
-
|
48
|
-
v0.4.0
|
49
|
-
Implement `to_s` and Exception serialization
|
50
|
-
|
51
|
-
v0.3.9
|
52
|
-
Thanks to mkristian, now uses jar_dependencies
|
53
|
-
Upgrade to Jackson v2.7.1
|
54
|
-
fix for issue 51
|
55
|
-
dont create "new RubyJacksonModule()" when creating a Provider
|
56
|
-
fix for reports of symbol table overflow in Jackson when using JrJackson in very long running daemons (Logstash)
|
57
|
-
disable the FAIL_ON_SYMBOL_HASH_OVERFLOW setting
|
58
|
-
|
59
|
-
v0.3.8
|
60
|
-
fix for issue 47
|
61
|
-
Update Jackson to v 2.6.3
|
62
|
-
Change error message to better report failure in issue 46
|
63
|
-
|
64
|
-
v0.3.7
|
65
|
-
fix for issue 46
|
66
|
-
Add references to RubyAnySerializer so Jackson can
|
67
|
-
use it for Ruby objects nested in Java objects
|
68
|
-
|
69
|
-
v0.3.6
|
70
|
-
fix for issue 45
|
71
|
-
use bytelist.begin instead of 0 generating from RubyString
|
72
|
-
|
73
|
-
v0.3.5
|
74
|
-
give highest precedence to the to_json_data method
|
75
|
-
|
76
|
-
v0.3.4
|
77
|
-
fix multi_json bug
|
78
|
-
not serializing non-string keys
|
79
|
-
|
80
|
-
v0.3.3
|
81
|
-
fix bigdecimal bug
|
82
|
-
add require bigdecimal
|
83
|
-
|
84
|
-
v0.3.2
|
85
|
-
update changelog
|
86
|
-
|
87
|
-
v0.3.1
|
88
|
-
remove old jar
|
89
|
-
|
90
|
-
v0.3.0
|
91
|
-
this is a major refactor.
|
92
|
-
parse and generate performance improvements.
|
93
|
-
see JrJackson::Ruby and JrJackson::Java modules
|
94
|
-
pretty generation support.
|
95
|
-
jruby 9.0.1.0 and 1.7.22
|
96
|
-
jackson 2.6.1
|
97
|
-
|
98
|
-
v0.2.9
|
99
|
-
fix for issue 39
|
100
|
-
incorrect error when serializing BasicObject
|
101
|
-
|
102
|
-
v0.2.8
|
103
|
-
fixes for issues-28,29,31
|
104
|
-
correction for Time#to_s
|
105
|
-
new options to control date serialization
|
106
|
-
optimizations suggested by @headius
|
107
|
-
jar compiled for jruby 1.7.17
|
108
|
-
jruby 1.7.17
|
109
|
-
jackson 2.4.4
|
110
|
-
|
111
|
-
v0.2.7
|
112
|
-
fixes for issues-23,24
|
113
|
-
add to_time as option for serializing Time like objects
|
114
|
-
jar compiled for jruby 1.7.11
|
115
|
-
|
116
|
-
v0.2.6
|
117
|
-
fix issue-20
|
118
|
-
allow jruby to convert Ruby StringIO into Java
|
119
|
-
by not type checking passed arg
|
120
|
-
this is because jruby 1.7.9 has changed the type of java object backing Ruby StringIO
|
121
|
-
jar compiled for jruby 1.7.8 (jruby 1.7.9 in the maven repo has an error in the pom.xml)
|
122
|
-
jruby 1.7.8, jruby 1.7.9 (tested)
|
123
|
-
jackson 2.3.0
|
124
|
-
|
125
|
-
v0.2.5
|
126
|
-
fix issue-16
|
127
|
-
reduce the gem size by:
|
128
|
-
change pom.xml to only include relevant java jars
|
129
|
-
exclude benchmaking from the gemspec files
|
130
|
-
jruby 1.7.5
|
131
|
-
jackson 2.2.3
|
132
|
-
|
133
|
-
v0.2.4
|
134
|
-
fix issue-15
|
135
|
-
return Ruby nil instead of Java null
|
136
|
-
fix issue-14
|
137
|
-
remove all usage of Ruby.getGlobalRuntime
|
138
|
-
pass the runtime from the calling Ruby ThreadContext into the deserializers and converters
|
139
|
-
jruby 1.7.5
|
140
|
-
jackson 2.2.3
|
141
|
-
|
142
|
-
v0.2.3
|
143
|
-
fix issue-12
|
144
|
-
improve the serialization support for non Json Datatype Ruby objects
|
145
|
-
now has support for serializing via toJava, to_h, to_hash, to_a, to_json
|
146
|
-
fix for failing MultiJson unicode test
|
147
|
-
jruby 1.7.4
|
148
|
-
jackson 2.2.3
|
149
|
-
|
150
|
-
v0.2.2
|
151
|
-
fix issue-13
|
152
|
-
compile Java for 1.6 compatibility
|
153
|
-
documentation tweaks
|
154
|
-
jruby 1.7.4
|
155
|
-
jackson 2.2.3
|
156
|
-
|
157
|
-
v0.2.1
|
158
|
-
documentation tweaks
|
159
|
-
fix issue-7
|
160
|
-
add pluggable String and Symbol Converters for JSON values
|
161
|
-
jruby 1.7.4
|
162
|
-
jackson 2.2.3
|
163
|
-
|
164
|
-
v0.2.0
|
165
|
-
extract all Java -> Ruby generation to reusable RubyUtils static class
|
166
|
-
support BigDecimal
|
167
|
-
remove JSON Api
|
168
|
-
fixes issues 5, 6, 8,
|
169
|
-
|
170
|
-
jruby 1.7.3
|
171
|
-
jackson 2.2.2
|
172
|
-
|
173
|
-
v0.1.1
|
174
|
-
fix Time regex
|
175
|
-
v0.1.0
|
176
|
-
MutiJson compatibility
|
177
|
-
switch to using almost all Java, i.e. define most of the ruby modules in Java
|
178
|
-
jruby 1.7.3
|
179
|
-
jackson 2.1.4
|
180
|
-
v0.0.7
|
181
|
-
first release - minimal jruby wrapper around jackson 1.9.5 jars
|
data/profiling/profiled.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'jruby-prof'
|
3
|
-
require 'jrjackson_r'
|
4
|
-
|
5
|
-
js = %({"one":1,"two":"deux","three":[333.333,66.666]})
|
6
|
-
|
7
|
-
result = JRubyProf.profile do
|
8
|
-
JrJackson::Json.parse js
|
9
|
-
end
|
10
|
-
|
11
|
-
JRubyProf.print_flat_text result, "flat.txt"
|
12
|
-
JRubyProf.print_graph_text result, "graph.txt"
|
13
|
-
JRubyProf.print_graph_html result, "graph.html"
|
14
|
-
JRubyProf.print_call_tree result, "call_tree.txt"
|
15
|
-
JRubyProf.print_tree_html result, "call_tree.html"
|
data/run_all_individual_bench.sh
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
|
3
|
-
chruby-exec ruby-2.2.2 -- ruby benchmarking/individual/json-mri-sourced.rb
|
4
|
-
chruby-exec ruby-2.2.2 -- ruby benchmarking/individual/oj-mri-sourced.rb
|
5
|
-
|
6
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/gson-jr-sourced.rb
|
7
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/json-jr-sourced.rb
|
8
|
-
|
9
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/string-jr-sourced.rb
|
10
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/str-bd-jr-sourced.rb
|
11
|
-
|
12
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/symbol-jr-sourced.rb
|
13
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/sym-bd-jr-sourced.rb
|
14
|
-
|
15
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/raw-jr-sourced.rb
|
16
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/raw-bd-jr-sourced.rb
|
17
|
-
|
18
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/sj-jr-sourced.rb
|
19
|
-
|
20
|
-
chruby-exec ruby-2.2.2 -- ruby benchmarking/individual/json-gen-mri-sourced.rb
|
21
|
-
chruby-exec ruby-2.2.2 -- ruby benchmarking/individual/oj-gen-mri-sourced.rb
|
22
|
-
|
23
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/json-gen-jr-sourced.rb
|
24
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/gson-gen-jr-sourced.rb
|
25
|
-
chruby-exec jruby-9.2.0.0 -- ruby -J-Xmn512m -J-Xms2048m -J-Xmx2048m benchmarking/individual/raw-gen-jr-sourced.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
|
3
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/json-gen-jr-sourced.rb
|
4
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/gson-gen-jr-sourced.rb
|
5
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/raw-gen-jr-sourced.rb
|
6
|
-
|
7
|
-
# jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/gson-jr-sourced.rb
|
8
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/json-jr-sourced.rb
|
9
|
-
|
10
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/string-jr-sourced.rb
|
11
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/str-bd-jr-sourced.rb
|
12
|
-
|
13
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/symbol-jr-sourced.rb
|
14
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/sym-bd-jr-sourced.rb
|
15
|
-
|
16
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/raw-jr-sourced.rb
|
17
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/raw-bd-jr-sourced.rb
|
18
|
-
|
19
|
-
jruby -J-Xmn1024m -J-Xms4096m -J-Xmx4096m -S ./benchmarking/individual/sj-jr-sourced.rb
|
20
|
-
|
data/run_mri_individual_bench.sh
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* To change this license header, choose License Headers in Project Properties.
|
3
|
-
* To change this template file, choose Tools | Templates
|
4
|
-
* and open the template in the editor.
|
5
|
-
*/
|
6
|
-
package com.jrjackson;
|
7
|
-
|
8
|
-
import com.fasterxml.jackson.core.JsonParser;
|
9
|
-
import java.io.IOException;
|
10
|
-
|
11
|
-
/**
|
12
|
-
*
|
13
|
-
* @author guy
|
14
|
-
* @param <T>
|
15
|
-
* @param <U>
|
16
|
-
* @param <V>
|
17
|
-
*/
|
18
|
-
public interface IParseHandler<T, U, V> {
|
19
|
-
|
20
|
-
void addValue(T value);
|
21
|
-
|
22
|
-
void arrayAppend(U array, T value);
|
23
|
-
|
24
|
-
void arrayEnd();
|
25
|
-
|
26
|
-
T arrayStart();
|
27
|
-
|
28
|
-
T falseValue();
|
29
|
-
|
30
|
-
T getResult();
|
31
|
-
|
32
|
-
void hashEnd();
|
33
|
-
|
34
|
-
T hashKey(String key);
|
35
|
-
|
36
|
-
void hashSet(V hash, T key, T value);
|
37
|
-
|
38
|
-
T hashStart();
|
39
|
-
|
40
|
-
void raiseError(String e);
|
41
|
-
|
42
|
-
T treatFloat(JsonParser jp) throws IOException;
|
43
|
-
|
44
|
-
T treatInt(JsonParser jp) throws IOException;
|
45
|
-
|
46
|
-
T treatNull();
|
47
|
-
|
48
|
-
T treatString(JsonParser jp) throws IOException;
|
49
|
-
|
50
|
-
T trueValue();
|
51
|
-
|
52
|
-
|
53
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
package com.jrjackson;
|
2
|
-
|
3
|
-
import com.fasterxml.jackson.core.JsonParser;
|
4
|
-
import java.io.IOException;
|
5
|
-
import java.math.BigDecimal;
|
6
|
-
|
7
|
-
/**
|
8
|
-
*
|
9
|
-
* @author Guy Boertje
|
10
|
-
*/
|
11
|
-
public class JavaBigDecimalValueConverter implements JavaConverter {
|
12
|
-
|
13
|
-
@Override
|
14
|
-
public BigDecimal convert(JsonParser jp) throws IOException {
|
15
|
-
return jp.getDecimalValue();
|
16
|
-
}
|
17
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
package com.jrjackson;
|
2
|
-
|
3
|
-
import com.fasterxml.jackson.core.JsonParser;
|
4
|
-
import java.io.IOException;
|
5
|
-
import java.math.BigInteger;
|
6
|
-
|
7
|
-
/**
|
8
|
-
*
|
9
|
-
* @author Guy Boertje
|
10
|
-
*/
|
11
|
-
public class JavaBigIntValueConverter implements JavaConverter {
|
12
|
-
|
13
|
-
@Override
|
14
|
-
public BigInteger convert(JsonParser jp) throws IOException {
|
15
|
-
return jp.getBigIntegerValue();
|
16
|
-
}
|
17
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
package com.jrjackson;
|
2
|
-
|
3
|
-
import com.fasterxml.jackson.core.JsonParser;
|
4
|
-
import java.io.IOException;
|
5
|
-
|
6
|
-
/**
|
7
|
-
*
|
8
|
-
* @author Guy Boertje
|
9
|
-
*/
|
10
|
-
public class JavaFloatValueConverter implements JavaConverter {
|
11
|
-
|
12
|
-
@Override
|
13
|
-
public Double convert(JsonParser jp) throws IOException {
|
14
|
-
return jp.getDoubleValue();
|
15
|
-
}
|
16
|
-
}
|
@@ -1,118 +0,0 @@
|
|
1
|
-
package com.jrjackson;
|
2
|
-
|
3
|
-
import com.fasterxml.jackson.core.JsonParser;
|
4
|
-
import java.io.IOException;
|
5
|
-
import java.util.ArrayList;
|
6
|
-
import java.util.HashMap;
|
7
|
-
|
8
|
-
|
9
|
-
/**
|
10
|
-
*
|
11
|
-
* @author Guy Boertje
|
12
|
-
*/
|
13
|
-
|
14
|
-
/*
|
15
|
-
Long -> Integer
|
16
|
-
Double -> Float
|
17
|
-
JavaMath::BigDecimal -> BigDecimal
|
18
|
-
JavaMath::BigInteger -> Bignum
|
19
|
-
JavaUtil::ArrayList -> Array
|
20
|
-
JavaUtil::LinkedHashMap -> Hash
|
21
|
-
String -> String
|
22
|
-
*/
|
23
|
-
|
24
|
-
public class JavaHandler implements IParseHandler<Object, ArrayList<Object>, HashMap<String, Object>> {
|
25
|
-
|
26
|
-
private Object _result;
|
27
|
-
private final JavaConverter _intConv;
|
28
|
-
private final JavaConverter _floatConv;
|
29
|
-
|
30
|
-
public JavaHandler(
|
31
|
-
JavaConverter intConverter,
|
32
|
-
JavaConverter floatConverter) {
|
33
|
-
|
34
|
-
_intConv = intConverter;
|
35
|
-
_floatConv = floatConverter;
|
36
|
-
|
37
|
-
}
|
38
|
-
|
39
|
-
@Override
|
40
|
-
public void addValue(Object value) {
|
41
|
-
_result = value;
|
42
|
-
}
|
43
|
-
|
44
|
-
@Override
|
45
|
-
public Object hashStart() {
|
46
|
-
return new HashMap<String, Object>();
|
47
|
-
}
|
48
|
-
|
49
|
-
@Override
|
50
|
-
public void hashEnd() {
|
51
|
-
|
52
|
-
}
|
53
|
-
|
54
|
-
@Override
|
55
|
-
public Object hashKey(String key) {
|
56
|
-
return key;
|
57
|
-
}
|
58
|
-
|
59
|
-
@Override
|
60
|
-
public void hashSet(HashMap<String, Object> hash, Object key, Object value) {
|
61
|
-
hash.put((String)key, value);
|
62
|
-
}
|
63
|
-
|
64
|
-
@Override
|
65
|
-
public Object arrayStart() {
|
66
|
-
return new ArrayList<Object>();
|
67
|
-
}
|
68
|
-
|
69
|
-
@Override
|
70
|
-
public void arrayEnd() {
|
71
|
-
|
72
|
-
}
|
73
|
-
|
74
|
-
@Override
|
75
|
-
public void arrayAppend(ArrayList<Object> array, Object value) {
|
76
|
-
array.add(value);
|
77
|
-
}
|
78
|
-
|
79
|
-
@Override
|
80
|
-
public Object treatNull() {
|
81
|
-
return null;
|
82
|
-
}
|
83
|
-
|
84
|
-
@Override
|
85
|
-
public Object treatInt(JsonParser jp) throws IOException {
|
86
|
-
return _intConv.convert(jp);
|
87
|
-
}
|
88
|
-
|
89
|
-
@Override
|
90
|
-
public Object treatFloat(JsonParser jp) throws IOException {
|
91
|
-
return _floatConv.convert(jp);
|
92
|
-
}
|
93
|
-
|
94
|
-
@Override
|
95
|
-
public Object treatString(JsonParser jp) throws IOException {
|
96
|
-
return jp.getText();
|
97
|
-
}
|
98
|
-
|
99
|
-
@Override
|
100
|
-
public Object trueValue() {
|
101
|
-
return true;
|
102
|
-
}
|
103
|
-
|
104
|
-
@Override
|
105
|
-
public Object falseValue() {
|
106
|
-
return false;
|
107
|
-
}
|
108
|
-
|
109
|
-
@Override
|
110
|
-
public Object getResult() {
|
111
|
-
return _result;
|
112
|
-
}
|
113
|
-
|
114
|
-
@Override
|
115
|
-
public void raiseError(String e) {
|
116
|
-
|
117
|
-
}
|
118
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
package com.jrjackson;
|
2
|
-
|
3
|
-
import com.fasterxml.jackson.core.JsonParser;
|
4
|
-
import java.io.IOException;
|
5
|
-
|
6
|
-
/**
|
7
|
-
*
|
8
|
-
* @author Guy Boertje
|
9
|
-
*/
|
10
|
-
public class JavaLongValueConverter implements JavaConverter {
|
11
|
-
|
12
|
-
@Override
|
13
|
-
public Long convert(JsonParser jp) throws IOException {
|
14
|
-
return jp.getLongValue();
|
15
|
-
}
|
16
|
-
}
|
@@ -1,139 +0,0 @@
|
|
1
|
-
package com.jrjackson;
|
2
|
-
|
3
|
-
import com.fasterxml.jackson.core.JsonParser;
|
4
|
-
import com.fasterxml.jackson.core.JsonStreamContext;
|
5
|
-
|
6
|
-
import java.io.IOException;
|
7
|
-
import java.util.ArrayList;
|
8
|
-
import java.util.HashMap;
|
9
|
-
|
10
|
-
/**
|
11
|
-
*
|
12
|
-
* @author Guy Boertje
|
13
|
-
*/
|
14
|
-
public class JjParse {
|
15
|
-
|
16
|
-
private final JavaHandler _handler;
|
17
|
-
private final HashMap<JsonStreamContext, Object> _objectMap = new HashMap<>();
|
18
|
-
private JsonStreamContext _deepestContext;
|
19
|
-
|
20
|
-
public JjParse(JavaHandler handler) {
|
21
|
-
_handler = handler;
|
22
|
-
}
|
23
|
-
|
24
|
-
public void deserialize(JsonParser jp) throws IOException {
|
25
|
-
try {
|
26
|
-
|
27
|
-
while (jp.nextValue() != null) {
|
28
|
-
handleJavaToken(jp);
|
29
|
-
}
|
30
|
-
} catch (IOException e) {
|
31
|
-
_handler.raiseError(e.getLocalizedMessage());
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
private void addJavaValue(JsonStreamContext x) {
|
36
|
-
JsonStreamContext px = x.getParent();
|
37
|
-
Object dtarget = _objectMap.get(_deepestContext);
|
38
|
-
|
39
|
-
if (px == null) {
|
40
|
-
_handler.addValue(dtarget);
|
41
|
-
return;
|
42
|
-
}
|
43
|
-
|
44
|
-
Object value = _objectMap.get(x);
|
45
|
-
|
46
|
-
if (x.inArray()) {
|
47
|
-
_handler.arrayAppend(
|
48
|
-
(ArrayList<Object>)value, dtarget);
|
49
|
-
} else if (x.inObject()) {
|
50
|
-
_handler.hashSet(
|
51
|
-
(HashMap<String, Object>)value, getJavaHashKey(x), dtarget);
|
52
|
-
|
53
|
-
} else {
|
54
|
-
_handler.addValue(value);
|
55
|
-
}
|
56
|
-
}
|
57
|
-
|
58
|
-
private void addJavaValue(JsonStreamContext x, Object val) {
|
59
|
-
if (x.inArray()) {
|
60
|
-
ArrayList<Object> a = (ArrayList<Object>)_objectMap.get(x);
|
61
|
-
_handler.arrayAppend(a, val);
|
62
|
-
} else if (x.inObject()) {
|
63
|
-
HashMap<String, Object> h = (HashMap<String, Object>)_objectMap.get(x);
|
64
|
-
_handler.hashSet(h, getJavaHashKey(x), val);
|
65
|
-
|
66
|
-
} else {
|
67
|
-
_handler.addValue(val);
|
68
|
-
}
|
69
|
-
}
|
70
|
-
|
71
|
-
private String getJavaHashKey(JsonStreamContext x) {
|
72
|
-
String k = x.getCurrentName();
|
73
|
-
if (k == null) {
|
74
|
-
return null;
|
75
|
-
}
|
76
|
-
return (String)_handler.hashKey(k);
|
77
|
-
}
|
78
|
-
|
79
|
-
protected void handleJavaToken(JsonParser jp)
|
80
|
-
throws IOException {
|
81
|
-
|
82
|
-
JsonStreamContext cx = jp.getParsingContext();
|
83
|
-
|
84
|
-
switch (jp.getCurrentToken()) {
|
85
|
-
case START_OBJECT:
|
86
|
-
_deepestContext = cx;
|
87
|
-
_objectMap.put(cx, _handler.hashStart());
|
88
|
-
break;
|
89
|
-
|
90
|
-
case START_ARRAY:
|
91
|
-
_deepestContext = cx;
|
92
|
-
_objectMap.put(cx, _handler.arrayStart());
|
93
|
-
|
94
|
-
case FIELD_NAME:
|
95
|
-
break;
|
96
|
-
|
97
|
-
case VALUE_EMBEDDED_OBJECT:
|
98
|
-
System.out.println("-------- VALUE_EMBEDDED_OBJECT ????????? --------");
|
99
|
-
System.out.println(jp.getEmbeddedObject());
|
100
|
-
break;
|
101
|
-
|
102
|
-
case VALUE_STRING:
|
103
|
-
addJavaValue(cx, _handler.treatString(jp));
|
104
|
-
break;
|
105
|
-
|
106
|
-
case VALUE_NUMBER_INT:
|
107
|
-
addJavaValue(cx, _handler.treatInt(jp));
|
108
|
-
break;
|
109
|
-
|
110
|
-
case VALUE_NUMBER_FLOAT:
|
111
|
-
addJavaValue(cx, _handler.treatFloat(jp));
|
112
|
-
break;
|
113
|
-
|
114
|
-
case VALUE_TRUE:
|
115
|
-
addJavaValue(cx, _handler.trueValue());
|
116
|
-
break;
|
117
|
-
|
118
|
-
case VALUE_FALSE:
|
119
|
-
addJavaValue(cx, _handler.falseValue());
|
120
|
-
break;
|
121
|
-
|
122
|
-
case VALUE_NULL: // should not get this but...
|
123
|
-
addJavaValue(cx, _handler.treatNull());
|
124
|
-
break;
|
125
|
-
|
126
|
-
case END_ARRAY:
|
127
|
-
_handler.arrayEnd();
|
128
|
-
addJavaValue(cx);
|
129
|
-
_deepestContext = cx;
|
130
|
-
break;
|
131
|
-
|
132
|
-
case END_OBJECT:
|
133
|
-
_handler.hashEnd();
|
134
|
-
addJavaValue(cx);
|
135
|
-
_deepestContext = cx;
|
136
|
-
break;
|
137
|
-
}
|
138
|
-
}
|
139
|
-
}
|