summaryrefslogtreecommitdiff
path: root/java/src/json/ext/Generator.java
diff options
context:
space:
mode:
authorFlorian Frank <flori@ping.de>2016-02-25 10:27:44 +0100
committerFlorian Frank <flori@ping.de>2016-02-25 10:27:44 +0100
commit8883a51ec7a56cd8bda87ab2c82924a90d7aa782 (patch)
treee4804afa8c639993f5ef4e872e201cad3a843c44 /java/src/json/ext/Generator.java
parentbf8ef07bf3cf0fe7126b029b888e4054116c7c09 (diff)
parent4922d2ae6cf93d14f7d51d416f518b5945935b3a (diff)
downloadjson-8883a51ec7a56cd8bda87ab2c82924a90d7aa782.tar.gz
Merge branch 'v1.8'
Diffstat (limited to 'java/src/json/ext/Generator.java')
-rw-r--r--java/src/json/ext/Generator.java16
1 files changed, 9 insertions, 7 deletions
diff --git a/java/src/json/ext/Generator.java b/java/src/json/ext/Generator.java
index ecceb27..bb3a394 100644
--- a/java/src/json/ext/Generator.java
+++ b/java/src/json/ext/Generator.java
@@ -1,8 +1,7 @@
/*
* This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
*
- * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files
- * for details.
+ * Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt
*/
package json.ext;
@@ -428,11 +427,14 @@ public final class Generator {
new Handler<IRubyObject>() {
@Override
RubyString generateNew(Session session, IRubyObject object) {
- IRubyObject result =
- object.callMethod(session.getContext(), "to_json",
- new IRubyObject[] {session.getState()});
- if (result instanceof RubyString) return (RubyString)result;
- throw session.getRuntime().newTypeError("to_json must return a String");
+ if (object.respondsTo("to_json")) {
+ IRubyObject result = object.callMethod(session.getContext(), "to_json",
+ new IRubyObject[] {session.getState()});
+ if (result instanceof RubyString) return (RubyString)result;
+ throw session.getRuntime().newTypeError("to_json must return a String");
+ } else {
+ return OBJECT_HANDLER.generateNew(session, object);
+ }
}
@Override