From 9b97fea75ab3690add797bbfbedc6ee5a3237c8d Mon Sep 17 00:00:00 2001 From: Marc Peabody Date: Tue, 28 Sep 2010 09:38:41 -0400 Subject: [PATCH] experimenting with more java interop --- src/Rakefile | 4 ++++ src/about_java_interop.rb | 10 ++++++++++ src/com/edgecase/JavaStuff.class | Bin 0 -> 622 bytes src/com/edgecase/JavaStuff.java | 18 ++++++++++++++++++ src/com/edgecase/JavaToRuby.class | Bin 0 -> 1149 bytes src/com/edgecase/JavaToRuby.java | 28 ++++++++++++++++++++++++++++ src/try_java_to_ruby.rb | 5 +++++ 7 files changed, 65 insertions(+) create mode 100644 src/com/edgecase/JavaStuff.class create mode 100644 src/com/edgecase/JavaStuff.java create mode 100644 src/com/edgecase/JavaToRuby.class create mode 100644 src/com/edgecase/JavaToRuby.java create mode 100644 src/try_java_to_ruby.rb diff --git a/src/Rakefile b/src/Rakefile index 1a2c7f2..6c1960f 100644 --- a/src/Rakefile +++ b/src/Rakefile @@ -10,3 +10,7 @@ task :test do ruby 'path_to_enlightenment.rb' end +task :java do + `javac **/*.java` +end + diff --git a/src/about_java_interop.rb b/src/about_java_interop.rb index b4fdbd5..342ab88 100644 --- a/src/about_java_interop.rb +++ b/src/about_java_interop.rb @@ -85,5 +85,15 @@ class AboutJavaInterop < EdgeCase::Koan assert_equal __(false), java_array.toString.is_a?(java.lang.String) end + def test_call_custom_class + number_generator = com.edgecase.JavaStuff.new + assert_equal __(true), number_generator.random_number > 0 + end + # FREAKS OUT + # def test_call_ruby_to_java_to_ruby + # number_generator = com.edgecase.JavaToRuby.new + # puts number_generator.random_number + # puts "*"*20 + # end end diff --git a/src/com/edgecase/JavaStuff.class b/src/com/edgecase/JavaStuff.class new file mode 100644 index 0000000000000000000000000000000000000000..e9e0b606936af96ec4838e6a77e183dcdb858a2d GIT binary patch literal 622 zcmZ9I-A>y;5QWbqPK=F#@YA%EQhrMlE^4W_ph^)9RiXe=l1A-SaqI;d*=xyJqw-GN zv`B!c)Cb_9P-hM0BEFazkH0-WXYU{G{sQ=jx(y4jZA@Uv;_}8u3Ckwl+E~G=epxfI zZeoLAeQ6#xyN&))moV2k^UggtQ(@$GJsBkN4q@_hbHDMm)BkbM_(q@>VQMdtBjrgo z@S;o<`G*0ayc^0;eIgWV^#Q@yO9DZd>4Z`oX7Ny@eQy}?#z}MG$6ZddqETzrxlQc) z(UXeZOS04#`=LHF-DX=om7Sb?&;}h;Fza9eRR=aE9c-dXsEm6z@y@{(-fO%@sQO9l zir`fE-blF5ivJHro;-DrhG)W81XGHiswH`PRLwv3E=EekgjqjJQz2D9jKx71Md2uq z(bh5A^#NA-!Y#g(0v5GBo)+O?3Y;U~&cNWABXFJL%`$i5UfR9^{o;Wz&$XN{Ev^fA z!BwLxEUHm+yAoWZa5)A$Ib3~$*BLG_VgE*P=^BP{JkD3x>C0yyTkK0e(|=Iw>HPS&C-RjPa?%I zx|7}AKFk+S3fmtTSdL*V3-m=AB zvsMyrk(a7u(Ohnqom$(*FqK@+pYk(qRJmO--j_~==}}QNdv1!lXHg*qPZ_3@xq*J+ zO|#mms~$K_*A%;!tP*)gIg5^b!n#ba;TB>V;?Nm%X*f3;rfbzbR5)C^Is2$MI2(S=RD=+{SQ<0>Wc8%FG*kQ@fz`9 zB>!T!jXu>Tav%Z3e2CZU!ls6<{WG-Ps~#>WFy7mu{_C*kv`zgz@1SCc4SJm47aAvV z#;XiV|G{)UKjXb)%n&7NcEm^Cta>?rcuis_O2gOdn1W8fW0FQXfS7C$?P8e1G#GCB z))@@Zo~DW9ZL-XfW~7H#F2O$2hGCXu$Tvnv#>pk%yUvrAuFA?pxrM-|KIbUzkVR&n z_rvr~ScX2f{A7tM1dlH<6di6MR9L-&LZ@(aqy=@hh0zwYZx{=pn^vU+AlPFBx0^bQ ag=_G#kX*`FjDJC-AHGJ{cj-ESd%pqrGYCxp literal 0 HcmV?d00001 diff --git a/src/com/edgecase/JavaToRuby.java b/src/com/edgecase/JavaToRuby.java new file mode 100644 index 0000000..2ae5958 --- /dev/null +++ b/src/com/edgecase/JavaToRuby.java @@ -0,0 +1,28 @@ +package com.edgecase; + +import org.jruby.Ruby; +import java.lang.reflect.Method; +import java.util.Map; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; + + +class JavaToRuby{ + public static final Ruby RUBY_RUNTIME = Ruby.getDefaultInstance(); + public static final int DEFAULT_MAX = 100; + + public JavaToRuby() {} + + public Object randomNumber() throws ScriptException{ + return randomNumber(DEFAULT_MAX); + } + + public Object randomNumber(int max) throws ScriptException{ + ScriptEngine jruby = new ScriptEngineManager().getEngineByName("jruby"); + /* jruby.put("message", "hello world"); */ + return jruby.eval("puts 'craaaaaaaap!!!!'; rand "+max); + } +} + + diff --git a/src/try_java_to_ruby.rb b/src/try_java_to_ruby.rb new file mode 100644 index 0000000..0a0e0fe --- /dev/null +++ b/src/try_java_to_ruby.rb @@ -0,0 +1,5 @@ +include Java + +number_generator = com.edgecase.JavaToRuby.new +puts number_generator.random_number +puts "*"*20