rjb 1.5.5 → 1.5.9

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.
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