naether 0.8.6 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|