From e608292e014e68aaa1609392def85d00da8f6d02 Mon Sep 17 00:00:00 2001 From: olabini Date: Mon, 18 Aug 2008 12:22:14 +0000 Subject: [PATCH] Fix for JRUBY-2882. Handle error messages related to constructors better git-svn-id: http://svn.codehaus.org/jruby/trunk/jruby@7493 961051c9-f516-0410-bf72-c9f7e237a7b7 --- spec/java_integration/methods/error_spec.rb | 19 +++++++++++++++++++ src/org/jruby/javasupport/Java.java | 1 + src/org/jruby/javasupport/JavaProxyMethods.java | 7 ++++++- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 spec/java_integration/methods/error_spec.rb diff --git a/spec/java_integration/methods/error_spec.rb b/spec/java_integration/methods/error_spec.rb new file mode 100644 index 000000000..9885dddb7 --- /dev/null +++ b/spec/java_integration/methods/error_spec.rb @@ -0,0 +1,19 @@ +require File.dirname(__FILE__) + "/../spec_helper" + +describe "Java invocation errors" do + describe "(calling constructor)" do + it "should fail correctly when called with wrong parameters" do + proc do + java.util.HashMap.new "str" + end.should raise_error(NameError) + end + end + + describe "(calling instance method)" do + it "should fail correctly when called with wrong parameters" do + proc do + java.util.ArrayList.new.add_all "str" + end.should raise_error(NameError) + end + end +end diff --git a/src/org/jruby/javasupport/Java.java b/src/org/jruby/javasupport/Java.java index 1a6b5569f..2f56dbb24 100644 --- a/src/org/jruby/javasupport/Java.java +++ b/src/org/jruby/javasupport/Java.java @@ -1029,6 +1029,7 @@ public class Java implements Library { public static Class argClass(Object a) { if (a == null) return void.class; + return a.getClass(); } diff --git a/src/org/jruby/javasupport/JavaProxyMethods.java b/src/org/jruby/javasupport/JavaProxyMethods.java index 7b70e7dc2..e901a346f 100644 --- a/src/org/jruby/javasupport/JavaProxyMethods.java +++ b/src/org/jruby/javasupport/JavaProxyMethods.java @@ -3,6 +3,7 @@ package org.jruby.javasupport; import org.jruby.Ruby; import org.jruby.RubyClass; import org.jruby.RubyModule; +import org.jruby.RubyObject; import org.jruby.anno.JRubyMethod; import org.jruby.javasupport.util.RuntimeHelpers; import org.jruby.runtime.Block; @@ -36,7 +37,11 @@ public class JavaProxyMethods { @JRubyMethod public static IRubyObject to_s(IRubyObject recv) { - return ((JavaObject)recv.dataGetStruct()).to_s(); + if(recv.dataGetStruct() != null) { + return ((JavaObject)recv.dataGetStruct()).to_s(); + } else { + return ((RubyObject)recv).to_s(); + } } @JRubyMethod(name = "eql?") -- 2.11.4.GIT