Class: Naether::Java::Ruby
- Inherits:
-
Object
- Object
- Naether::Java::Ruby
- Includes:
- Singleton
- Defined in:
- lib/naether/java/ruby.rb
Instance Attribute Summary (collapse)
-
- (Object) class_loader
readonly
Returns the value of attribute class_loader.
-
- (Object) loaded_paths
readonly
Returns the value of attribute loaded_paths.
Instance Method Summary (collapse)
- - (Object) convert_to_java_list(ruby_array)
- - (Object) convert_to_ruby_array(java_array, to_string = false)
- - (Object) convert_to_ruby_hash(java_hash, to_string = false)
- - (Object) create(target_class, *args)
- - (Object) exec_static_method(target_class, target_method, params, types = nil)
-
- (Ruby) initialize
constructor
A new instance of Ruby.
- - (Object) internal_load_paths(paths)
- - (Object) load_paths(paths)
Constructor Details
- (Ruby) initialize
A new instance of Ruby
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/naether/java/ruby.rb', line 19 def initialize require 'rjb' naether_jar = Naether::Configuration.naether_jar # Call Rjb::load with an empty classpath, incase Rjb::load has already been called java_opts = (ENV['JAVA_OPTS'] || ENV['JAVA_OPTIONS']).to_s.split Rjb::load("", java_opts) @loaded_paths = [] load_paths( naether_jar ) class_loader_class = Rjb::import( "com.tobedevoured.naether.PathClassLoader" ) @class_loader = class_loader_class.new() internal_load_paths( naether_jar ) end |
Instance Attribute Details
- (Object) class_loader (readonly)
Returns the value of attribute class_loader
17 18 19 |
# File 'lib/naether/java/ruby.rb', line 17 def class_loader @class_loader end |
- (Object) loaded_paths (readonly)
Returns the value of attribute loaded_paths
17 18 19 |
# File 'lib/naether/java/ruby.rb', line 17 def loaded_paths @loaded_paths end |
Instance Method Details
- (Object) convert_to_java_list(ruby_array)
111 112 113 114 115 116 117 118 |
# File 'lib/naether/java/ruby.rb', line 111 def convert_to_java_list( ruby_array ) list = Rjb::import("java.util.ArrayList").new ruby_array.each do |item| list.add( item ) end list end |
- (Object) convert_to_ruby_array(java_array, to_string = false)
120 121 122 123 124 125 126 127 128 |
# File 'lib/naether/java/ruby.rb', line 120 def convert_to_ruby_array( java_array, to_string = false ) ruby_array = java_array.toArray() if to_string ruby_array = ruby_array.map { |x| x.toString()} end ruby_array end |
- (Object) convert_to_ruby_hash(java_hash, to_string = false)
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/naether/java/ruby.rb', line 130 def convert_to_ruby_hash( java_hash, to_string = false ) hash = {} keys = java_hash.keySet() iterator = keys.iterator() if to_string while iterator.hasNext() key = iterator.next().toString() hash[key] = java_hash.get( key ).toString() end else while iterator.hasNext() key = iterator.next() hash[key] = java_hash.get( key ) end end hash end |
- (Object) create(target_class, *args)
38 39 40 41 42 43 44 45 |
# File 'lib/naether/java/ruby.rb', line 38 def create( target_class, *args ) #@class_loader.newInstance(target_class, *args ) if args.size > 0 @class_loader._invoke('newInstance', 'Ljava.lang.String;[Ljava.lang.Object;', target_class, args ) else @class_loader._invoke('newInstance', 'Ljava.lang.String;', target_class ) end end |
- (Object) exec_static_method(target_class, target_method, params, types = nil)
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/naether/java/ruby.rb', line 47 def exec_static_method( target_class, target_method, params, types = nil ) unless params.is_a? Array params = [params] end if types unless types.is_a? Array types = [types] end end result = nil if params.nil? result = @class_loader._invoke('execStaticMethod','Ljava.lang.String;Ljava.lang.String;', target_class, target_method ) elsif types.nil? result = @class_loader._invoke('execStaticMethod','Ljava.lang.String;Ljava.lang.String;Ljava.util.List;', target_class, target_method, convert_to_java_list(params) ) else result = @class_loader._invoke('execStaticMethod','Ljava.lang.String;Ljava.lang.String;Ljava.util.List;Ljava.util.List;', target_class, target_method, convert_to_java_list(params), convert_to_java_list(types) ) end unless result.nil? # Force toString on java.lang.String otherwise the result will be a Rjb::Proxy if result.getClass().getName() == 'java.lang.String' result.toString() else result end end end |
- (Object) internal_load_paths(paths)
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/naether/java/ruby.rb', line 76 def internal_load_paths(paths) loadable_paths = [] unless paths.is_a? Array paths = [paths] end paths.each do |path| = File.(path) if File.exists?( ) @class_loader.addPath( path ) loadable_paths << end end loadable_paths end |
- (Object) load_paths(paths)
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/naether/java/ruby.rb', line 93 def load_paths(paths) loadable_paths = [] unless paths.is_a? Array paths = [paths] end paths.each do |path| = File.(path) if !@loaded_paths.include?() && File.exists?( ) @loaded_paths << Rjb::add_jar( ) loadable_paths << end end loadable_paths end |