naether 0.8.6 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +106 -0
- data/Rakefile +14 -0
- data/VERSION +1 -1
- data/doc/Naether.html +3136 -0
- data/doc/Naether/Bootstrap.html +796 -0
- data/doc/Naether/Configurator.html +490 -0
- data/doc/Naether/Java.html +795 -0
- data/doc/Naether/Java/JRuby.html +926 -0
- data/doc/Naether/Java/Ruby.html +931 -0
- data/doc/Naether/Maven.html +1143 -0
- data/doc/_index.html +192 -0
- data/doc/class_list.html +53 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +328 -0
- data/doc/file.README.html +195 -0
- data/doc/file_list.html +55 -0
- data/doc/frames.html +28 -0
- data/doc/index.html +195 -0
- data/doc/js/app.js +214 -0
- data/doc/js/full_list.js +173 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +708 -0
- data/doc/top-level-namespace.html +112 -0
- data/jar_dependencies.yml +19 -25
- data/lib/naether.rb +147 -142
- data/lib/naether/bootstrap.rb +41 -43
- data/lib/naether/configuration.rb +61 -0
- data/lib/naether/java.rb +22 -198
- data/lib/naether/java/jruby.rb +129 -0
- data/lib/naether/java/ruby.rb +153 -0
- data/lib/naether/maven.rb +142 -0
- data/naether-0.9.0.jar +0 -0
- data/naether.gemspec +95 -0
- data/pom.xml +153 -132
- metadata +86 -10
- data/README.rdoc +0 -47
- data/naether-0.8.6.jar +0 -0
data/lib/naether/bootstrap.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "#{File.dirname(__FILE__)}/java"
|
2
|
+
require "#{File.dirname(__FILE__)}/configuration"
|
2
3
|
require 'yaml'
|
3
4
|
require 'open-uri'
|
4
5
|
require 'fileutils'
|
@@ -21,19 +22,13 @@ class Naether
|
|
21
22
|
ENV['M2_REPO'] || File.expand_path('~/.m2/repository')
|
22
23
|
end
|
23
24
|
|
24
|
-
# Find naether jar relative to the gem install
|
25
|
-
def naether_jar
|
26
|
-
Dir.glob(File.expand_path("#{File.dirname(__FILE__)}/../../naether*.jar")).first
|
27
|
-
end
|
28
|
-
|
29
25
|
# write bootstrap dependencies to yaml file
|
30
|
-
def write_dependencies(
|
31
|
-
Naether::Java.load_jars_dir( jar_path || Naether::JAR_LIB )
|
26
|
+
def write_dependencies( dest = 'jar_dependencies.yml' )
|
32
27
|
deps = {};
|
33
|
-
if Naether.platform == 'java'
|
34
|
-
deps[:dependencies] = com.
|
28
|
+
if Naether::Configuration.platform == 'java'
|
29
|
+
deps[:dependencies] = com.tobedevoured.naether.Bootstrap.dependencies.to_a
|
35
30
|
else
|
36
|
-
bootstrap = Rjb::import('com.
|
31
|
+
bootstrap = Rjb::import('com.tobedevoured.naether.Bootstrap')
|
37
32
|
deps[:dependencies] = bootstrap.dependencies.toArray().map{ |dep| dep.toString() }
|
38
33
|
end
|
39
34
|
|
@@ -50,13 +45,36 @@ class Naether
|
|
50
45
|
end
|
51
46
|
|
52
47
|
if dep_file.nil?
|
53
|
-
dep_file =
|
48
|
+
dep_file = Naether::Configuration.dependencies_yml
|
54
49
|
end
|
55
50
|
|
56
51
|
dep = YAML.load_file( dep_file )
|
57
52
|
@@dependencies = dep[:dependencies]
|
58
53
|
end
|
59
54
|
|
55
|
+
|
56
|
+
def bootstrap_local_repo(local_repo = nil, opts = {} )
|
57
|
+
local_repo = local_repo || default_local_repo
|
58
|
+
|
59
|
+
opts[:local_repo] = local_repo
|
60
|
+
|
61
|
+
temp_naether_dir = File.join( local_repo, ".naether" )
|
62
|
+
|
63
|
+
|
64
|
+
deps = download_dependencies( temp_naether_dir, opts )
|
65
|
+
|
66
|
+
jars = (deps[:exists] + deps[:downloaded]).map {|jar| jar.values.first }
|
67
|
+
|
68
|
+
jars = Naether::Java.internal_load_paths( jars )
|
69
|
+
|
70
|
+
if ( deps[:downloaded].size > 0)
|
71
|
+
install_dependencies_to_local_repo( deps[:downloaded], jars, opts )
|
72
|
+
end
|
73
|
+
|
74
|
+
#raise Naether::Java.instance.java.class_loader.getLoadedPaths().map { |x| x.toString() }.sort.inspect
|
75
|
+
|
76
|
+
end
|
77
|
+
|
60
78
|
def download_dependencies( dest, opts = {} )
|
61
79
|
|
62
80
|
if !File.exists? dest
|
@@ -68,13 +86,12 @@ class Naether
|
|
68
86
|
if opts[:deps]
|
69
87
|
deps[:missing] = opts[:deps]
|
70
88
|
else
|
71
|
-
deps = check_local_repo_for_deps( opts[:local_repo] )
|
89
|
+
deps = check_local_repo_for_deps( opts[:local_repo], opts )
|
72
90
|
end
|
73
91
|
|
74
92
|
deps[:downloaded] = []
|
75
93
|
|
76
94
|
if deps[:missing].size > 0
|
77
|
-
puts "Downloading jars for Naether"
|
78
95
|
|
79
96
|
deps[:missing].each do |dep|
|
80
97
|
notation = dep.split(":")
|
@@ -96,7 +113,7 @@ class Naether
|
|
96
113
|
|
97
114
|
deps[:downloaded] << { dep => maven_path }
|
98
115
|
else
|
99
|
-
deps[:
|
116
|
+
deps[:downloaded] << { dep => maven_path }
|
100
117
|
end
|
101
118
|
end
|
102
119
|
end
|
@@ -104,16 +121,16 @@ class Naether
|
|
104
121
|
deps
|
105
122
|
end
|
106
123
|
|
107
|
-
def check_local_repo_for_deps(local_repo = nil)
|
124
|
+
def check_local_repo_for_deps(local_repo = nil, opts = {} )
|
108
125
|
|
109
126
|
local_repo = local_repo || default_local_repo
|
110
127
|
local_repo = File.expand_path(local_repo)
|
111
128
|
|
112
129
|
#puts "Checking #{local_repo} for jars to bootstrap Naether"
|
113
130
|
|
114
|
-
deps = {:exists => [], :missing => [] }
|
131
|
+
deps = {:exists => [], :missing => [], :downloaded => [] }
|
115
132
|
|
116
|
-
dependencies.each do |dep|
|
133
|
+
dependencies( opts[:dep_yaml] ).each do |dep|
|
117
134
|
notation = dep.split(":")
|
118
135
|
group = notation[0].gsub("\.", File::SEPARATOR)
|
119
136
|
artifact = notation[1].gsub("\.", File::SEPARATOR)
|
@@ -131,41 +148,22 @@ class Naether
|
|
131
148
|
end
|
132
149
|
|
133
150
|
end
|
134
|
-
|
135
151
|
deps
|
136
152
|
end
|
137
153
|
|
138
|
-
def install_dependencies_to_local_repo(
|
154
|
+
def install_dependencies_to_local_repo( install_jars, naether_jars, opts = {} )
|
139
155
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
@naether = Naether.create_from_paths( jars_or_dir, opts[:naether_jar_dir] )
|
144
|
-
jars = Dir.glob( "#{jars_or_dir}#{File::SEPARATOR}*.jar" )
|
145
|
-
else
|
146
|
-
@naether = Naether.create_from_jars( jars_or_dir )
|
147
|
-
jars = jars_or_dir
|
148
|
-
end
|
156
|
+
require "#{File.dirname(__FILE__)}/../naether"
|
157
|
+
|
158
|
+
@naether = Naether.create_from_jars( naether_jars )
|
149
159
|
|
150
160
|
if opts[:local_repo]
|
151
161
|
@naether.local_repo_path = opts[:local_repo]
|
152
162
|
end
|
153
163
|
|
154
|
-
|
155
|
-
notation = dep.
|
156
|
-
|
157
|
-
artifact = notation[1].gsub("\.", File::SEPARATOR)
|
158
|
-
type = notation[2]
|
159
|
-
version = notation[3]
|
160
|
-
|
161
|
-
name = "#{artifact}-#{version}.#{type}"
|
162
|
-
|
163
|
-
jar = jars.select { |x| x =~ /#{name}/ }
|
164
|
-
if jar.size > 0
|
165
|
-
jar = jar[0]
|
166
|
-
@naether.install( dep, nil, jar )
|
167
|
-
end
|
168
|
-
|
164
|
+
install_jars.each do |dep|
|
165
|
+
notation, path = dep.to_a.first
|
166
|
+
@naether.install( notation, nil, path )
|
169
167
|
end
|
170
168
|
|
171
169
|
@naether
|
@@ -0,0 +1,61 @@
|
|
1
|
+
|
2
|
+
class Naether
|
3
|
+
class Configurator
|
4
|
+
def initialize(data={})
|
5
|
+
gem_dir = File.expand_path("#{File.dirname(__FILE__)}/../../")
|
6
|
+
|
7
|
+
version = nil
|
8
|
+
|
9
|
+
# Load VERSION file from gem to VERSION var
|
10
|
+
if File.exists?( File.expand_path("#{File.dirname(__FILE__)}/../../VERSION") )
|
11
|
+
version = IO.read(File.expand_path("#{File.dirname(__FILE__)}/../../VERSION")).strip
|
12
|
+
|
13
|
+
# VERSION file not found in gem dir, assume in current path, e.g.running from checkout
|
14
|
+
else
|
15
|
+
version = IO.read(File.expand_path("VERSION")).strip
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
@data = {
|
21
|
+
:gem_dir => gem_dir,
|
22
|
+
:naether_jar => File.join( gem_dir, "naether-#{version}.jar"),
|
23
|
+
:platform => ($platform || RUBY_PLATFORM[/java/] || 'ruby'),
|
24
|
+
:version => version,
|
25
|
+
:depenencies_yml => File.expand_path("#{File.dirname( __FILE__ )}/../../jar_dependencies.yml")
|
26
|
+
}
|
27
|
+
|
28
|
+
update!(data)
|
29
|
+
end
|
30
|
+
|
31
|
+
def update!(data)
|
32
|
+
data.each do |key, value|
|
33
|
+
self[key] = value
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def [](key)
|
38
|
+
@data[key.to_sym]
|
39
|
+
end
|
40
|
+
|
41
|
+
def []=(key, value)
|
42
|
+
if value.class == Hash
|
43
|
+
@data[key.to_sym] = Config.new(value)
|
44
|
+
else
|
45
|
+
@data[key.to_sym] = value
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def method_missing(sym, *args)
|
50
|
+
if sym.to_s =~ /(.+)=$/
|
51
|
+
self[$1] = args.first
|
52
|
+
else
|
53
|
+
self[sym]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
unless defined?(Naether::Configuration)
|
59
|
+
Naether::Configuration = Naether::Configurator.new
|
60
|
+
end
|
61
|
+
end
|
data/lib/naether/java.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'singleton'
|
2
|
+
require "#{File.dirname(__FILE__)}/configuration"
|
2
3
|
|
3
4
|
# :title:Naether::Java
|
4
5
|
#
|
@@ -14,39 +15,22 @@ class Naether
|
|
14
15
|
|
15
16
|
attr_reader :java
|
16
17
|
|
17
|
-
def initialize
|
18
|
-
|
18
|
+
def initialize()
|
19
|
+
naether_jar = Naether::Configuration.naether_jar
|
20
|
+
|
21
|
+
unless File.exists? naether_jar
|
22
|
+
raise "Cannot create Naether::Java: #{naether_jar} does not exist"
|
23
|
+
end
|
24
|
+
|
25
|
+
if Naether::Configuration.platform == 'java'
|
26
|
+
require "#{File.dirname(__FILE__)}/java/jruby"
|
19
27
|
@java = Naether::Java::JRuby.instance
|
20
28
|
else
|
29
|
+
require "#{File.dirname(__FILE__)}/java/ruby"
|
21
30
|
@java = Naether::Java::Ruby.instance
|
22
31
|
end
|
23
32
|
end
|
24
33
|
|
25
|
-
# Jars loaded
|
26
|
-
def self.loaded_jars
|
27
|
-
instance.java.loaded_jars
|
28
|
-
end
|
29
|
-
|
30
|
-
# Loads all jars from the array of paths
|
31
|
-
def self.load_jars_dir(paths)
|
32
|
-
unless paths.is_a? Array
|
33
|
-
paths = [paths]
|
34
|
-
end
|
35
|
-
|
36
|
-
jars = []
|
37
|
-
paths.each do |path|
|
38
|
-
jars = jars + Dir.glob( "#{File.expand_path(path)}/*.jar", File::FNM_CASEFOLD)
|
39
|
-
end
|
40
|
-
|
41
|
-
Naether::Java.load_jars(jars)
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
# Load jars for the runtime platform
|
46
|
-
def self.load_jars(jars)
|
47
|
-
instance.java.load_jars(jars)
|
48
|
-
end
|
49
|
-
|
50
34
|
# Paths loaded
|
51
35
|
def self.loaded_paths
|
52
36
|
instance.java.loaded_paths
|
@@ -57,12 +41,21 @@ class Naether
|
|
57
41
|
instance.java.load_paths(paths)
|
58
42
|
end
|
59
43
|
|
44
|
+
# Load paths for the runtime platform
|
45
|
+
def self.internal_load_paths(paths)
|
46
|
+
instance.java.internal_load_paths(paths)
|
47
|
+
end
|
48
|
+
|
60
49
|
def self.create( target_class, *args )
|
61
50
|
instance.java.create( target_class, *args )
|
62
51
|
end
|
63
52
|
|
64
|
-
def self.
|
65
|
-
instance.java.
|
53
|
+
def self.exec_static_method( target_class, target_method, *args )
|
54
|
+
instance.java.exec_static_method( target_class, target_method, *args )
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.convert_to_java_list( ruby_array )
|
58
|
+
instance.java.convert_to_java_list( ruby_array )
|
66
59
|
end
|
67
60
|
|
68
61
|
def self.convert_to_ruby_array( java_array, to_string = false )
|
@@ -73,174 +66,5 @@ class Naether
|
|
73
66
|
instance.java.convert_to_ruby_hash( java_hash, to_string )
|
74
67
|
end
|
75
68
|
|
76
|
-
#
|
77
|
-
# Handle loading jars for JRuby
|
78
|
-
#
|
79
|
-
class JRuby
|
80
|
-
include Singleton
|
81
|
-
|
82
|
-
attr_reader :loaded_jars, :loaded_paths
|
83
|
-
|
84
|
-
def initialize
|
85
|
-
require 'java'
|
86
|
-
|
87
|
-
@loaded_jars = []
|
88
|
-
@loaded_paths = []
|
89
|
-
end
|
90
|
-
|
91
|
-
def create( target_class, *args )
|
92
|
-
java_class = java_class(target_class)
|
93
|
-
java_class.new( *args )
|
94
|
-
end
|
95
|
-
|
96
|
-
def java_class( target_class )
|
97
|
-
eval(target_class)
|
98
|
-
end
|
99
|
-
|
100
|
-
def load_paths(paths)
|
101
|
-
load_paths = []
|
102
|
-
unless paths.is_a? Array
|
103
|
-
paths = [paths]
|
104
|
-
end
|
105
|
-
|
106
|
-
paths.each do |path|
|
107
|
-
expanded_path = File.expand_path(path)
|
108
|
-
if !@loaded_paths.include? expanded_path
|
109
|
-
$CLASSPATH << expanded_path
|
110
|
-
load_paths << expanded_path
|
111
|
-
@loaded_paths << expanded_path
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
load_paths
|
116
|
-
end
|
117
|
-
|
118
|
-
def load_jars(jars)
|
119
|
-
load_jars = []
|
120
|
-
unless jars.is_a? Array
|
121
|
-
jars = [jars]
|
122
|
-
end
|
123
|
-
|
124
|
-
jars.each do |jar|
|
125
|
-
expanded_jar = File.expand_path(jar)
|
126
|
-
if !@loaded_jars.include? expanded_jar
|
127
|
-
require expanded_jar
|
128
|
-
load_jars << expanded_jar
|
129
|
-
@loaded_jars << expanded_jar
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
load_jars
|
134
|
-
end
|
135
|
-
|
136
|
-
def convert_to_ruby_array( java_array, to_string = false )
|
137
|
-
java_array.to_a
|
138
|
-
end
|
139
|
-
|
140
|
-
def convert_to_ruby_hash( java_hash, to_string = false )
|
141
|
-
java_hash.to_hash
|
142
|
-
end
|
143
|
-
|
144
|
-
end
|
145
|
-
|
146
|
-
#
|
147
|
-
# Handle loading jars for Ruby via Rjb
|
148
|
-
#
|
149
|
-
class Ruby
|
150
|
-
include Singleton
|
151
|
-
|
152
|
-
attr_reader :loaded_jars, :loaded_paths
|
153
|
-
|
154
|
-
def initialize()
|
155
|
-
require 'rjb'
|
156
|
-
|
157
|
-
# Call Rjb::load with an empty classpath, incase Rjb::load has already been called
|
158
|
-
java_opts = (ENV['JAVA_OPTS'] || ENV['JAVA_OPTIONS']).to_s.split
|
159
|
-
Rjb::load("", java_opts)
|
160
|
-
|
161
|
-
@loaded_jars = []
|
162
|
-
@loaded_paths = []
|
163
|
-
end
|
164
|
-
|
165
|
-
def create( target_class, *args )
|
166
|
-
target_class = java_class(target_class)
|
167
|
-
target_class.new( *args )
|
168
|
-
end
|
169
|
-
|
170
|
-
def java_class( target_class )
|
171
|
-
Rjb::import( target_class )
|
172
|
-
end
|
173
|
-
|
174
|
-
def load_paths(paths)
|
175
|
-
loadable_paths = []
|
176
|
-
unless paths.is_a? Array
|
177
|
-
paths = [paths]
|
178
|
-
end
|
179
|
-
|
180
|
-
paths.each do |path|
|
181
|
-
expanded_path = File.expand_path(path)
|
182
|
-
if !@loaded_paths.include? expanded_path
|
183
|
-
@loaded_paths << expanded_path
|
184
|
-
loadable_paths << expanded_path
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
Rjb::load(loadable_paths.join(File::PATH_SEPARATOR))
|
189
|
-
|
190
|
-
loadable_paths
|
191
|
-
end
|
192
|
-
|
193
|
-
def load_jars(jars)
|
194
|
-
loadable_jars = []
|
195
|
-
unless jars.is_a?( Array )
|
196
|
-
jars = [jars]
|
197
|
-
end
|
198
|
-
|
199
|
-
jars.each do |jar|
|
200
|
-
expanded_jar = File.expand_path(jar)
|
201
|
-
if !@loaded_jars.include? expanded_jar
|
202
|
-
loadable_jars << expanded_jar
|
203
|
-
@loaded_jars << expanded_jar
|
204
|
-
end
|
205
|
-
end
|
206
|
-
|
207
|
-
unless loadable_jars.empty?
|
208
|
-
Rjb::add_jar( loadable_jars )
|
209
|
-
end
|
210
|
-
|
211
|
-
loadable_jars
|
212
|
-
end
|
213
|
-
|
214
|
-
def convert_to_ruby_array( java_array, to_string = false )
|
215
|
-
ruby_array = java_array.toArray()
|
216
|
-
|
217
|
-
if to_string
|
218
|
-
ruby_array = ruby_array.map { |x| x.toString()}
|
219
|
-
end
|
220
|
-
|
221
|
-
ruby_array
|
222
|
-
end
|
223
|
-
|
224
|
-
def convert_to_ruby_hash( java_hash, to_string = false )
|
225
|
-
|
226
|
-
hash = {}
|
227
|
-
keys = java_hash.keySet()
|
228
|
-
iterator = keys.iterator()
|
229
|
-
if to_string
|
230
|
-
while iterator.hasNext()
|
231
|
-
key = iterator.next().toString()
|
232
|
-
hash[key] = java_hash.get( key ).toString()
|
233
|
-
end
|
234
|
-
else
|
235
|
-
while iterator.hasNext()
|
236
|
-
key = iterator.next()
|
237
|
-
hash[key] = java_hash.get( key )
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
hash
|
242
|
-
|
243
|
-
end
|
244
|
-
end
|
245
69
|
end
|
246
70
|
end
|