Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 12 additions & 26 deletions java/src/json/ext/Generator.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@

import org.jruby.Ruby;
import org.jruby.RubyArray;
import org.jruby.RubyBignum;
import org.jruby.RubyBoolean;
import org.jruby.RubyClass;
import org.jruby.RubyFixnum;
import org.jruby.RubyFloat;
import org.jruby.RubyHash;
import org.jruby.RubyInteger;
import org.jruby.RubyNumeric;
import org.jruby.RubyString;
import org.jruby.runtime.ThreadContext;
Expand Down Expand Up @@ -66,15 +65,14 @@ private Generator() {
private static <T extends IRubyObject>
Handler<? super T> getHandlerFor(Ruby runtime, T object) {
RubyClass metaClass = object.getMetaClass();
if (metaClass == runtime.getString()) return (Handler)STRING_HANDLER;
if (metaClass == runtime.getFixnum()) return (Handler)FIXNUM_HANDLER;
if (metaClass == runtime.getHash()) return (Handler)HASH_HANDLER;
if (metaClass == runtime.getArray()) return (Handler)ARRAY_HANDLER;
if (object.isNil()) return (Handler)NIL_HANDLER;
if (object == runtime.getTrue()) return (Handler)TRUE_HANDLER;
if (object == runtime.getFalse()) return (Handler)FALSE_HANDLER;
if (metaClass == runtime.getFloat()) return (Handler)FLOAT_HANDLER;
if (metaClass == runtime.getBignum()) return (Handler)BIGNUM_HANDLER;
if (metaClass == runtime.getString()) return (Handler)STRING_HANDLER;
if (metaClass == runtime.getInteger()) return (Handler)INTEGER_HANDLER;
if (metaClass == runtime.getHash()) return (Handler)HASH_HANDLER;
if (metaClass == runtime.getArray()) return (Handler)ARRAY_HANDLER;
if (object.isNil()) return (Handler)NIL_HANDLER;
if (object == runtime.getTrue()) return (Handler)TRUE_HANDLER;
if (object == runtime.getFalse()) return (Handler)FALSE_HANDLER;
if (metaClass == runtime.getFloat()) return (Handler)FLOAT_HANDLER;
return GENERIC_HANDLER;
}

Expand Down Expand Up @@ -208,22 +206,10 @@ void generate(Session session, T object, ByteList buffer) {


/* Handlers */

static final Handler<RubyBignum> BIGNUM_HANDLER =
new Handler<RubyBignum>() {
@Override
void generate(Session session, RubyBignum object, ByteList buffer) {
// JRUBY-4751: RubyBignum.to_s() returns generic object
// representation (fixed in 1.5, but we maintain backwards
// compatibility; call to_s(IRubyObject[]) then
buffer.append(((RubyString)object.to_s(IRubyObject.NULL_ARRAY)).getByteList());
}
};

static final Handler<RubyFixnum> FIXNUM_HANDLER =
new Handler<RubyFixnum>() {
static final Handler<RubyInteger> INTEGER_HANDLER =
new Handler<RubyInteger>() {
@Override
void generate(Session session, RubyFixnum object, ByteList buffer) {
void generate(Session session, RubyInteger object, ByteList buffer) {
buffer.append(object.to_s().getByteList());
}
};
Expand Down