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 0000000..e9e0b60 Binary files /dev/null and b/src/com/edgecase/JavaStuff.class differ diff --git a/src/com/edgecase/JavaStuff.java b/src/com/edgecase/JavaStuff.java new file mode 100644 index 0000000..3f993f6 --- /dev/null +++ b/src/com/edgecase/JavaStuff.java @@ -0,0 +1,18 @@ +package com.edgecase; + +import java.util.Random; + +class JavaStuff{ + public static final Random GENERATOR = new Random(System.currentTimeMillis()); + public static final int DEFAULT_MAX = 100; + + public JavaStuff(){} + + public int randomNumber(){ + return randomNumber(DEFAULT_MAX); + } + + public int randomNumber(int max){ + return GENERATOR.nextInt(max) + 1; + } +} diff --git a/src/com/edgecase/JavaToRuby.class b/src/com/edgecase/JavaToRuby.class new file mode 100644 index 0000000..0ff0a73 Binary files /dev/null and b/src/com/edgecase/JavaToRuby.class differ 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