Class: Naether::Java::Ruby

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/naether/java.rb

Overview

Handle loading jars for Ruby via Rjb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRuby

Returns a new instance of Ruby.



126
127
128
129
130
131
132
133
134
# File 'lib/naether/java.rb', line 126

def initialize()
  require 'rjb' 
  
  # 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_jars = []
end

Instance Attribute Details

#loaded_jarsObject (readonly)

Returns the value of attribute loaded_jars.



124
125
126
# File 'lib/naether/java.rb', line 124

def loaded_jars
  @loaded_jars
end

Instance Method Details

#convert_to_ruby_array(java_array, to_string = false) ⇒ Object



166
167
168
169
170
171
172
173
174
# File 'lib/naether/java.rb', line 166

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

#convert_to_ruby_hash(java_hash, to_string = false) ⇒ Object



176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# File 'lib/naether/java.rb', line 176

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

#create(java_class, *args) ⇒ Object



136
137
138
139
# File 'lib/naether/java.rb', line 136

def create( java_class, *args )
  java_class = Rjb::import(java_class) 
  java_class.new( *args )
end

#load_jars(jars) ⇒ Object



145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/naether/java.rb', line 145

def load_jars(jars)
  loadable_jars = []
  unless jars.is_a?( Array )
    jars = [jars]
  end
  
  jars.each do |jar|
    expanded_jar = File.expand_path(jar)
    if !@loaded_jars.include? expanded_jar
      loadable_jars << expanded_jar
      @loaded_jars << expanded_jar
    end
  end
  
  unless loadable_jars.empty?
    Rjb::add_jar( loadable_jars )
  end
  
  loadable_jars
end

#set_log_level(level) ⇒ Object



141
142
143
# File 'lib/naether/java.rb', line 141

def set_log_level( level )
  Rjb::import('com.slackworks.naether.LogUtil').changeLevel( 'com.slackworks', level )
end