jrjackson 0.4.0-java → 0.4.1-java
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/{.__jrubyrc → .jrubyr_c} +0 -0
- data/Mavenfile +2 -2
- data/changelog.md +7 -0
- data/lib/jrjackson/build_info.rb +2 -2
- data/lib/jrjackson/jars/{jrjackson-1.2.19.jar → jrjackson-1.2.20.jar} +0 -0
- data/pom.xml +4 -4
- data/src/main/java/com/jrjackson/JrJacksonBase.java +6 -6
- data/src/main/java/com/jrjackson/RubyAnySerializer.java +71 -61
- data/src/test/java/com/jrjackson/RubyAnySerializerTest.java +56 -0
- data/test/jrjackson_test.rb +4 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07684d7dc09c577c8ca59c40029b672740f54df5
|
4
|
+
data.tar.gz: 6b4ada75e21a4aa5db9cbda3c0a58ecc6d91f751
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20fff6041d8ca57dad6828c43cc942948051d94ac76ce1958507170c556084d69b73ab5235a63d9367a795dd32bdf6f31ab7a46dbc05277c8457347dc979daaa
|
7
|
+
data.tar.gz: abc4caca39b0b37f302824d76ab230498d0cf25d4957dc5028145792493d494a08fcf4967a65a61b179e54f57e14fedd6cc379df173dd13c076a9d552da9d1ee
|
data/{.__jrubyrc → .jrubyr_c}
RENAMED
File without changes
|
data/Mavenfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#-*- mode: ruby -*-
|
2
2
|
|
3
|
-
VERSION='1.2.
|
3
|
+
VERSION='1.2.20'
|
4
4
|
gemspec :jar => "jrjackson/jars/jrjackson-#{VERSION}.jar"
|
5
5
|
|
6
6
|
# overwrite groupId:artifacgtId:version from gem
|
@@ -15,7 +15,7 @@ properties 'project.build.sourceEncoding' => 'UTF-8',
|
|
15
15
|
|
16
16
|
jar 'junit:junit', '4.11', :scope => :test
|
17
17
|
|
18
|
-
jar 'org.jruby:jruby', '9.
|
18
|
+
jar 'org.jruby:jruby', '9.1.5.0', :scope => :provided
|
19
19
|
|
20
20
|
plugin :compiler, '3.1', :source => '1.7', :target => '1.7',
|
21
21
|
:showDeprecation => false,
|
data/changelog.md
CHANGED
data/lib/jrjackson/build_info.rb
CHANGED
Binary file
|
data/pom.xml
CHANGED
@@ -11,7 +11,7 @@ DO NOT MODIFIY - GENERATED CODE
|
|
11
11
|
<modelVersion>4.0.0</modelVersion>
|
12
12
|
<groupId>com.jrjackson.jruby</groupId>
|
13
13
|
<artifactId>jrjackson</artifactId>
|
14
|
-
<version>1.2.
|
14
|
+
<version>1.2.20</version>
|
15
15
|
<name>A JRuby wrapper for the java jackson json processor jar</name>
|
16
16
|
<description>A mostly native JRuby wrapper for the java jackson json processor jar</description>
|
17
17
|
<url>http://github.com/guyboertje/jrjackson</url>
|
@@ -88,7 +88,7 @@ DO NOT MODIFIY - GENERATED CODE
|
|
88
88
|
<dependency>
|
89
89
|
<groupId>org.jruby</groupId>
|
90
90
|
<artifactId>jruby</artifactId>
|
91
|
-
<version>9.
|
91
|
+
<version>9.1.5.0</version>
|
92
92
|
<scope>provided</scope>
|
93
93
|
</dependency>
|
94
94
|
</dependencies>
|
@@ -126,7 +126,7 @@ DO NOT MODIFIY - GENERATED CODE
|
|
126
126
|
</executions>
|
127
127
|
<configuration>
|
128
128
|
<outputDirectory>lib/jrjackson/jars</outputDirectory>
|
129
|
-
<finalName>jrjackson-1.2.
|
129
|
+
<finalName>jrjackson-1.2.20</finalName>
|
130
130
|
</configuration>
|
131
131
|
</plugin>
|
132
132
|
<plugin>
|
@@ -137,7 +137,7 @@ DO NOT MODIFIY - GENERATED CODE
|
|
137
137
|
<fileset>
|
138
138
|
<directory>lib/jrjackson/jars</directory>
|
139
139
|
<includes>
|
140
|
-
<include>jrjackson-1.2.
|
140
|
+
<include>jrjackson-1.2.20.jar</include>
|
141
141
|
<include>*/**/*.jar</include>
|
142
142
|
</includes>
|
143
143
|
</fileset>
|
@@ -12,25 +12,25 @@ import com.fasterxml.jackson.core.JsonParser;
|
|
12
12
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
13
13
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
14
14
|
import com.fasterxml.jackson.databind.SerializerProvider;
|
15
|
-
import
|
15
|
+
import org.jcodings.specific.UTF8Encoding;
|
16
|
+
import org.jruby.Ruby;
|
17
|
+
import org.jruby.RubyClass;
|
16
18
|
import org.jruby.RubyHash;
|
17
19
|
import org.jruby.RubyIO;
|
18
20
|
import org.jruby.RubyObject;
|
19
21
|
import org.jruby.RubyString;
|
22
|
+
import org.jruby.RubySymbol;
|
20
23
|
import org.jruby.anno.JRubyMethod;
|
21
24
|
import org.jruby.exceptions.RaiseException;
|
22
25
|
import org.jruby.ext.stringio.StringIO;
|
23
26
|
import org.jruby.runtime.ThreadContext;
|
24
27
|
import org.jruby.runtime.builtin.IRubyObject;
|
28
|
+
import org.jruby.util.ByteList;
|
25
29
|
|
30
|
+
import java.io.ByteArrayOutputStream;
|
26
31
|
import java.io.IOException;
|
27
32
|
import java.text.SimpleDateFormat;
|
28
33
|
import java.util.TimeZone;
|
29
|
-
import org.jcodings.specific.UTF8Encoding;
|
30
|
-
import org.jruby.Ruby;
|
31
|
-
import org.jruby.RubyClass;
|
32
|
-
import org.jruby.RubySymbol;
|
33
|
-
import org.jruby.util.ByteList;
|
34
34
|
|
35
35
|
/**
|
36
36
|
*
|
@@ -27,6 +27,8 @@ public class RubyAnySerializer extends JsonSerializer<IRubyObject> {
|
|
27
27
|
private static final String CSP = ": ";
|
28
28
|
private static final String GT = ">";
|
29
29
|
|
30
|
+
private static final RUBYCLASS[] CLASS_NAMES = RUBYCLASS.values();
|
31
|
+
|
30
32
|
public RubyAnySerializer() {
|
31
33
|
// super(IRubyObject.class);
|
32
34
|
|
@@ -104,78 +106,87 @@ public class RubyAnySerializer extends JsonSerializer<IRubyObject> {
|
|
104
106
|
String rubyClassName = value.getType().getName();
|
105
107
|
|
106
108
|
if (value.isNil()) {
|
107
|
-
|
108
109
|
jgen.writeNull(); // for RubyNil and NullObjects
|
110
|
+
return;
|
111
|
+
}
|
109
112
|
|
110
|
-
|
111
|
-
|
113
|
+
if (value instanceof JavaProxy) {
|
112
114
|
provider.defaultSerializeValue(((JavaProxy) value).getObject(), jgen);
|
115
|
+
return;
|
116
|
+
}
|
117
|
+
|
118
|
+
if (value instanceof RubyStruct) {
|
119
|
+
IRubyObject obj = value.callMethod(value.getRuntime().getCurrentContext(), "to_a");
|
120
|
+
serializeArray(obj, jgen, provider);
|
121
|
+
return;
|
122
|
+
}
|
113
123
|
|
114
|
-
|
124
|
+
if (value instanceof RubyException) {
|
115
125
|
RubyException re = (RubyException) value;
|
116
126
|
String msg = re.message(value.getRuntime().getCurrentContext()).toString();
|
117
127
|
StringBuilder sb = new StringBuilder(5 + rubyClassName.length() + msg.length());
|
118
128
|
sb.append(HLT).append(rubyClassName).append(CSP).append(msg).append(GT);
|
119
129
|
jgen.writeString(sb.toString());
|
130
|
+
return;
|
131
|
+
}
|
120
132
|
|
121
|
-
|
122
|
-
|
133
|
+
if (value.isClass() || value.isModule()) {
|
123
134
|
jgen.writeString(value.inspect().toString());
|
135
|
+
return;
|
136
|
+
}
|
124
137
|
|
125
|
-
|
126
|
-
|
127
|
-
RUBYCLASS clazz;
|
138
|
+
RUBYCLASS clazz = null;
|
128
139
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
return;
|
140
|
+
for(RUBYCLASS v : CLASS_NAMES) {
|
141
|
+
if(rubyClassName.equals(v.name())) {
|
142
|
+
clazz = v;
|
143
|
+
break;
|
134
144
|
}
|
145
|
+
}
|
135
146
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
147
|
+
if (clazz == null) {
|
148
|
+
serializeUnknownRubyObject(value.getRuntime().getCurrentContext(), value, jgen, provider);
|
149
|
+
return;
|
150
|
+
}
|
151
|
+
|
152
|
+
switch (clazz) {
|
153
|
+
case Hash:
|
154
|
+
serializeHash(value, jgen, provider);
|
155
|
+
break;
|
156
|
+
case Array:
|
157
|
+
serializeArray(value, jgen, provider);
|
158
|
+
break;
|
159
|
+
case String:
|
160
|
+
RubyUtils.writeBytes(value, jgen);
|
161
|
+
break;
|
162
|
+
case Symbol:
|
163
|
+
case Date:
|
164
|
+
// Date to_s -> yyyy-mm-dd
|
165
|
+
RubyString s = value.asString();
|
166
|
+
jgen.writeUTF8String(s.getBytes(), 0, s.size());
|
167
|
+
break;
|
168
|
+
case TrueClass:
|
169
|
+
case FalseClass:
|
170
|
+
jgen.writeBoolean(value.isTrue());
|
171
|
+
break;
|
172
|
+
case Float:
|
173
|
+
jgen.writeNumber(RubyNumeric.num2dbl(value));
|
174
|
+
break;
|
175
|
+
case Fixnum:
|
176
|
+
jgen.writeNumber(RubyNumeric.num2long(value));
|
177
|
+
break;
|
178
|
+
case Bignum:
|
179
|
+
jgen.writeNumber(((RubyBignum) value).getBigIntegerValue());
|
180
|
+
break;
|
181
|
+
case BigDecimal:
|
182
|
+
jgen.writeNumber(((RubyBigDecimal) value).getBigDecimalValue());
|
183
|
+
break;
|
184
|
+
case Time:
|
185
|
+
serializeTime((RubyTime) value, jgen, provider);
|
186
|
+
break;
|
187
|
+
default:
|
188
|
+
serializeUnknownRubyObject(value.getRuntime().getCurrentContext(), value, jgen, provider);
|
189
|
+
break;
|
179
190
|
}
|
180
191
|
}
|
181
192
|
|
@@ -253,16 +264,15 @@ public class RubyAnySerializer extends JsonSerializer<IRubyObject> {
|
|
253
264
|
|
254
265
|
enum RUBYCLASS {
|
255
266
|
String,
|
267
|
+
Fixnum,
|
268
|
+
Hash,
|
269
|
+
Array,
|
256
270
|
Float,
|
257
271
|
BigDecimal,
|
258
272
|
Time,
|
259
|
-
Array,
|
260
|
-
Hash,
|
261
|
-
Fixnum,
|
262
273
|
Bignum,
|
263
274
|
Date,
|
264
275
|
Symbol,
|
265
|
-
Struct,
|
266
276
|
TrueClass,
|
267
277
|
FalseClass
|
268
278
|
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
package com.jrjackson;
|
2
|
+
|
3
|
+
import com.fasterxml.jackson.core.JsonEncoding;
|
4
|
+
import com.fasterxml.jackson.core.JsonGenerator;
|
5
|
+
import com.fasterxml.jackson.databind.SerializerProvider;
|
6
|
+
import org.jcodings.specific.UTF8Encoding;
|
7
|
+
import org.jruby.CompatVersion;
|
8
|
+
import org.jruby.Ruby;
|
9
|
+
import org.jruby.RubyHash;
|
10
|
+
import org.jruby.RubyInstanceConfig;
|
11
|
+
import org.jruby.ext.bigdecimal.RubyBigDecimal;
|
12
|
+
import org.jruby.util.ByteList;
|
13
|
+
import org.junit.Before;
|
14
|
+
import org.junit.Test;
|
15
|
+
|
16
|
+
import java.io.ByteArrayOutputStream;
|
17
|
+
|
18
|
+
import static org.hamcrest.CoreMatchers.equalTo;
|
19
|
+
import static org.hamcrest.CoreMatchers.is;
|
20
|
+
import static org.hamcrest.MatcherAssert.assertThat;
|
21
|
+
|
22
|
+
public class RubyAnySerializerTest {
|
23
|
+
private static boolean setupDone = false;
|
24
|
+
public static Ruby ruby;
|
25
|
+
|
26
|
+
@Before
|
27
|
+
public void setUp() throws Exception {
|
28
|
+
if (setupDone) return;
|
29
|
+
|
30
|
+
RubyInstanceConfig config_19 = new RubyInstanceConfig();
|
31
|
+
config_19.setCompatVersion(CompatVersion.RUBY1_9);
|
32
|
+
ruby = Ruby.newInstance(config_19);
|
33
|
+
RubyBigDecimal.createBigDecimal(ruby); // we need to do 'require "bigdecimal"'
|
34
|
+
// JrubyTimestampExtLibrary.createTimestamp(ruby);
|
35
|
+
setupDone = true;
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
@Test
|
40
|
+
public void testSerialize() throws Exception {
|
41
|
+
RubyHash rh = RubyHash.newHash(ruby);
|
42
|
+
rh.put("somekey", 123);
|
43
|
+
|
44
|
+
SerializerProvider provider = RubyJacksonModule.createProvider();
|
45
|
+
|
46
|
+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
47
|
+
JsonGenerator jgen = RubyJacksonModule.factory.createGenerator(
|
48
|
+
baos, JsonEncoding.UTF8);
|
49
|
+
|
50
|
+
RubyAnySerializer.instance.serialize(rh, jgen, provider);
|
51
|
+
jgen.close();
|
52
|
+
ByteList bl = new ByteList(baos.toByteArray(),
|
53
|
+
UTF8Encoding.INSTANCE);
|
54
|
+
assertThat(bl.toString(), is(equalTo("{\"somekey\":123}")));
|
55
|
+
}
|
56
|
+
}
|
data/test/jrjackson_test.rb
CHANGED
@@ -76,6 +76,9 @@ class JrJacksonTest < Test::Unit::TestCase
|
|
76
76
|
|
77
77
|
CustomStruct = Struct.new(:one, :two, :six)
|
78
78
|
|
79
|
+
class StrangeError < RuntimeError
|
80
|
+
|
81
|
+
end
|
79
82
|
|
80
83
|
class ScHandler
|
81
84
|
attr_accessor :calls
|
@@ -522,9 +525,8 @@ class JrJacksonTest < Test::Unit::TestCase
|
|
522
525
|
end
|
523
526
|
|
524
527
|
def test_can_serialize_exceptions
|
525
|
-
e =
|
528
|
+
e = StrangeError.new("Something immensely bad happened")
|
526
529
|
object = {'error' => e}
|
527
|
-
|
528
530
|
actual = JrJackson::Json.dump(object)
|
529
531
|
assert_equal "{\"error\":\"#{e.inspect}\"}", actual
|
530
532
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jrjackson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Guy Boertje
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -65,8 +65,8 @@ executables: []
|
|
65
65
|
extensions: []
|
66
66
|
extra_rdoc_files: []
|
67
67
|
files:
|
68
|
-
- .__jrubyrc
|
69
68
|
- .gitignore
|
69
|
+
- .jrubyr_c
|
70
70
|
- .mvn/extensions.xml
|
71
71
|
- Gemfile
|
72
72
|
- Mavenfile
|
@@ -81,7 +81,7 @@ files:
|
|
81
81
|
- lib/com/fasterxml/jackson/module/jackson-module-afterburner/2.7.3/jackson-module-afterburner-2.7.3.jar
|
82
82
|
- lib/jrjackson.rb
|
83
83
|
- lib/jrjackson/build_info.rb
|
84
|
-
- lib/jrjackson/jars/jrjackson-1.2.
|
84
|
+
- lib/jrjackson/jars/jrjackson-1.2.20.jar
|
85
85
|
- lib/jrjackson/jrjackson.rb
|
86
86
|
- lib/jrjackson_jars.rb
|
87
87
|
- lib/require_relative_patch.rb
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- src/main/java/com/jrjackson/SajParse.java
|
129
129
|
- src/main/java/com/jrjackson/SchParse.java
|
130
130
|
- src/main/java/com/jrjackson/StreamParse.java
|
131
|
+
- src/test/java/com/jrjackson/RubyAnySerializerTest.java
|
131
132
|
- test/jrjackson_test.rb
|
132
133
|
homepage: http://github.com/guyboertje/jrjackson
|
133
134
|
licenses:
|