rjb 1.4.1 → 1.4.2
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/ChangeLog +9 -0
- data/ext/extconf.h +9 -8
- data/ext/rjb.c +23 -23
- data/lib/rjb.rb +14 -1
- data/test/osx_jvmcheck.rb +9 -0
- data/test/test_osxload.rb +64 -0
- metadata +24 -27
data/ChangeLog
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
Sat Oct 6 arton
|
2
|
+
*ext/rjb.c
|
3
|
+
RJB_VERSION -> 1.4.2
|
4
|
+
*test/osx_jvmcheck.rb
|
5
|
+
display vendor and version of JRE for OSX load test
|
6
|
+
*test/osx_loadtest.rb
|
7
|
+
add Oracle JVM support test for OSX
|
8
|
+
*lib/rjb.rb
|
9
|
+
add Oracle JVM support for OSX
|
1
10
|
Sun Aug 19 arton
|
2
11
|
*ext/rjb.c
|
3
12
|
export bound object's original ruby object as @wrapped
|
data/ext/extconf.h
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
#ifndef EXTCONF_H
|
2
|
-
#define EXTCONF_H
|
3
|
-
#define HAVE_JNI_H 1
|
4
|
-
#define
|
5
|
-
#define
|
6
|
-
#define
|
7
|
-
#define
|
8
|
-
#
|
1
|
+
#ifndef EXTCONF_H
|
2
|
+
#define EXTCONF_H
|
3
|
+
#define HAVE_JNI_H 1
|
4
|
+
#define HAVE_RUBY_DL_H 1
|
5
|
+
#define HAVE_NL_LANGINFO 1
|
6
|
+
#define HAVE_SETLOCALE 1
|
7
|
+
#define HAVE_GETENV 1
|
8
|
+
#define RJB_RUBY_VERSION_CODE 193
|
9
|
+
#endif
|
data/ext/rjb.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* Rjb - Ruby <-> Java Bridge
|
3
|
-
* Copyright(c) 2004,2005,2006,2007,2008,2009,2010,2011 arton
|
3
|
+
* Copyright(c) 2004,2005,2006,2007,2008,2009,2010,2011,2012 arton
|
4
4
|
*
|
5
5
|
* This library is free software; you can redistribute it and/or
|
6
6
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -12,10 +12,10 @@
|
|
12
12
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
13
|
* Lesser General Public License for more details.
|
14
14
|
*
|
15
|
-
* $Id: rjb.c
|
15
|
+
* $Id: rjb.c 194 2012-10-06 06:01:31Z arton $
|
16
16
|
*/
|
17
17
|
|
18
|
-
#define RJB_VERSION "1.4.
|
18
|
+
#define RJB_VERSION "1.4.2"
|
19
19
|
|
20
20
|
#include "ruby.h"
|
21
21
|
#include "extconf.h"
|
@@ -889,8 +889,8 @@ static jarray r2barray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
889
889
|
jarray ary = NULL;
|
890
890
|
if (TYPE(v) == T_STRING)
|
891
891
|
{
|
892
|
-
|
893
|
-
(*jenv)->SetByteArrayRegion(jenv, ary, 0, RSTRING_LEN(v),
|
892
|
+
ary = (*jenv)->NewByteArray(jenv, (jint)RSTRING_LEN(v));
|
893
|
+
(*jenv)->SetByteArrayRegion(jenv, ary, 0, (jint)RSTRING_LEN(v),
|
894
894
|
(const jbyte*)RSTRING_PTR(v));
|
895
895
|
}
|
896
896
|
else if (TYPE(v) == T_ARRAY)
|
@@ -898,7 +898,7 @@ static jarray r2barray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
898
898
|
int i;
|
899
899
|
jbyte* pb;
|
900
900
|
check_fixnumarray(v);
|
901
|
-
ary = (*jenv)->NewByteArray(jenv, RARRAY_LEN(v));
|
901
|
+
ary = (*jenv)->NewByteArray(jenv, (jint)RARRAY_LEN(v));
|
902
902
|
pb = (*jenv)->GetByteArrayElements(jenv, ary, NULL);
|
903
903
|
for (i = 0; i < RARRAY_LEN(v); i++)
|
904
904
|
{
|
@@ -921,7 +921,7 @@ static jarray r2carray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
921
921
|
int i;
|
922
922
|
jchar* pb;
|
923
923
|
check_fixnumarray(v);
|
924
|
-
ary = (*jenv)->NewCharArray(jenv, RARRAY_LEN(v));
|
924
|
+
ary = (*jenv)->NewCharArray(jenv, (jint)RARRAY_LEN(v));
|
925
925
|
pb = (*jenv)->GetCharArrayElements(jenv, ary, NULL);
|
926
926
|
for (i = 0; i < RARRAY_LEN(v); i++)
|
927
927
|
{
|
@@ -940,7 +940,7 @@ static jarray r2darray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
940
940
|
{
|
941
941
|
int i;
|
942
942
|
jdouble* pb;
|
943
|
-
ary = (*jenv)->NewDoubleArray(jenv, RARRAY_LEN(v));
|
943
|
+
ary = (*jenv)->NewDoubleArray(jenv, (jint)RARRAY_LEN(v));
|
944
944
|
pb = (*jenv)->GetDoubleArrayElements(jenv, ary, NULL);
|
945
945
|
for (i = 0; i < RARRAY_LEN(v); i++)
|
946
946
|
{
|
@@ -959,7 +959,7 @@ static jarray r2farray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
959
959
|
{
|
960
960
|
int i;
|
961
961
|
jfloat* pb;
|
962
|
-
ary = (*jenv)->NewFloatArray(jenv, RARRAY_LEN(v));
|
962
|
+
ary = (*jenv)->NewFloatArray(jenv, (jint)RARRAY_LEN(v));
|
963
963
|
pb = (*jenv)->GetFloatArrayElements(jenv, ary, NULL);
|
964
964
|
for (i = 0; i < RARRAY_LEN(v); i++)
|
965
965
|
{
|
@@ -979,7 +979,7 @@ static jarray r2iarray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
979
979
|
int i;
|
980
980
|
jint* pb;
|
981
981
|
check_fixnumarray(v);
|
982
|
-
ary = (*jenv)->NewIntArray(jenv, RARRAY_LEN(v));
|
982
|
+
ary = (*jenv)->NewIntArray(jenv, (jint)RARRAY_LEN(v));
|
983
983
|
pb = (*jenv)->GetIntArrayElements(jenv, ary, NULL);
|
984
984
|
for (i = 0; i < RARRAY_LEN(v); i++)
|
985
985
|
{
|
@@ -998,7 +998,7 @@ static jarray r2larray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
998
998
|
{
|
999
999
|
int i;
|
1000
1000
|
jlong* pb;
|
1001
|
-
ary = (*jenv)->NewLongArray(jenv, RARRAY_LEN(v));
|
1001
|
+
ary = (*jenv)->NewLongArray(jenv, (jint)RARRAY_LEN(v));
|
1002
1002
|
pb = (*jenv)->GetLongArrayElements(jenv, ary, NULL);
|
1003
1003
|
for (i = 0; i < RARRAY_LEN(v); i++)
|
1004
1004
|
{
|
@@ -1022,7 +1022,7 @@ static jarray r2sarray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
1022
1022
|
int i;
|
1023
1023
|
jshort* pb;
|
1024
1024
|
check_fixnumarray(v);
|
1025
|
-
ary = (*jenv)->NewShortArray(jenv, RARRAY_LEN(v));
|
1025
|
+
ary = (*jenv)->NewShortArray(jenv, (jint)RARRAY_LEN(v));
|
1026
1026
|
pb = (*jenv)->GetShortArrayElements(jenv, ary, NULL);
|
1027
1027
|
for (i = 0; i < RARRAY_LEN(v); i++)
|
1028
1028
|
{
|
@@ -1041,7 +1041,7 @@ static jarray r2boolarray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
1041
1041
|
{
|
1042
1042
|
int i;
|
1043
1043
|
jboolean* pb;
|
1044
|
-
ary = (*jenv)->NewBooleanArray(jenv, RARRAY_LEN(v));
|
1044
|
+
ary = (*jenv)->NewBooleanArray(jenv, (jint)RARRAY_LEN(v));
|
1045
1045
|
pb = (*jenv)->GetBooleanArrayElements(jenv, ary, NULL);
|
1046
1046
|
for (i = 0; i < RARRAY_LEN(v); i++)
|
1047
1047
|
{
|
@@ -1066,7 +1066,7 @@ static jarray r2objarray(JNIEnv* jenv, VALUE v, const char* cls)
|
|
1066
1066
|
if (TYPE(v) == T_ARRAY)
|
1067
1067
|
{
|
1068
1068
|
int i;
|
1069
|
-
ary = (*jenv)->NewObjectArray(jenv, RARRAY_LEN(v), j_object, NULL);
|
1069
|
+
ary = (*jenv)->NewObjectArray(jenv, (jint)RARRAY_LEN(v), j_object, NULL);
|
1070
1070
|
rjb_check_exception(jenv, 0);
|
1071
1071
|
for (i = 0; i < RARRAY_LEN(v); i++)
|
1072
1072
|
{
|
@@ -1153,7 +1153,7 @@ static void rv2jarray(JNIEnv* jenv, VALUE val, jvalue* jv, const char* psig, int
|
|
1153
1153
|
}
|
1154
1154
|
else
|
1155
1155
|
{
|
1156
|
-
|
1156
|
+
jint i;
|
1157
1157
|
jarray ja = NULL;
|
1158
1158
|
if (NIL_P(val))
|
1159
1159
|
{
|
@@ -1164,19 +1164,19 @@ static void rv2jarray(JNIEnv* jenv, VALUE val, jvalue* jv, const char* psig, int
|
|
1164
1164
|
if (TYPE(val) != T_ARRAY) {
|
1165
1165
|
rb_raise(rb_eRuntimeError, "array's rank unmatch");
|
1166
1166
|
}
|
1167
|
-
ja = (*jenv)->NewObjectArray(jenv, RARRAY_LEN(val), j_object, NULL);
|
1167
|
+
ja = (*jenv)->NewObjectArray(jenv, (jint)RARRAY_LEN(val), j_object, NULL);
|
1168
1168
|
rjb_check_exception(jenv, 0);
|
1169
|
-
for (i = 0; i < RARRAY_LEN(val); i++)
|
1169
|
+
for (i = 0; i < (jint)RARRAY_LEN(val); i++)
|
1170
1170
|
{
|
1171
1171
|
jvalue jv;
|
1172
1172
|
rv2jarray(jenv, RARRAY_PTR(val)[i], &jv, psig + 1, 0);
|
1173
|
-
(*jenv)->SetObjectArrayElement(jenv, ja, i, jv.l);
|
1173
|
+
(*jenv)->SetObjectArrayElement(jenv, ja, (jint)i, jv.l);
|
1174
1174
|
}
|
1175
1175
|
}
|
1176
1176
|
else
|
1177
1177
|
{
|
1178
1178
|
R2JARRAY r2a = r2objarray;
|
1179
|
-
for (i = 0; i < COUNTOF(jcvt); i++)
|
1179
|
+
for (i = 0; i < (jint)COUNTOF(jcvt); i++)
|
1180
1180
|
{
|
1181
1181
|
if (*(psig + 1) == jcvt[i].jntype[0])
|
1182
1182
|
{
|
@@ -1205,7 +1205,7 @@ static R2J get_r2j(JNIEnv* jenv, jobject o, int* siglen, char* sigp)
|
|
1205
1205
|
if (siglen)
|
1206
1206
|
{
|
1207
1207
|
len = strlen(cname);
|
1208
|
-
*siglen += len;
|
1208
|
+
*siglen += (int)len;
|
1209
1209
|
strcpy(sigp, cname);
|
1210
1210
|
}
|
1211
1211
|
result = rv2jarray;
|
@@ -1218,7 +1218,7 @@ static R2J get_r2j(JNIEnv* jenv, jobject o, int* siglen, char* sigp)
|
|
1218
1218
|
{
|
1219
1219
|
if (siglen)
|
1220
1220
|
{
|
1221
|
-
|
1221
|
+
*siglen += (int)strlen(jcvt[i].jntype);
|
1222
1222
|
strcpy(sigp, jcvt[i].jntype);
|
1223
1223
|
}
|
1224
1224
|
result = jcvt[i].r2j;
|
@@ -2568,7 +2568,7 @@ static VALUE rjb_s_add_jar(VALUE self, VALUE jarname)
|
|
2568
2568
|
}
|
2569
2569
|
if (!url_loader)
|
2570
2570
|
{
|
2571
|
-
args[0].l = (*jenv)->NewObjectArray(jenv, (count == 0) ? 1 : count, j_url, NULL);
|
2571
|
+
args[0].l = (*jenv)->NewObjectArray(jenv, (jsize)((count == 0) ? 1 : count), j_url, NULL);
|
2572
2572
|
rjb_check_exception(jenv, 0);
|
2573
2573
|
if (!count)
|
2574
2574
|
{
|
@@ -2578,7 +2578,7 @@ static VALUE rjb_s_add_jar(VALUE self, VALUE jarname)
|
|
2578
2578
|
else
|
2579
2579
|
{
|
2580
2580
|
for (i = 0; i < count; i++) {
|
2581
|
-
(*jenv)->SetObjectArrayElement(jenv, args[0].l, i,
|
2581
|
+
(*jenv)->SetObjectArrayElement(jenv, args[0].l, (jint)i,
|
2582
2582
|
conv_jarname_to_url(jenv, rb_ary_entry(jarname, i)));
|
2583
2583
|
}
|
2584
2584
|
}
|
data/lib/rjb.rb
CHANGED
@@ -1,10 +1,23 @@
|
|
1
1
|
=begin
|
2
|
-
Copyright(c) 2006-2010 arton
|
2
|
+
Copyright(c) 2006-2010,2012 arton
|
3
3
|
=end
|
4
4
|
|
5
5
|
require 'rbconfig'
|
6
6
|
|
7
7
|
module RjbConf
|
8
|
+
if /darwin/ =~ RUBY_PLATFORM
|
9
|
+
if ENV['JVM_LIB'].nil? || ENV['JVM_LIB'] == ''
|
10
|
+
if ENV['JAVA_HOME'].nil? || ENV['JAVA_HOME'] == ''
|
11
|
+
jvms = Dir.glob("#{`/usr/libexec/java_home`.strip}/**/libjvm.dylib")
|
12
|
+
else
|
13
|
+
jvms = Dir.glob("#{ENV['JAVA_HOME']}/**/libjvm.dylib")
|
14
|
+
end
|
15
|
+
if jvms.size > 0
|
16
|
+
ENV['JVM_LIB'] = jvms[0]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
8
21
|
dir = File.join(File.dirname(File.dirname(__FILE__)), 'data')
|
9
22
|
if File.exist?(dir)
|
10
23
|
datadir = dir
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'rbconfig'
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
class TestOSXLoad < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
ENV['JAVA_HOME'] = ''
|
9
|
+
ENV['JVM_LIB'] = ''
|
10
|
+
@testprog = File.dirname($0) + File::SEPARATOR + 'osx_jvmcheck.rb'
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_no_java_home
|
14
|
+
skip "no meaning test except for OSX" unless /darwin/ =~ RUBY_PLATFORM
|
15
|
+
|
16
|
+
javahome = `/usr/libexec/java_home`
|
17
|
+
if javahome =~ /jdk1\.[7-8]\.0/
|
18
|
+
vendor = /Oracle/
|
19
|
+
version = /1\.[7-8]\.0/
|
20
|
+
else
|
21
|
+
vendor = /Apple/
|
22
|
+
version = /1\.[4-6]\.0/
|
23
|
+
end
|
24
|
+
test = `#{RbConfig.ruby} #{@testprog}`
|
25
|
+
assert test =~ vendor, expected(vendor, test)
|
26
|
+
assert test =~ version, expected(version, test)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_apple_jvm
|
30
|
+
skip "no meaning test except for OSX" unless /darwin/ =~ RUBY_PLATFORM
|
31
|
+
|
32
|
+
test_specific_jvm('/System/Library/Frameworks/JavaVM.framework/Home',
|
33
|
+
/Apple/)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_oracle_jvm
|
37
|
+
skip "no meaning test except for OSX" unless /darwin/ =~ RUBY_PLATFORM
|
38
|
+
|
39
|
+
test_specific_jvm('/Library/Java/JavaVirtualMachines/***/Contents/Home',
|
40
|
+
/Oracle/)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_withjvmlib
|
44
|
+
skip "no meaning test except for OSX" unless /darwin/ =~ RUBY_PLATFORM
|
45
|
+
|
46
|
+
ENV['JVM_LIB'] = '/usr/lib/libc.dylib'
|
47
|
+
test = `#{RbConfig.ruby} #{@testprog}`.strip
|
48
|
+
assert test == '', "no exception but #{test}"
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
def test_specific_jvm(path, vendor)
|
53
|
+
jvms = Dir.glob(path)
|
54
|
+
skip "no #{vendor.inspect} jvm" if jvms.size == 0
|
55
|
+
ENV['JAVA_HOME'] = jvms[0]
|
56
|
+
test = `#{RbConfig.ruby} #{@testprog}`.strip
|
57
|
+
assert test =~ vendor, expected(vendor, test)
|
58
|
+
end
|
59
|
+
|
60
|
+
def expected(test, target)
|
61
|
+
"expected #{test.inspect} but #{target}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
metadata
CHANGED
@@ -1,29 +1,26 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rjb
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.2
|
4
5
|
prerelease:
|
5
|
-
version: 1.4.1
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- arton
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2012-08-18 00:00:00 Z
|
12
|
+
date: 2012-10-06 00:00:00.000000000 Z
|
14
13
|
dependencies: []
|
14
|
+
description: ! 'RJB is a bridge program that connect between Ruby and Java with Java
|
15
|
+
Native Interface.
|
15
16
|
|
16
|
-
|
17
|
-
RJB is a bridge program that connect between Ruby and Java with Java Native Interface.
|
18
|
-
|
17
|
+
'
|
19
18
|
email: artonx@gmail.com
|
20
19
|
executables: []
|
21
|
-
|
22
|
-
extensions:
|
20
|
+
extensions:
|
23
21
|
- ext/extconf.rb
|
24
22
|
extra_rdoc_files: []
|
25
|
-
|
26
|
-
files:
|
23
|
+
files:
|
27
24
|
- ext/RBridge.java
|
28
25
|
- ext/rjbexception.c
|
29
26
|
- ext/rjb.c
|
@@ -45,6 +42,8 @@ files:
|
|
45
42
|
- test/test_osxjvm.rb
|
46
43
|
- test/test.rb
|
47
44
|
- test/exttest.rb
|
45
|
+
- test/test_osxload.rb
|
46
|
+
- test/osx_jvmcheck.rb
|
48
47
|
- test/jartest2.rb
|
49
48
|
- test/jartest3.rb
|
50
49
|
- test/test_unload.rb
|
@@ -66,25 +65,23 @@ files:
|
|
66
65
|
- ext/extconf.rb
|
67
66
|
homepage: http://rjb.rubyforge.org/
|
68
67
|
licenses: []
|
69
|
-
|
70
68
|
post_install_message:
|
71
69
|
rdoc_options: []
|
72
|
-
|
73
|
-
require_paths:
|
70
|
+
require_paths:
|
74
71
|
- lib
|
75
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
73
|
none: false
|
77
|
-
requirements:
|
78
|
-
- -
|
79
|
-
- !ruby/object:Gem::Version
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
80
77
|
version: 1.8.2
|
81
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
79
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version:
|
87
|
-
requirements:
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
requirements:
|
88
85
|
- none
|
89
86
|
- JDK 5.0
|
90
87
|
rubyforge_project: rjb
|
@@ -92,5 +89,5 @@ rubygems_version: 1.8.23
|
|
92
89
|
signing_key:
|
93
90
|
specification_version: 3
|
94
91
|
summary: Ruby Java bridge
|
95
|
-
test_files:
|
92
|
+
test_files:
|
96
93
|
- test/test.rb
|