rjb 1.5.5 → 1.5.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3bd11fadf55c58d28049cbd150cf6b74f8ff0a9a
4
- data.tar.gz: b5b308b407d408baa604487c6d2d520d46e3ce65
2
+ SHA256:
3
+ metadata.gz: b8eddc0f7bf9505a5f48e1098dd18f0133253986978599c40e5c39ce6cc48b90
4
+ data.tar.gz: 880d819371d1cb1c738c2db0c0395873d86391ecef8b056c7597aacf930598ce
5
5
  SHA512:
6
- metadata.gz: acad6e9acd24e609195014897eebe87d16bb7a8e11b5a96da77511a158a95b83bb820a1fb70b8a9b76fde457dbfae801589aac5b81027990beff05206318146a
7
- data.tar.gz: 88082cd6024ed28ea83cfbd0b6dfce9e9421878af47c734dec5a6d0351dda9d6053e6689bc2a33218b20c6530e37e94479444dec93cf9007d8f4fd91327e40c6
6
+ metadata.gz: ad9b557b9ff3d9091663df6041b63672ba96a2e192f23deba2dbe6dfe94edf09f36176e8894b2e71c8194f68e6f4e23b1e67c9a7064c52c5dea5ce0723be9e14
7
+ data.tar.gz: 7da7f62f72373a83ef662ee62cd37c7fdac28a52c6fc059af337970a7249103858442c304b139945118371c2893ac6057404f619016d4cff758a5aabaffd80f2
data/ChangeLog CHANGED
@@ -1,3 +1,29 @@
1
+ Sun Feb 17 2019 lamby / arton
2
+ * ext/rjb.c
3
+ RJB_VERSION -> 1.5.9
4
+ * ext/depend.erb
5
+ it set javah line by ERB
6
+ * ext/extconf.rb
7
+ change javah to javac -h if it does not exist
8
+ * ext/depend
9
+ replaced by depend.erb
10
+ Thu Jan 17 2019 arton
11
+ * ext/rjbexception.c
12
+ restore method_missing for the exception class
13
+ * ext/rjb.c
14
+ RJB_VERSION -> 1.5.8
15
+ * test/test.rb
16
+ add #60 test
17
+ Fri Dec 28 2018 arton
18
+ * ext/rjbexception.c
19
+ fix #60; stable java derived exception class for raise
20
+ * ext/rjb.c
21
+ RJB_VERSION -> 1.5.7
22
+ Thu Dec 27 2018 sean-npu
23
+ * ext/load.c
24
+ support aarch64
25
+ * ext/rjb.c
26
+ RJB_VERSION -> 1.5.6
1
27
  Sun Oct 30 arbox, maxberger and arton
2
28
  *Rakefile
3
29
  *rjb.gemspec
@@ -3,7 +3,7 @@ rjb.o : rjb.c jp_co_infoseek_hp_arton_rjb_RBridge.h riconv.h rjb.h
3
3
  rjbexception.o : rjbexception.c jp_co_infoseek_hp_arton_rjb_RBridge.h riconv.h rjb.h
4
4
  load.o : load.c jp_co_infoseek_hp_arton_rjb_RBridge.h
5
5
  jp_co_infoseek_hp_arton_rjb_RBridge.h : jniwrap.h ../data/rjb/jp/co/infoseek/hp/arton/rjb/RBridge.class
6
- javah -classpath ../data/rjb jp.co.infoseek.hp.arton.rjb.RBridge
6
+ <%= javah %>
7
7
  ../data/rjb/jp/co/infoseek/hp/arton/rjb/RBridge.class : RBridge.java
8
8
  mkdir -p ../data/rjb/jp/co/infoseek/hp/arton/rjb
9
9
  javac -d ../data/rjb RBridge.java
data/ext/extconf.h CHANGED
@@ -4,5 +4,5 @@
4
4
  #define HAVE_NL_LANGINFO 1
5
5
  #define HAVE_SETLOCALE 1
6
6
  #define HAVE_GETENV 1
7
- #define RJB_RUBY_VERSION_CODE 240
7
+ #define RJB_RUBY_VERSION_CODE 261
8
8
  #endif
data/ext/extconf.rb CHANGED
@@ -4,6 +4,7 @@
4
4
  # $Date: $
5
5
  #----------------------------------
6
6
  require 'mkmf'
7
+ require 'erb'
7
8
 
8
9
  class Path
9
10
 
@@ -74,4 +75,13 @@ when /mswin32/
74
75
  when /cygwin/, /mingw/
75
76
  $defs << '-DNONAMELESSUNION'
76
77
  end
78
+
79
+ if find_executable('javah')
80
+ javah = 'javah -classpath ../data/rjb jp.co.infoseek.hp.arton.rjb.RBridge'
81
+ else
82
+ javah = 'javac -h . -classpath ../data/rjb RBridge.java'
83
+ end
84
+ File.open('depend', 'w') do |fout|
85
+ fout.write ERB.new(IO::read('depend.erb')).result
86
+ end
77
87
  create_rjb_makefile
data/ext/load.c CHANGED
@@ -79,6 +79,10 @@
79
79
  #define ARCH "i386"
80
80
  #elif defined(__arm__)
81
81
  #define ARCH "arm"
82
+ #elif defined(__aarch64__)
83
+ #define ARCH "aarch64"
84
+ #undef JVM_TYPE
85
+ #define JVM_TYPE "server"
82
86
  #endif
83
87
  #ifndef ARCH
84
88
  #include <sys/systeminfo.h>
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,2012,2014-2016 arton
3
+ * Copyright(c) 2004,2005,2006,2007,2008,2009,2010,2011,2012,2014-2016,2018 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
@@ -14,7 +14,7 @@
14
14
  *
15
15
  */
16
16
 
17
- #define RJB_VERSION "1.5.5"
17
+ #define RJB_VERSION "1.5.9"
18
18
 
19
19
  #include "ruby.h"
20
20
  #include "extconf.h"
@@ -601,7 +601,7 @@ static VALUE jv2rv_withprim(JNIEnv* jenv, jobject o)
601
601
  jv.j = (*jenv)->CallLongMethod(jenv, o, jpcvt[i].to_prim_id);
602
602
  break;
603
603
  default:
604
- rb_raise(rb_eRuntimeError, "no convertor defined(%d)", i);
604
+ rb_raise(rb_eRuntimeError, "no converter defined(%d)", i);
605
605
  break;
606
606
  }
607
607
  (*jenv)->DeleteLocalRef(jenv, o);
data/ext/rjbexception.c CHANGED
@@ -34,13 +34,16 @@ static VALUE missing_delegate(int argc, VALUE* argv, VALUE self)
34
34
 
35
35
  static VALUE get_cause(VALUE self)
36
36
  {
37
- return rb_funcall(rb_ivar_get(self, rb_intern("@cause")), rb_intern("cause"), 0);
37
+ return rb_funcall(rb_ivar_get(self, rb_intern("@cause")), rb_intern("cause"), 0);
38
38
  }
39
39
 
40
- static VALUE exception_to_s(VALUE self)
40
+ static VALUE ex_respond_to(int argc, VALUE* argv, VALUE self)
41
41
  {
42
- return rb_funcall(rb_ivar_get(self, rb_intern("@cause")),
43
- rb_intern("toString"), 0);
42
+ if (argc < 1 || argc > 2)
43
+ {
44
+ rb_raise(rb_eArgError, "respond_to? require 1 or 2 arguments");
45
+ }
46
+ return rb_to_id(argv[0]) == rb_intern("to_str") ? Qfalse : Qtrue;
44
47
  }
45
48
 
46
49
  /*
@@ -70,18 +73,18 @@ VALUE rjb_get_exception_class(JNIEnv* jenv, jstring str)
70
73
  rexp = rb_hash_aref(rjb_loaded_classes, cname);
71
74
  if (rexp == Qnil)
72
75
  {
73
- rexp = rb_define_class(pcls, rb_eStandardError);
74
- rb_define_method(rexp, "cause", get_cause, 0);
76
+ rexp = rb_define_class(pcls, rb_eStandardError);
77
+ rb_define_method(rexp, "cause", get_cause, 0);
75
78
  rb_define_method(rexp, "method_missing", missing_delegate, -1);
76
- rb_define_method(rexp, "to_str", exception_to_s, 0);
79
+ rb_define_method(rexp, "respond_to?", ex_respond_to, -1);
77
80
  #if defined(HAVE_RB_HASH_ASET) || defined(RUBINIUS)
78
81
  rb_hash_aset(rjb_loaded_classes, cname, rexp);
79
82
  #else
80
- #ifdef RHASH_TBL
81
- st_insert(RHASH_TBL(rjb_loaded_classes), cname, rexp);
82
- #else
83
- st_insert(RHASH(rjb_loaded_classes)->tbl, cname, rexp);
84
- #endif
83
+ #ifdef RHASH_TBL
84
+ st_insert(RHASH_TBL(rjb_loaded_classes), cname, rexp);
85
+ #else
86
+ st_insert(RHASH(rjb_loaded_classes)->tbl, cname, rexp);
87
+ #endif
85
88
  #endif
86
89
 
87
90
  }
@@ -140,7 +143,7 @@ void rjb_check_exception(JNIEnv* jenv, int t)
140
143
  (*jenv)->ExceptionClear(jenv);
141
144
  if(1)
142
145
  {
143
- char* msg = "unknown exception";
146
+ char* msg = (char*)"unknown exception";
144
147
  jclass cls = (*jenv)->GetObjectClass(jenv, exp);
145
148
  jstring str = (*jenv)->CallObjectMethod(jenv, exp, rjb_throwable_getMessage);
146
149
  if (str)
@@ -0,0 +1,13 @@
1
+ require 'rjb'
2
+ Rjb::load
3
+ begin
4
+ Rjb::throw('java.lang.NumberFormatException', 'test')
5
+ Rjb::throw(Rjb::import('java.lang.NumberFormatException').new('test'))
6
+ rescue NumberFormatException => e
7
+ puts "I expect a NumberFormatException to be thrown"
8
+ rescue Exception => e
9
+ puts "I at least expect *some* excetpion to be thrown"
10
+ else
11
+ puts "Unexpectedly no exception is thrown"
12
+ end
13
+
@@ -0,0 +1,17 @@
1
+ require 'rjb'
2
+ Rjb::load
3
+ begin
4
+ Rjb::import('java.lang.Integer').parseInt('x')
5
+ rescue => e
6
+ begin
7
+ raise e
8
+ rescue => f
9
+ if e.class == f.class
10
+ puts "I expect the equality to be true"
11
+ else
12
+ puts "Unexpectedly the re-raised Java exception has changed " +
13
+ "from a #{e.class} into a #{f.class}"
14
+ end
15
+ end
16
+ end
17
+
data/test/anon.rb ADDED
@@ -0,0 +1,23 @@
1
+ require 'rjb'
2
+ Rjb::load
3
+ begin
4
+ Rjb::import('java.lang.Integer').parseInt('x')
5
+ rescue NumberFormatException => e
6
+ puts e.class
7
+ puts e.message
8
+ begin
9
+ puts (StandardError === e).to_s
10
+ raise e
11
+ rescue => f
12
+ puts f.class
13
+ puts f.message
14
+ puts f.cause.inspect
15
+ puts f.exception.inspect
16
+ if e.class == f.class
17
+ puts "I expect the equality to be true"
18
+ else
19
+ puts "Unexpectedly the re-raised Java exception has changed " +
20
+ "from a #{e.class} into a #{f.class}"
21
+ end
22
+ end
23
+ end
data/test/b.rb ADDED
@@ -0,0 +1,13 @@
1
+ class TestError < StandardError
2
+ end
3
+
4
+ begin
5
+ raise TestError.new
6
+ rescue => e
7
+ puts e.class
8
+ begin
9
+ raise e, 'abc'
10
+ rescue => f
11
+ puts f.class
12
+ end
13
+ end
data/test/test.rb CHANGED
@@ -933,5 +933,19 @@ class TestRjb < Test::Unit::TestCase
933
933
  assert_equal org.size, len
934
934
  assert_equal org, buffer[0...len]
935
935
  end
936
+
937
+ def test_re_raise
938
+ begin
939
+ @jInteger.parseInt('blabla')
940
+ flunk('no exception')
941
+ rescue NumberFormatException => e
942
+ begin
943
+ raise
944
+ rescue => e
945
+ assert_equal(NumberFormatException, e.class)
946
+ # OK
947
+ end
948
+ end
949
+ end
936
950
  end
937
951
 
data/test/x.rb ADDED
@@ -0,0 +1,10 @@
1
+ begin
2
+ i.foo
3
+ rescue => e
4
+ puts e.class
5
+ begin
6
+ raise e
7
+ rescue => f
8
+ puts f.class
9
+ end
10
+ end
metadata CHANGED
@@ -1,17 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rjb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.5
4
+ version: 1.5.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - arton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-29 00:00:00.000000000 Z
11
+ date: 2019-02-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: RJB is a Bridge library which connects Ruby and Java code using the Java
13
+ description: 'RJB is a bridge program that connect between Ruby and Java with Java
14
14
  Native Interface.
15
+
16
+ '
15
17
  email: artonx@gmail.com
16
18
  executables: []
17
19
  extensions:
@@ -20,10 +22,9 @@ extra_rdoc_files: []
20
22
  files:
21
23
  - COPYING
22
24
  - ChangeLog
23
- - README.md
24
25
  - data/rjb/jp/co/infoseek/hp/arton/rjb/RBridge.class
25
26
  - ext/RBridge.java
26
- - ext/depend
27
+ - ext/depend.erb
27
28
  - ext/extconf.h
28
29
  - ext/extconf.rb
29
30
  - ext/jniwrap.h
@@ -43,6 +44,10 @@ files:
43
44
  - readme.txt
44
45
  - samples/filechooser.rb
45
46
  - samples/unzip.rb
47
+ - test/anon-test-50.rb
48
+ - test/anon-test-60.rb
49
+ - test/anon.rb
50
+ - test/b.rb
46
51
  - test/exttest.rb
47
52
  - test/gctest.rb
48
53
  - test/jartest.jar
@@ -66,9 +71,10 @@ files:
66
71
  - test/test_osxjvm.rb
67
72
  - test/test_osxload.rb
68
73
  - test/test_unload.rb
69
- homepage: http://www.artonx.org/collabo/backyard/?RubyJavaBridge
74
+ - test/x.rb
75
+ homepage: https://www.artonx.org/collabo/backyard/?RubyJavaBridge
70
76
  licenses:
71
- - LGPL-2.1
77
+ - LGPL
72
78
  metadata: {}
73
79
  post_install_message:
74
80
  rdoc_options: []
@@ -85,10 +91,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
91
  - !ruby/object:Gem::Version
86
92
  version: '0'
87
93
  requirements:
94
+ - none
88
95
  - JDK 5.0
89
- rubyforge_project:
90
- rubygems_version: 2.6.4
96
+ rubygems_version: 3.0.1
91
97
  signing_key:
92
98
  specification_version: 4
93
- summary: Ruby Java Bridge
94
- test_files: []
99
+ summary: Ruby Java bridge
100
+ test_files:
101
+ - test/test.rb
data/README.md DELETED
@@ -1,65 +0,0 @@
1
- # Rjb is Ruby-Java bridge using Java Native Interface.
2
-
3
- The [Ruby Kaigi 2010](http://www.slideshare.net/artonx/j-ruby-kaigi-2010)
4
- Presentation on `Rjb`.
5
-
6
- A short [introduction](https://www.artonx.org/collabo/backyard/?RubyJavaBridge)
7
- in English.
8
-
9
- Some [examples](https://www.artonx.org/collabo/backyard/?RjbQandA) in
10
- Japanese, but the source code is clear for everybody.
11
-
12
- # How to install
13
-
14
- You need to install Java2 sdk, and setup `JAVA_HOME` enviromental
15
- varible except for OS X. I assume that OS X's `JAVA_HOME` is reported
16
- by calling `/usr/libexec/java_home`.
17
-
18
- This done please proceed with:
19
-
20
- ``` bash
21
- ruby setup.rb config
22
- ruby setup.rb setup
23
- ```
24
-
25
- ``` bash
26
- # (in Unix)
27
- sudo ruby setup.rb install
28
- ```
29
-
30
- or
31
-
32
- ``` bash
33
- # (in win32)
34
- ruby setup.rb install
35
- ```
36
-
37
- # How to test
38
-
39
- On Windows based machines:
40
-
41
- ``` bash
42
- cd test
43
- ruby test.rb
44
- ```
45
-
46
- On Unix based machines plese see `test/readme.unix`. You need to set
47
- `LD_LIBRARY_PATH` environmental variable to run `rjb`.
48
-
49
- # Notice for opening non-ASCII 7bit filename
50
-
51
- If you'll plan to open the non-ascii character named file by Java
52
- class through Rjb, it may require to set LC_ALL environment variable
53
- in you sciprt.
54
-
55
- For example in Rails, set above line in `production.rb` as your environment:
56
-
57
- ``` bash
58
- ENV['LC_ALL'] = 'en_us.utf8' # or ja_JP.utf8 etc.
59
- ```
60
-
61
- cf: http://bugs.sun.com/view_bug.do?bug_id=4733494
62
- (Thanks Paul for this information).
63
-
64
- # Contact
65
- artonx@yahoo.co.jp