ivy4r 0.11.0 → 0.11.1
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/History.txt +5 -0
- data/Manifest.txt +40 -39
- data/lib/buildr/ivy_extension.rb +2 -2
- data/lib/ivy/java/java_object_wrapper.rb +160 -0
- data/lib/ivy/target.rb +4 -15
- data/lib/ivy4r.rb +1 -1
- metadata +3 -2
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 0.11.1 / 2010-06-09
|
2
|
+
* Fixed a bug reported by Rhett Sutphin that prevented the use of MRI.
|
3
|
+
* Added mapping from java to ruby via RJB and source example from
|
4
|
+
Stanford Parser Ruby Wrapper by William Patrick McNeill.
|
5
|
+
|
1
6
|
=== 0.11.0 / 2010-05-31
|
2
7
|
* Fixed a few bugs and issues reported by Rhett Sutphin. See issues on github 3-6.
|
3
8
|
* Ivy4r should work with MRI and JRuby, previously only JRuby was supported.
|
data/Manifest.txt
CHANGED
@@ -1,39 +1,40 @@
|
|
1
|
-
History.txt
|
2
|
-
Manifest.txt
|
3
|
-
README.txt
|
4
|
-
Rakefile
|
5
|
-
bin/ivy4r
|
6
|
-
lib/buildr/ivy_extension.rb
|
7
|
-
lib/ivy/artifactproperty.rb
|
8
|
-
lib/ivy/artifactreport.rb
|
9
|
-
lib/ivy/buildlist.rb
|
10
|
-
lib/ivy/buildnumber.rb
|
11
|
-
lib/ivy/cachepath.rb
|
12
|
-
lib/ivy/cleancache.rb
|
13
|
-
lib/ivy/configure.rb
|
14
|
-
lib/ivy/findrevision.rb
|
15
|
-
lib/ivy/info.rb
|
16
|
-
lib/ivy/java/all_version_matcher.rb
|
17
|
-
lib/ivy/
|
18
|
-
lib/ivy/
|
19
|
-
lib/ivy/
|
20
|
-
lib/ivy/
|
21
|
-
lib/ivy/
|
22
|
-
lib/ivy/
|
23
|
-
lib/ivy/
|
24
|
-
lib/ivy/
|
25
|
-
lib/ivy/
|
26
|
-
lib/
|
27
|
-
lib/
|
28
|
-
lib/
|
29
|
-
|
30
|
-
test/buildlist/p1/
|
31
|
-
test/buildlist/
|
32
|
-
test/buildlist/sub/p2/
|
33
|
-
test/buildlist/sub/
|
34
|
-
test/buildlist/sub/p3/
|
35
|
-
test/ivy
|
36
|
-
test/ivy/
|
37
|
-
test/ivy/
|
38
|
-
test/ivy/
|
39
|
-
test/
|
1
|
+
History.txt
|
2
|
+
Manifest.txt
|
3
|
+
README.txt
|
4
|
+
Rakefile
|
5
|
+
bin/ivy4r
|
6
|
+
lib/buildr/ivy_extension.rb
|
7
|
+
lib/ivy/artifactproperty.rb
|
8
|
+
lib/ivy/artifactreport.rb
|
9
|
+
lib/ivy/buildlist.rb
|
10
|
+
lib/ivy/buildnumber.rb
|
11
|
+
lib/ivy/cachepath.rb
|
12
|
+
lib/ivy/cleancache.rb
|
13
|
+
lib/ivy/configure.rb
|
14
|
+
lib/ivy/findrevision.rb
|
15
|
+
lib/ivy/info.rb
|
16
|
+
lib/ivy/java/all_version_matcher.rb
|
17
|
+
lib/ivy/java/java_object_wrapper.rb
|
18
|
+
lib/ivy/listmodules.rb
|
19
|
+
lib/ivy/makepom.rb
|
20
|
+
lib/ivy/publish.rb
|
21
|
+
lib/ivy/report.rb
|
22
|
+
lib/ivy/resolve.rb
|
23
|
+
lib/ivy/retrieve.rb
|
24
|
+
lib/ivy/settings.rb
|
25
|
+
lib/ivy/target.rb
|
26
|
+
lib/ivy/targets.rb
|
27
|
+
lib/ivy4r.rb
|
28
|
+
lib/ivy4r_java_extensions.rb
|
29
|
+
lib/rake/ivy_extension.rb
|
30
|
+
test/buildlist/p1/buildfile
|
31
|
+
test/buildlist/p1/ivy.xml
|
32
|
+
test/buildlist/sub/p2/buildfile
|
33
|
+
test/buildlist/sub/p2/ivy.xml
|
34
|
+
test/buildlist/sub/p3/buildfile
|
35
|
+
test/buildlist/sub/p3/ivy.xml
|
36
|
+
test/ivy/ivysettings.xml
|
37
|
+
test/ivy/ivytest.xml
|
38
|
+
test/ivy/test_target.rb
|
39
|
+
test/ivy/test_targets.rb
|
40
|
+
test/test_ivy4r.rb
|
data/lib/buildr/ivy_extension.rb
CHANGED
@@ -158,7 +158,7 @@ module Buildr
|
|
158
158
|
@base_ivy.__resolve__
|
159
159
|
else
|
160
160
|
unless @resolved
|
161
|
-
@resolved = ivy4r.resolve :file => file
|
161
|
+
@resolved = ivy4r.resolve :file => file
|
162
162
|
@project.send(:info, "Calling '#{post_resolve_tasks.size}' post_resolve tasks for '#{@project.name}'")
|
163
163
|
post_resolve_tasks.each { |p| p.call(self) }
|
164
164
|
end
|
@@ -217,7 +217,7 @@ module Buildr
|
|
217
217
|
|
218
218
|
# The basic file name to use in project dir as ivy.xml file. Normally this should be __ivy.xml__
|
219
219
|
# If the file resides in a sub directory the relative path from project can be set with this method
|
220
|
-
def ivy_xml_filename
|
220
|
+
def ivy_xml_filename
|
221
221
|
@ivy_file ||= Ivy.setting('ivy.file') || 'ivy.xml'
|
222
222
|
end
|
223
223
|
|
@@ -0,0 +1,160 @@
|
|
1
|
+
# Extenions to the {Ruby-Java Bridge}[http://rjb.rubyforge.org/] module that
|
2
|
+
# add a generic Java object wrapper class for transparent access of java objects
|
3
|
+
# from ruby using RJB.
|
4
|
+
#
|
5
|
+
# This file was part of the Stanford Parser Ruby Wrapper by William Patrick McNeill.
|
6
|
+
# Only a few modifications have been done to make it compatible with ivy4r and the
|
7
|
+
# Java Ant objects that are accessed.
|
8
|
+
module Rjb
|
9
|
+
class JavaObjectWrapper
|
10
|
+
include Enumerable
|
11
|
+
|
12
|
+
# The underlying Java object.
|
13
|
+
attr_reader :java_object
|
14
|
+
|
15
|
+
# Initialize with a Java object <em>obj</em>. If <em>obj</em> is a
|
16
|
+
# String, treat it as a Java class name and instantiate it. Otherwise,
|
17
|
+
# treat <em>obj</em> as an instance of a Java object.
|
18
|
+
def initialize(obj, *args)
|
19
|
+
@java_object = obj.class == String ? Rjb::import(obj).send(:new, *args) : obj
|
20
|
+
end
|
21
|
+
|
22
|
+
# Enumerate all the items in the object using its iterator. If the object
|
23
|
+
# has no iterator, this function yields nothing.
|
24
|
+
def each
|
25
|
+
if @java_object.getClass.getMethods.any? {|m| m.getName == "iterator"}
|
26
|
+
i = @java_object.iterator
|
27
|
+
while i.hasNext
|
28
|
+
yield wrap_java_object(i.next)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end # each
|
32
|
+
|
33
|
+
# Reflect unhandled method calls to the underlying Java object and wrap
|
34
|
+
# the return value in the appropriate Ruby object.
|
35
|
+
def method_missing(m, *args)
|
36
|
+
begin
|
37
|
+
JavaObjectWrapper.wrap_java_object(@java_object.send(m, *args))
|
38
|
+
rescue RuntimeError => e
|
39
|
+
# The instance method failed. See if this is a static method.
|
40
|
+
if not e.message.match(/^Fail: unknown method name/).nil?
|
41
|
+
getClass.send(m, *args)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Checks if underlying java object responds to method prior using standard respond_to? method.
|
47
|
+
def respond_to?(sym)
|
48
|
+
java = @java_object.getClass.getMethods.any? {|m| m.getName == sym.to_s} || super.respond_to?(sym)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Show the classname of the underlying Java object.
|
52
|
+
def inspect
|
53
|
+
"<#{@java_object._classname}>"
|
54
|
+
end
|
55
|
+
|
56
|
+
# Use the underlying Java object's stringification.
|
57
|
+
def to_s
|
58
|
+
toString
|
59
|
+
end
|
60
|
+
|
61
|
+
# All wrapping is done at class level and not at instance level this deviates from the base
|
62
|
+
# implementation
|
63
|
+
class << self
|
64
|
+
# Convert a value returned by a call to the underlying Java object to the
|
65
|
+
# appropriate Ruby object.
|
66
|
+
#
|
67
|
+
# If the value is a JavaObjectWrapper, convert it using a protected
|
68
|
+
# function with the name wrap_ followed by the underlying object's
|
69
|
+
# classname with the Java path delimiters converted to underscores. For
|
70
|
+
# example, a <tt>java.util.ArrayList</tt> would be converted by a function
|
71
|
+
# called wrap_java_util_ArrayList.
|
72
|
+
#
|
73
|
+
# If the value lacks the appropriate converter function, wrap it in a
|
74
|
+
# generic JavaObjectWrapper.
|
75
|
+
#
|
76
|
+
# If the value is not a JavaObjectWrapper, return it unchanged.
|
77
|
+
#
|
78
|
+
# This function is called recursively for every element in an Array.
|
79
|
+
def wrap_java_object(object)
|
80
|
+
if object.kind_of?(Array)
|
81
|
+
object.collect {|item| wrap_java_object(item)}
|
82
|
+
elsif object.respond_to?(:_classname)
|
83
|
+
# Ruby-Java Bridge Java objects all have a _classname member
|
84
|
+
find_converter(object) || JavaObjectWrapper.new(object)
|
85
|
+
else
|
86
|
+
object
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
protected
|
91
|
+
# Checks if any class in objects class hierachy or interface of class has a converter method defined
|
92
|
+
# if converter exists returns converted object.
|
93
|
+
def find_converter(object)
|
94
|
+
classnames_to_check(object).each do |name|
|
95
|
+
wrapper = wrapper_name(name)
|
96
|
+
if respond_to? wrapper
|
97
|
+
return send(wrapper, object)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
nil
|
102
|
+
end
|
103
|
+
|
104
|
+
# Returns all java classnames that should be checked for an adequate mapper for given object.
|
105
|
+
def classnames_to_check(object)
|
106
|
+
names = []
|
107
|
+
clazz = object.getClass
|
108
|
+
while clazz
|
109
|
+
names << clazz.getName
|
110
|
+
clazz.getInterfaces.each {|i| names << i.getName}
|
111
|
+
clazz = clazz.getSuperclass
|
112
|
+
end
|
113
|
+
|
114
|
+
names.uniq
|
115
|
+
end
|
116
|
+
|
117
|
+
# Returns the wrapper name for given java classname.
|
118
|
+
def wrapper_name(java_classname)
|
119
|
+
("convert_" + java_classname.gsub(/\./, "_")).downcase.to_sym
|
120
|
+
end
|
121
|
+
|
122
|
+
# Convert <tt>java.util.List</tt> objects to Ruby Array objects.
|
123
|
+
def convert_java_util_list(object)
|
124
|
+
array_list = []
|
125
|
+
object.size.times do
|
126
|
+
|i| array_list << wrap_java_object(object.get(i))
|
127
|
+
end
|
128
|
+
array_list
|
129
|
+
end
|
130
|
+
|
131
|
+
# Convert <tt>java.util.Set</tt> objects to Ruby array object with no duplicates.
|
132
|
+
def convert_java_util_set(object)
|
133
|
+
set = []
|
134
|
+
i = object.iterator
|
135
|
+
while i.hasNext
|
136
|
+
set << wrap_java_object(i.next)
|
137
|
+
end
|
138
|
+
set.uniq
|
139
|
+
end
|
140
|
+
|
141
|
+
# Convert <tt>java.util.Map</tt> objects to Ruby Hash object.
|
142
|
+
def convert_java_util_map(object)
|
143
|
+
hash = {}
|
144
|
+
i = object.entrySet.iterator
|
145
|
+
while i.hasNext
|
146
|
+
entry = i.next
|
147
|
+
hash[wrap_java_object(entry.getKey)] = wrap_java_object(entry.getValue)
|
148
|
+
end
|
149
|
+
hash
|
150
|
+
end
|
151
|
+
|
152
|
+
# Convert <tt>java.lang.String</tt> objects to Ruby String.
|
153
|
+
def convert_java_lang_string(object)
|
154
|
+
object.toString
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
data/lib/ivy/target.rb
CHANGED
@@ -5,6 +5,8 @@ require 'facets/hash/update_values'
|
|
5
5
|
|
6
6
|
require 'digest/md5'
|
7
7
|
|
8
|
+
require 'ivy/java/java_object_wrapper'
|
9
|
+
|
8
10
|
module Ivy
|
9
11
|
|
10
12
|
# Base class with general logic to call a Ivy ant target
|
@@ -137,24 +139,11 @@ module Ivy
|
|
137
139
|
end
|
138
140
|
|
139
141
|
def ant_properties
|
140
|
-
|
141
|
-
p.respond_to?(:map) ? p : java_map_to_ruby_hash(p)
|
142
|
+
Rjb::JavaObjectWrapper.wrap_java_object @ant.project.properties
|
142
143
|
end
|
143
144
|
|
144
145
|
def ant_references
|
145
|
-
|
146
|
-
r.respond_to?(:map) ? r : java_map_to_ruby_hash(r)
|
147
|
-
end
|
148
|
-
|
149
|
-
private
|
150
|
-
def java_map_to_ruby_hash(java_map)
|
151
|
-
iterator = java_map.entry_set.iterator
|
152
|
-
result = {}
|
153
|
-
while iterator.has_next
|
154
|
-
entry = iterator.next
|
155
|
-
result[entry.key.to_string] = entry.value.to_string
|
156
|
-
end
|
157
|
-
result
|
146
|
+
Rjb::JavaObjectWrapper.wrap_java_object @ant.project.references
|
158
147
|
end
|
159
148
|
end
|
160
149
|
|
data/lib/ivy4r.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ivy4r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Klaas Prause
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-06-09 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- lib/ivy/findrevision.rb
|
97
97
|
- lib/ivy/info.rb
|
98
98
|
- lib/ivy/java/all_version_matcher.rb
|
99
|
+
- lib/ivy/java/java_object_wrapper.rb
|
99
100
|
- lib/ivy/listmodules.rb
|
100
101
|
- lib/ivy/makepom.rb
|
101
102
|
- lib/ivy/publish.rb
|