Skip to content

Commit

Permalink
fix issues with java import, should switch to some generic solution soon
Browse files Browse the repository at this point in the history
  • Loading branch information
Sven Fuchs committed Apr 18, 2010
1 parent 5d381da commit d0f29a2
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 11 deletions.
2 changes: 1 addition & 1 deletion lib/core_ext/ruby/string/camelize.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class String
def camelize
split(/[^a-z0-9]/i).map { |w| w.capitalize }.join
to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
end
end unless String.method_defined?(:camelize)
9 changes: 8 additions & 1 deletion lib/core_ext/ruby/string/underscore.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
class String
def underscore
self[0, 1].downcase + self[1..-1].gsub(/[A-Z]/) { |c| "_#{c.downcase}" }
# self[0, 1].downcase + self[1..-1].gsub(/[A-Z]/) { |c| "_#{c.downcase}" }
word = to_s
word.gsub!(/::/, '/')
word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
word.tr!("-", "_")
word.downcase!
word
end
end unless String.method_defined?(:underscore)
2 changes: 1 addition & 1 deletion lib/steam/browser/html_unit/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def perform(request_settings)
end

def request_settings(request)
url = Steam::Java::Net::Url.new(request.url)
url = Java::Net::Url.new(request.url)
settings = WebRequestSettings.new(url)
request.headers.each { |name, value| settings.setAdditionalHeader(name.to_s, value.to_s) } if request.headers
settings
Expand Down
2 changes: 1 addition & 1 deletion lib/steam/browser/html_unit/connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class Connection
classifier = Version.getProductVersion == '2.6' ?
'org.apache.commons.httpclient.NameValuePair' : # HtmlUnit 2.6
'com.gargoylesoftware.htmlunit.util.NameValuePair' # HtmlUnit 2.7
NameValuePair = Java.import(classifier, :NameValuePair)
NameValuePair = Java.import(classifier, 'NameValuePair')

attr_reader :connection, :java

Expand Down
13 changes: 7 additions & 6 deletions lib/steam/java.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,19 +33,19 @@ def const_missing(name)
end

def import(signature, name = nil)
init unless @initialized
name = path_to_const_name(signature)
name ||= path_to_const_name(signature)
name.gsub!('Java::', '')
const_set_nested(name, Rjb::import(signature))
end

def path_to_const_name(path)
path.split('.').map { |token| token.underscore.camelize }.join('::').gsub('Java::', '')
path.split('.').map { |token| token.underscore.camelize }.join('::')
end

def init
@initialized = true

import('java.net.URL')
import('java.net.URL', 'Java::Net::Url')
import('java.lang.System')
import('java.util.Arrays')
import('java.util.ArrayList')
Expand All @@ -56,18 +56,19 @@ def init
def load_from(path)
paths = Dir["#{Steam.config[:html_unit][:java_path]}/*.jar"]
load(paths.join(':')) unless paths.empty?
init
end

def load(paths)
Rjb::load(paths, Steam.config[:java_load_params].to_a)
end

def logger(classifier)
Java::Util::Logging::Logger.getLogger(classifier)
Util::Logging::Logger.getLogger(classifier)
end

def log_level(name)
Java::Util::Logging::Level.send(name.to_s.upcase)
Util::Logging::Level.send(name.to_s.upcase)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion test/java_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class JavaTest < Test::Unit::TestCase
end

test "java_path_to_const_name" do
assert_equal 'Util::ArrayList', Java.path_to_const_name("java.util.ArrayList")
assert_equal 'Java::Util::ArrayList', Java.path_to_const_name("java.util.ArrayList")
end

test "import" do
Expand Down

0 comments on commit d0f29a2

Please sign in to comment.