jrjackson 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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")