jrjackson 0.0.7 → 0.1.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.
@@ -0,0 +1,80 @@
1
+ package com.jrjackson;
2
+
3
+ import java.io.IOException;
4
+ import java.util.*;
5
+
6
+ import com.fasterxml.jackson.core.*;
7
+
8
+ import com.fasterxml.jackson.databind.DeserializationContext;
9
+ import com.fasterxml.jackson.databind.DeserializationFeature;
10
+ import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
11
+ import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
12
+ import com.fasterxml.jackson.databind.util.ObjectBuffer;
13
+ import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
14
+
15
+ import org.jruby.Ruby;
16
+ import org.jruby.RubyObject;
17
+ import org.jruby.RubyArray;
18
+ import org.jruby.RubyHash;
19
+ import org.jruby.RubyString;
20
+ import org.jruby.RubySymbol;
21
+ import org.jruby.runtime.builtin.IRubyObject;
22
+ import org.jruby.javasupport.JavaUtil;
23
+ import org.jruby.javasupport.util.RuntimeHelpers;
24
+
25
+
26
+ public class RubyObjectSymDeserializer
27
+ // extends RubyObjectDeserializer<RubyObject>
28
+ extends RubyObjectDeserializer
29
+ {
30
+
31
+ protected final static Ruby __ruby__ = Ruby.getGlobalRuntime();
32
+
33
+ public final static RubyObjectSymDeserializer instance = new RubyObjectSymDeserializer();
34
+
35
+ public RubyObjectSymDeserializer() { super(); }
36
+
37
+ /*
38
+ /**********************************************************
39
+ /* Internal methods
40
+ /**********************************************************
41
+ */
42
+
43
+ protected RubySymbol rubySymbol(JsonParser jp) throws IOException {
44
+ return __ruby__.newSymbol(jp.getText());
45
+ }
46
+
47
+ protected RubyObject mapObject(JsonParser jp, DeserializationContext ctxt)
48
+ throws IOException, JsonProcessingException
49
+ {
50
+ JsonToken t = jp.getCurrentToken();
51
+ if (t == JsonToken.START_OBJECT) {
52
+ t = jp.nextToken();
53
+ }
54
+ // 1.6: minor optimization; let's handle 1 and 2 entry cases separately
55
+ if (t != JsonToken.FIELD_NAME) { // and empty one too
56
+ // empty map might work; but caller may want to modify... so better just give small modifiable
57
+ return RubyHash.newHash(__ruby__);
58
+ }
59
+ RubySymbol field1 = rubySymbol(jp);
60
+ jp.nextToken();
61
+ RubyObject value1 = deserialize(jp, ctxt);
62
+ if (jp.nextToken() != JsonToken.FIELD_NAME) { // single entry; but we want modifiable
63
+ return RuntimeHelpers.constructHash(__ruby__, field1, value1);
64
+ }
65
+ RubySymbol field2 = rubySymbol(jp);
66
+ jp.nextToken();
67
+ RubyObject value2 = deserialize(jp, ctxt);
68
+ if (jp.nextToken() != JsonToken.FIELD_NAME) {
69
+ return RuntimeHelpers.constructHash(__ruby__, field1, value1, field2, value2);
70
+ }
71
+ RubyHash result = RuntimeHelpers.constructHash(__ruby__, field1, value1, field2, value2);
72
+ do {
73
+ RubySymbol fieldName = rubySymbol(jp);
74
+ jp.nextToken();
75
+ result.fastASet(fieldName, deserialize(jp, ctxt));
76
+ } while (jp.nextToken() != JsonToken.END_OBJECT);
77
+ return result;
78
+ }
79
+ }
80
+
metadata CHANGED
@@ -1,28 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jrjackson
3
3
  version: !ruby/object:Gem::Version
4
+ version: 0.1.0
4
5
  prerelease:
5
- version: 0.0.7
6
6
  platform: ruby
7
7
  authors:
8
8
  - Guy Boertje
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-14 00:00:00.000000000Z
12
+ date: 2013-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: awesome_print
16
- version_requirements: &2056 !ruby/object:Gem::Requirement
15
+ name: bundler
16
+ version_requirements: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 0.4.0
20
+ version: '1.0'
21
+ none: false
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
21
27
  none: false
22
- requirement: *2056
23
28
  prerelease: false
24
29
  type: :development
25
- description: ''
30
+ description: A mostly native JRuby wrapper for the java jackson json processor jar
26
31
  email:
27
32
  - guyboertje@gmail.com
28
33
  executables: []
@@ -30,21 +35,25 @@ extensions: []
30
35
  extra_rdoc_files: []
31
36
  files:
32
37
  - Gemfile
33
- - README
38
+ - README.md
34
39
  - Rakefile
40
+ - benchmarking/.jrubyrc
35
41
  - benchmarking/benchmark.rb
36
42
  - jrjackson.gemspec
37
43
  - lib/jrjackson.rb
38
- - lib/jrjackson/jackson-core-asl-1.9.5.jar
39
- - lib/jrjackson/jackson-mapper-asl-1.9.5.jar
40
- - lib/jrjackson/jackson-smile-1.9.5.jar
44
+ - lib/jrjackson/jars/jrjackson-1.0.jar
41
45
  - lib/jrjackson/jrjackson.rb
42
- - lib/jrjackson/rubify.rb
43
- - lib/jrjackson/rubify_with_symbol_keys.rb
44
46
  - lib/jrjackson/version.rb
45
- - lib/jrjackson_r.rb
46
- - lib/jrjackson_r_sym.rb
47
+ - lib/require_relative_patch.rb
48
+ - pom.xml
47
49
  - profiling/profiled.rb
50
+ - src/main/java/com/jrjackson/JrJacksonRaw.java
51
+ - src/main/java/com/jrjackson/JrJacksonService.java
52
+ - src/main/java/com/jrjackson/JrJacksonStr.java
53
+ - src/main/java/com/jrjackson/JrJacksonSym.java
54
+ - src/main/java/com/jrjackson/ParseError.java
55
+ - src/main/java/com/jrjackson/RubyObjectDeserializer.java
56
+ - src/main/java/com/jrjackson/RubyObjectSymDeserializer.java
48
57
  homepage: http://github.com/guyboertje/jrjackson
49
58
  licenses: []
50
59
  post_install_message:
@@ -53,21 +62,23 @@ require_paths:
53
62
  - lib
54
63
  required_ruby_version: !ruby/object:Gem::Requirement
55
64
  requirements:
56
- - - ! '>='
65
+ - - ">="
57
66
  - !ruby/object:Gem::Version
58
- version: '0'
67
+ version: !binary |-
68
+ MA==
59
69
  none: false
60
70
  required_rubygems_version: !ruby/object:Gem::Requirement
61
71
  requirements:
62
- - - ! '>='
72
+ - - ">="
63
73
  - !ruby/object:Gem::Version
64
- version: '0'
74
+ version: !binary |-
75
+ MA==
65
76
  none: false
66
77
  requirements: []
67
78
  rubyforge_project:
68
- rubygems_version: 1.8.15
79
+ rubygems_version: 1.8.24
69
80
  signing_key:
70
81
  specification_version: 3
71
82
  summary: A JRuby wrapper for the java jackson json processor jar
72
83
  test_files: []
73
- ...
84
+ has_rdoc:
data/README DELETED
@@ -1,44 +0,0 @@
1
- jrjackson
2
-
3
- a jruby library wrapping the JAVA jackson jars
4
-
5
- provides:
6
-
7
- JrJackson::Json.generate(obj) -> json string
8
- JrJackson::Json.parse(str) -> hash like object
9
-
10
- JrJackson::Smile.generate obj -> smile string
11
- JrJackson::Smile.parse smile_str -> hash like object
12
-
13
-
14
- Credit to Chuck Remes for the benchmark and initial
15
- investigation when the jruby, json gem and the jackson
16
- libraries were young.
17
-
18
- I compared json-jruby 1.5.1 and jackson/smile 1.9.5 on jruby 1.6.7 and Java 7
19
-
20
- user system total real
21
- jackson generate: 0.756000 0.000000 0.756000 ( 0.756000)
22
- smile generate: 0.530000 0.000000 0.530000 ( 0.530000)
23
- ruby generate: 2.754000 0.000000 2.754000 ( 2.754000)
24
- jackson parse: 0.630000 0.000000 0.630000 ( 0.630000)
25
- smile parse: 0.368000 0.000000 0.368000 ( 0.368000)
26
- ruby parse: 2.102000 0.000000 2.102000 ( 2.102000)
27
-
28
- Variants:
29
-
30
- jrjackson.rb
31
- this variant is the fastest but the parse function will
32
- return Java ArrayList instead of Ruby Array and
33
- Java LinkedHashMap instead of Ruby Hash.
34
- In Jruby 1.6.0+, these java classes have most if not all
35
- of the behaviour of the corresponding Ruby classes
36
-
37
- jrjackson_r.rb
38
- If you absolutely need Ruby Objects then use this variant
39
- It parses a little bit slower than the above but
40
- returns Ruby Array and Hash objects
41
-
42
- jrjackson_r_sym.rb
43
- Will give you symbols for hash keys instead of strings
44
-
Binary file
@@ -1,35 +0,0 @@
1
- module JrJackson
2
- include_package "org.codehaus.jackson.map.module"
3
- java_import org.codehaus.jackson.map.deser.UntypedObjectDeserializer
4
- java_import org.codehaus.jackson.Version
5
- java_import org.codehaus.jackson.JsonToken
6
-
7
- class RubyObjectDeserializer < UntypedObjectDeserializer
8
- def mapArray(jp,ctxt)
9
- arr = super(jp,ctxt)
10
- arr.entries
11
- end
12
-
13
- def mapObject(jp,ctxt)
14
- t = jp.getCurrentToken
15
- t = jp.nextToken if t == JsonToken::START_OBJECT
16
-
17
- return {} if t != JsonToken::FIELD_NAME
18
- tmp = []
19
- begin
20
- k = jp.getText
21
- jp.nextToken
22
- v = deserialize(jp, ctxt)
23
- tmp.push(k)
24
- tmp.push(v)
25
- end while jp.nextToken != JsonToken::END_OBJECT
26
- Hash[*tmp]
27
- end
28
- end
29
-
30
- _module = SimpleModule.new("JrJacksonModule", Version.new(1, 0, 0, nil))
31
- _module.addDeserializer(Jclass, RubyObjectDeserializer.new)
32
- Mapper.registerModule(_module)
33
-
34
- end
35
-
@@ -1,34 +0,0 @@
1
- module JrJackson
2
- include_package "org.codehaus.jackson.map.module"
3
- java_import org.codehaus.jackson.map.deser.UntypedObjectDeserializer
4
- java_import org.codehaus.jackson.Version
5
- java_import org.codehaus.jackson.JsonToken
6
-
7
- class RubyObjectDeserializer < UntypedObjectDeserializer
8
- def mapArray(jp,ctxt)
9
- arr = super(jp,ctxt)
10
- arr.entries
11
- end
12
-
13
- def mapObject(jp,ctxt)
14
- t = jp.getCurrentToken
15
- t = jp.nextToken if t == JsonToken::START_OBJECT
16
-
17
- return {} if t != JsonToken::FIELD_NAME
18
- tmp = []
19
- begin
20
- k = jp.getText
21
- jp.nextToken
22
- v = deserialize(jp, ctxt)
23
- tmp.push(k.to_sym)
24
- tmp.push(v)
25
- end while jp.nextToken != JsonToken::END_OBJECT
26
- Hash[*tmp]
27
- end
28
- end
29
-
30
- _module = SimpleModule.new("JrJacksonModule", Version.new(1, 0, 0, nil))
31
- _module.addDeserializer(Jclass, RubyObjectDeserializer.new)
32
- Mapper.registerModule(_module)
33
-
34
- end
data/lib/jrjackson_r.rb DELETED
@@ -1,11 +0,0 @@
1
- unless RUBY_PLATFORM =~ /java/
2
- error "This library is only compatible with a java-based ruby environment like JRuby."
3
- exit 255
4
- end
5
-
6
- require 'java'
7
-
8
- $CLASSPATH << 'jrjackson'
9
-
10
- require File.join("jrjackson","jrjackson")
11
- require File.join("jrjackson","rubify")
@@ -1,11 +0,0 @@
1
- unless RUBY_PLATFORM =~ /java/
2
- error "This library is only compatible with a java-based ruby environment like JRuby."
3
- exit 255
4
- end
5
-
6
- require 'java'
7
-
8
- $CLASSPATH << 'jrjackson'
9
-
10
- require File.join("jrjackson","jrjackson")
11
- require File.join("jrjackson","rubify_with_symbol_keys")