rjb 1.2.9-x86-mswin32-60 → 1.3.0-x86-mswin32-60
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 +19 -0
- data/ext/load.c +2 -2
- data/ext/rjb.c +100 -36
- data/lib/rjbcore.so +0 -0
- data/lib/rjbextension.rb +7 -14
- data/test/exttest.rb +7 -2
- data/test/test.rb +16 -5
- metadata +5 -7
- data/test/jp/co/infoseek/hp/arton/rjb/Base.class +0 -0
- data/test/jp/co/infoseek/hp/arton/rjb/ExtBase.class +0 -0
    
        data/ChangeLog
    CHANGED
    
    | @@ -1,3 +1,22 @@ | |
| 1 | 
            +
            Sat Oct 23 arton	
         | 
| 2 | 
            +
             *ext/rjb.c
         | 
| 3 | 
            +
            	RJV_VERSION -> 1.3.0
         | 
| 4 | 
            +
            	add loaded? class method.
         | 
| 5 | 
            +
            	add add_classpath method (add jars without invoking load method)
         | 
| 6 | 
            +
             *ext/load.c
         | 
| 7 | 
            +
            	OSX default jvm name changes to "JavaVM"
         | 
| 8 | 
            +
             *ext/extconf.rb
         | 
| 9 | 
            +
            	OSX javahome set to /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
         | 
| 10 | 
            +
             *lib/rjbextension.rb
         | 
| 11 | 
            +
            	use Rjb::add_classpath method instead of Kernel's class vars.
         | 
| 12 | 
            +
             *test/test.rb, test/exttest.rb
         | 
| 13 | 
            +
            	fix add_jar test, previous version load them from jp directory.
         | 
| 14 | 
            +
            Tue Sep 22 arton
         | 
| 15 | 
            +
             *ext/rjb.c
         | 
| 16 | 
            +
            	RJV_VERSION -> 1.2.10
         | 
| 17 | 
            +
            	add add_jars method. add_jar and add_jars can take an array of jars.
         | 
| 18 | 
            +
             *test/test.rb
         | 
| 19 | 
            +
            	add calling add_jar with an array test.
         | 
| 1 20 | 
             
            Tue Sep 21 arton
         | 
| 2 21 | 
             
             *ext/rjb.h
         | 
| 3 22 | 
             
            	export ClassLoader methods
         | 
    
        data/ext/load.c
    CHANGED
    
    | @@ -12,7 +12,7 @@ | |
| 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: load.c  | 
| 15 | 
            +
             * $Id: load.c 148 2010-10-23 08:38:44Z arton $
         | 
| 16 16 | 
             
             */
         | 
| 17 17 |  | 
| 18 18 | 
             
            #include <stdlib.h>
         | 
| @@ -45,7 +45,7 @@ | |
| 45 45 | 
             
             #endif
         | 
| 46 46 | 
             
             #define CLASSPATH_SEP  ';'
         | 
| 47 47 | 
             
            #elif defined(__APPLE__) && defined(__MACH__)
         | 
| 48 | 
            -
              static char* JVMDLL = "%s/ | 
| 48 | 
            +
              static char* JVMDLL = "%s/JavaVM";
         | 
| 49 49 | 
             
              #define DIRSEPARATOR '/'
         | 
| 50 50 | 
             
              #define CLASSPATH_SEP ':'
         | 
| 51 51 | 
             
              #define HOME_NAME "/Home"
         | 
    
        data/ext/rjb.c
    CHANGED
    
    | @@ -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 147 2010-10-23 05:10:33Z arton $
         | 
| 16 16 | 
             
             */
         | 
| 17 17 |  | 
| 18 | 
            -
            #define RJB_VERSION "1. | 
| 18 | 
            +
            #define RJB_VERSION "1.3.0"
         | 
| 19 19 |  | 
| 20 20 | 
             
            #include "ruby.h"
         | 
| 21 21 | 
             
            #include "extconf.h"
         | 
| @@ -83,6 +83,7 @@ static VALUE rjbi; | |
| 83 83 | 
             
            static VALUE rjbb;
         | 
| 84 84 |  | 
| 85 85 | 
             
            static ID user_initialize;
         | 
| 86 | 
            +
            static ID cvar_classpath;
         | 
| 86 87 |  | 
| 87 88 | 
             
            VALUE rjb_loaded_classes;
         | 
| 88 89 | 
             
            static VALUE proxies;
         | 
| @@ -1679,9 +1680,12 @@ static VALUE rjb_s_load(int argc, VALUE* argv, VALUE self) | |
| 1679 1680 | 
             
                JNIEnv* jenv;
         | 
| 1680 1681 | 
             
                JavaVMInitArgs vm_args;
         | 
| 1681 1682 | 
             
                jint res;
         | 
| 1683 | 
            +
                VALUE classpath;
         | 
| 1682 1684 | 
             
                VALUE user_path;
         | 
| 1683 1685 | 
             
                VALUE vm_argv;
         | 
| 1684 1686 | 
             
                char* userpath;
         | 
| 1687 | 
            +
                ID stradd = rb_intern("<<");
         | 
| 1688 | 
            +
                ID pathsep = rb_intern("PATH_SEPARATOR");
         | 
| 1685 1689 | 
             
                int i;
         | 
| 1686 1690 | 
             
                jclass jmethod;
         | 
| 1687 1691 | 
             
                jclass jfield;
         | 
| @@ -1698,12 +1702,19 @@ static VALUE rjb_s_load(int argc, VALUE* argv, VALUE self) | |
| 1698 1702 | 
             
                if (!NIL_P(user_path))
         | 
| 1699 1703 | 
             
                {
         | 
| 1700 1704 | 
             
                    Check_Type(user_path, T_STRING);
         | 
| 1701 | 
            -
            	userpath = StringValueCStr(user_path);
         | 
| 1702 1705 | 
             
                }
         | 
| 1703 1706 | 
             
                else
         | 
| 1704 1707 | 
             
                {
         | 
| 1705 | 
            -
            	 | 
| 1708 | 
            +
            	user_path = rb_str_new2(".");
         | 
| 1706 1709 | 
             
                }
         | 
| 1710 | 
            +
                classpath = rb_cvar_get(rjb, cvar_classpath);
         | 
| 1711 | 
            +
                for (i = 0; i < RARRAY_LEN(classpath); i++)
         | 
| 1712 | 
            +
                {
         | 
| 1713 | 
            +
                    rb_funcall(user_path, stradd, 1, rb_const_get(rb_cFile, pathsep));
         | 
| 1714 | 
            +
                    rb_funcall(user_path, stradd, 1, rb_ary_entry(classpath, 0));
         | 
| 1715 | 
            +
                }
         | 
| 1716 | 
            +
                userpath = StringValueCStr(user_path);
         | 
| 1717 | 
            +
                
         | 
| 1707 1718 | 
             
                if (!NIL_P(vm_argv))
         | 
| 1708 1719 | 
             
                {
         | 
| 1709 1720 | 
             
                    Check_Type(vm_argv, T_ARRAY);
         | 
| @@ -1772,7 +1783,7 @@ static VALUE rjb_s_load(int argc, VALUE* argv, VALUE self) | |
| 1772 1783 |  | 
| 1773 1784 | 
             
                jklass = import_class(jenv, j_class, rb_str_new2("java.lang.Class"));
         | 
| 1774 1785 | 
             
                rb_define_method(rb_singleton_class(jklass), "forName", rjb_class_forname, -1);
         | 
| 1775 | 
            -
                 | 
| 1786 | 
            +
                rb_define_alias(rb_singleton_class(jklass), "for_name", "forName");
         | 
| 1776 1787 | 
             
                rb_gc_register_address(&jklass);
         | 
| 1777 1788 |  | 
| 1778 1789 | 
             
                return Qnil;
         | 
| @@ -1813,6 +1824,11 @@ jobject get_systemloader(JNIEnv* jenv) | |
| 1813 1824 | 
             
                return (*jenv)->CallStaticObjectMethod(jenv, j_classloader, get_system_classloader);
         | 
| 1814 1825 | 
             
            }
         | 
| 1815 1826 |  | 
| 1827 | 
            +
            static jobject get_class_loader(JNIEnv* jenv)
         | 
| 1828 | 
            +
            {
         | 
| 1829 | 
            +
                return (url_loader) ? url_loader : get_systemloader(jenv);
         | 
| 1830 | 
            +
            }
         | 
| 1831 | 
            +
             | 
| 1816 1832 | 
             
            /*
         | 
| 1817 1833 | 
             
             * unload Java Virtual Machine
         | 
| 1818 1834 | 
             
             *
         | 
| @@ -1848,6 +1864,11 @@ static VALUE rjb_s_unload(int argc, VALUE* argv, VALUE self) | |
| 1848 1864 | 
             
                return INT2NUM(result);
         | 
| 1849 1865 | 
             
            }
         | 
| 1850 1866 |  | 
| 1867 | 
            +
            static VALUE rjb_s_loaded(VALUE self)
         | 
| 1868 | 
            +
            {
         | 
| 1869 | 
            +
                return (rjb_jvm) ? Qtrue : Qfalse;
         | 
| 1870 | 
            +
            }
         | 
| 1871 | 
            +
             | 
| 1851 1872 | 
             
            /*
         | 
| 1852 1873 | 
             
             * return all classes that were already loaded.
         | 
| 1853 1874 | 
             
             * this method simply returns the global hash,
         | 
| @@ -1859,7 +1880,7 @@ static VALUE rjb_s_classes(VALUE self) | |
| 1859 1880 | 
             
            }
         | 
| 1860 1881 |  | 
| 1861 1882 | 
             
            /**
         | 
| 1862 | 
            -
             * For JRuby conpatible  | 
| 1883 | 
            +
             * For JRuby conpatible option
         | 
| 1863 1884 | 
             
             */
         | 
| 1864 1885 | 
             
            static VALUE rjb_s_set_pconversion(VALUE self, VALUE val)
         | 
| 1865 1886 | 
             
            {
         | 
| @@ -1868,7 +1889,7 @@ static VALUE rjb_s_set_pconversion(VALUE self, VALUE val) | |
| 1868 1889 | 
             
            }
         | 
| 1869 1890 |  | 
| 1870 1891 | 
             
            /**
         | 
| 1871 | 
            -
             * For JRuby conpatible  | 
| 1892 | 
            +
             * For JRuby conpatible option
         | 
| 1872 1893 | 
             
             */
         | 
| 1873 1894 | 
             
            static VALUE rjb_s_get_pconversion(VALUE self)
         | 
| 1874 1895 | 
             
            {
         | 
| @@ -2026,7 +2047,7 @@ static VALUE import_class(JNIEnv* jenv, jclass jcls, VALUE clsname) | |
| 2026 2047 | 
             
            static VALUE rjb_i_prepare_proxy(VALUE self)
         | 
| 2027 2048 | 
             
            {
         | 
| 2028 2049 | 
             
                return rb_funcall(self, rb_intern("instance_eval"), 1, 
         | 
| 2029 | 
            -
             | 
| 2050 | 
            +
                                  rb_str_new2("instance_eval(&" USER_INITIALIZE ")"));
         | 
| 2030 2051 | 
             
            }
         | 
| 2031 2052 |  | 
| 2032 2053 | 
             
            static VALUE register_instance(JNIEnv* jenv, VALUE klass, struct jv_data* org, jobject obj)
         | 
| @@ -2204,6 +2225,7 @@ jclass rjb_find_class_by_name(JNIEnv* jenv, const char* name) | |
| 2204 2225 | 
             
                    strcpy(binname, name);
         | 
| 2205 2226 | 
             
                    v.l = (*jenv)->NewStringUTF(jenv, jniname2java(binname));
         | 
| 2206 2227 | 
             
                    cls = (*jenv)->CallObjectMethod(jenv, url_loader, rjb_load_class, v);
         | 
| 2228 | 
            +
                    (*jenv)->DeleteLocalRef(jenv, v.l);
         | 
| 2207 2229 | 
             
                }
         | 
| 2208 2230 | 
             
                else
         | 
| 2209 2231 | 
             
                {
         | 
| @@ -2376,6 +2398,7 @@ static void register_class(VALUE self, VALUE clsname) | |
| 2376 2398 | 
             
                rb_define_singleton_method(self, "sigs", rjb_get_signatures, 1);
         | 
| 2377 2399 | 
             
                rb_define_singleton_method(self, "static_sigs", rjb_get_static_signatures, 1);
         | 
| 2378 2400 | 
             
                rb_define_singleton_method(self, "ctor_sigs", rjb_get_ctor_signatures, 0);
         | 
| 2401 | 
            +
                rb_ivar_set(self, user_initialize, Qnil);
         | 
| 2379 2402 | 
             
                /*
         | 
| 2380 2403 | 
             
                 * the hash was frozen, so it need to call st_ func directly.
         | 
| 2381 2404 | 
             
                 */
         | 
| @@ -2391,30 +2414,15 @@ static void register_class(VALUE self, VALUE clsname) | |
| 2391 2414 | 
             
            #endif
         | 
| 2392 2415 | 
             
            }
         | 
| 2393 2416 |  | 
| 2394 | 
            -
             | 
| 2395 | 
            -
             * Rjb::add_jar(jarname)
         | 
| 2396 | 
            -
             */
         | 
| 2397 | 
            -
            static VALUE rjb_s_add_jar(VALUE self, VALUE jarname)
         | 
| 2417 | 
            +
            static jobject conv_jarname_to_url(JNIEnv* jenv, VALUE jarname)
         | 
| 2398 2418 | 
             
            {
         | 
| 2399 | 
            -
                 | 
| 2419 | 
            +
                jvalue arg;
         | 
| 2420 | 
            +
                jobject url;
         | 
| 2421 | 
            +
                size_t len;
         | 
| 2400 2422 | 
             
                char* jarp;
         | 
| 2401 2423 | 
             
                char* urlp;
         | 
| 2402 | 
            -
             | 
| 2403 | 
            -
                jvalue urlarg;
         | 
| 2404 | 
            -
                jvalue args[2];
         | 
| 2405 | 
            -
                jobject url;
         | 
| 2406 | 
            -
                
         | 
| 2424 | 
            +
             | 
| 2407 2425 | 
             
                SafeStringValue(jarname);
         | 
| 2408 | 
            -
                jenv = rjb_prelude();
         | 
| 2409 | 
            -
                if (!j_url_loader)
         | 
| 2410 | 
            -
                {
         | 
| 2411 | 
            -
                    j_url_loader = (*jenv)->NewGlobalRef(jenv,
         | 
| 2412 | 
            -
                                                         (*jenv)->FindClass(jenv, "java/net/URLClassLoader"));
         | 
| 2413 | 
            -
                    RJB_LOAD_METHOD(rjb_load_class, j_url_loader, "loadClass",
         | 
| 2414 | 
            -
                                    "(Ljava/lang/String;)Ljava/lang/Class;");
         | 
| 2415 | 
            -
                    RJB_LOAD_METHOD(url_loader_new, j_url_loader, "<init>",
         | 
| 2416 | 
            -
                                    "([Ljava/net/URL;Ljava/lang/ClassLoader;)V");
         | 
| 2417 | 
            -
                }
         | 
| 2418 2426 | 
             
                jarp = StringValueCStr(jarname);
         | 
| 2419 2427 | 
             
                urlp = ALLOCA_N(char, strlen(jarp) + 32);
         | 
| 2420 2428 | 
             
                if (strncmp(jarp, "http:", 5) && strncmp(jarp, "https:", 6))
         | 
| @@ -2443,22 +2451,73 @@ static VALUE rjb_s_add_jar(VALUE self, VALUE jarname) | |
| 2443 2451 | 
             
                    }
         | 
| 2444 2452 | 
             
                }
         | 
| 2445 2453 | 
             
            #endif
         | 
| 2446 | 
            -
                 | 
| 2447 | 
            -
                rjb_check_exception(jenv, 0);        
         | 
| 2448 | 
            -
                url = (*jenv)->NewObject(jenv, j_url, url_new, urlarg);
         | 
| 2454 | 
            +
                arg.l = (*jenv)->NewStringUTF(jenv, urlp);
         | 
| 2449 2455 | 
             
                rjb_check_exception(jenv, 0);        
         | 
| 2450 | 
            -
                 | 
| 2456 | 
            +
                url = (*jenv)->NewObject(jenv, j_url, url_new, arg);
         | 
| 2457 | 
            +
                rjb_check_exception(jenv, 0);
         | 
| 2458 | 
            +
                return url;
         | 
| 2459 | 
            +
            }
         | 
| 2460 | 
            +
             | 
| 2461 | 
            +
            /*
         | 
| 2462 | 
            +
             * Rjb::add_classpath(jarname)
         | 
| 2463 | 
            +
             */
         | 
| 2464 | 
            +
            static VALUE rjb_s_add_classpath(VALUE self, VALUE jarname)
         | 
| 2465 | 
            +
            {
         | 
| 2466 | 
            +
                VALUE cpath = rb_cvar_get(self, cvar_classpath);
         | 
| 2467 | 
            +
                SafeStringValue(jarname);
         | 
| 2468 | 
            +
                rb_ary_push(cpath, jarname);
         | 
| 2469 | 
            +
                return cpath;
         | 
| 2470 | 
            +
            }
         | 
| 2471 | 
            +
             | 
| 2472 | 
            +
            /*
         | 
| 2473 | 
            +
             * Rjb::add_jar(jarname)
         | 
| 2474 | 
            +
             */
         | 
| 2475 | 
            +
            static VALUE rjb_s_add_jar(VALUE self, VALUE jarname)
         | 
| 2476 | 
            +
            {
         | 
| 2477 | 
            +
                size_t i;
         | 
| 2478 | 
            +
                JNIEnv* jenv;
         | 
| 2479 | 
            +
                size_t count;
         | 
| 2480 | 
            +
                jvalue args[2];
         | 
| 2481 | 
            +
             | 
| 2482 | 
            +
                if (rb_type(jarname) != T_ARRAY)
         | 
| 2483 | 
            +
                {
         | 
| 2484 | 
            +
                    SafeStringValue(jarname);
         | 
| 2485 | 
            +
                    count = 0;
         | 
| 2486 | 
            +
                }
         | 
| 2487 | 
            +
                else
         | 
| 2488 | 
            +
                {
         | 
| 2489 | 
            +
                    count = RARRAY_LEN(jarname);
         | 
| 2490 | 
            +
                }
         | 
| 2491 | 
            +
                jenv = rjb_prelude();
         | 
| 2492 | 
            +
                if (!j_url_loader)
         | 
| 2493 | 
            +
                {
         | 
| 2494 | 
            +
                    j_url_loader = (*jenv)->NewGlobalRef(jenv,
         | 
| 2495 | 
            +
                                                         (*jenv)->FindClass(jenv, "java/net/URLClassLoader"));
         | 
| 2496 | 
            +
                    RJB_LOAD_METHOD(rjb_load_class, j_url_loader, "loadClass",
         | 
| 2497 | 
            +
                                    "(Ljava/lang/String;)Ljava/lang/Class;");
         | 
| 2498 | 
            +
                    RJB_LOAD_METHOD(url_loader_new, j_url_loader, "<init>",
         | 
| 2499 | 
            +
                                    "([Ljava/net/URL;Ljava/lang/ClassLoader;)V");
         | 
| 2500 | 
            +
                }
         | 
| 2501 | 
            +
                args[0].l = (*jenv)->NewObjectArray(jenv, (count == 0) ? 1 : count, j_url, NULL);
         | 
| 2451 2502 | 
             
                rjb_check_exception(jenv, 0);    
         | 
| 2452 | 
            -
                if ( | 
| 2503 | 
            +
                if (!count)
         | 
| 2453 2504 | 
             
                {
         | 
| 2454 | 
            -
                    args[ | 
| 2505 | 
            +
                    (*jenv)->SetObjectArrayElement(jenv, args[0].l, 0,
         | 
| 2506 | 
            +
                                                   conv_jarname_to_url(jenv, jarname));
         | 
| 2455 2507 | 
             
                }
         | 
| 2456 2508 | 
             
                else
         | 
| 2457 2509 | 
             
                {
         | 
| 2458 | 
            -
                     | 
| 2510 | 
            +
                    for (i = 0; i < count; i++) {
         | 
| 2511 | 
            +
                        (*jenv)->SetObjectArrayElement(jenv, args[0].l, i,
         | 
| 2512 | 
            +
                                                   conv_jarname_to_url(jenv, rb_ary_entry(jarname, i)));
         | 
| 2513 | 
            +
                    }
         | 
| 2459 2514 | 
             
                }
         | 
| 2515 | 
            +
                rjb_check_exception(jenv, 0);
         | 
| 2516 | 
            +
                args[1].l = get_class_loader(jenv);
         | 
| 2460 2517 | 
             
                url_loader = (*jenv)->NewObjectA(jenv, j_url_loader, url_loader_new, args);
         | 
| 2461 2518 | 
             
                rjb_check_exception(jenv, 0);
         | 
| 2519 | 
            +
                (*jenv)->NewGlobalRef(jenv, url_loader);
         | 
| 2520 | 
            +
                (*jenv)->DeleteLocalRef(jenv, args[0].l);
         | 
| 2462 2521 | 
             
                return Qtrue;
         | 
| 2463 2522 | 
             
            }
         | 
| 2464 2523 |  | 
| @@ -3015,6 +3074,7 @@ void Init_rjbcore() | |
| 3015 3074 | 
             
                rjb = rb_define_module("Rjb");
         | 
| 3016 3075 | 
             
                rb_define_module_function(rjb, "load", rjb_s_load, -1);
         | 
| 3017 3076 | 
             
                rb_define_module_function(rjb, "unload", rjb_s_unload, -1);
         | 
| 3077 | 
            +
                rb_define_module_function(rjb, "loaded?", rjb_s_loaded, 0);
         | 
| 3018 3078 | 
             
                rb_define_module_function(rjb, "import", rjb_s_import, 1);
         | 
| 3019 3079 | 
             
                rb_define_module_function(rjb, "bind", rjb_s_bind, 2);
         | 
| 3020 3080 | 
             
                rb_define_module_function(rjb, "unbind", rjb_s_unbind, 1);
         | 
| @@ -3022,8 +3082,12 @@ void Init_rjbcore() | |
| 3022 3082 | 
             
                rb_define_module_function(rjb, "throw", rjb_s_throw, -1);
         | 
| 3023 3083 | 
             
                rb_define_module_function(rjb, "primitive_conversion=", rjb_s_set_pconversion, 1);
         | 
| 3024 3084 | 
             
                rb_define_module_function(rjb, "primitive_conversion", rjb_s_get_pconversion, 0);
         | 
| 3025 | 
            -
                rb_define_module_function(rjb, " | 
| 3085 | 
            +
                rb_define_module_function(rjb, "add_classpath", rjb_s_add_classpath, 1);
         | 
| 3086 | 
            +
                rb_define_module_function(rjb, "add_jar", rjb_s_add_jar, 1);
         | 
| 3087 | 
            +
                rb_define_alias(rjb, "add_jars", "add_jar");
         | 
| 3026 3088 | 
             
                rb_define_const(rjb, "VERSION", rb_str_new2(RJB_VERSION));
         | 
| 3089 | 
            +
                rb_define_class_variable(rjb, "@@classpath", rb_ary_new());
         | 
| 3090 | 
            +
                cvar_classpath = rb_intern("@@classpath");
         | 
| 3027 3091 |  | 
| 3028 3092 | 
             
                /* Java class object */    
         | 
| 3029 3093 | 
             
                rjbc = CLASS_NEW(rb_cObject, "Rjb_JavaClass");
         | 
    
        data/lib/rjbcore.so
    CHANGED
    
    | Binary file | 
    
        data/lib/rjbextension.rb
    CHANGED
    
    | @@ -11,7 +11,7 @@ Copyright(c) 2010 arton | |
| 11 11 | 
             
             MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
         | 
| 12 12 | 
             
             Lesser General Public License for more details.
         | 
| 13 13 |  | 
| 14 | 
            -
            $Id: rjbextension.rb  | 
| 14 | 
            +
            $Id: rjbextension.rb 147 2010-10-23 05:10:33Z arton $
         | 
| 15 15 |  | 
| 16 16 | 
             
             This file is from Andreas Ronge project neo4j
         | 
| 17 17 | 
             
               http://github.com/andreasronge/neo4j/blob/rjb/lib/rjb_ext.rb
         | 
| @@ -59,23 +59,16 @@ module Kernel | |
| 59 59 | 
             
                raise unless  File.exist?(abs_path)
         | 
| 60 60 |  | 
| 61 61 | 
             
                # try to load it using RJB
         | 
| 62 | 
            -
                 | 
| 63 | 
            -
             | 
| 64 | 
            -
                 | 
| 62 | 
            +
                if Rjb::loaded?
         | 
| 63 | 
            +
                  Rjb::add_jar abs_path
         | 
| 64 | 
            +
                else
         | 
| 65 | 
            +
                  Rjb::add_classpath abs_path
         | 
| 66 | 
            +
                end
         | 
| 65 67 | 
             
              end
         | 
| 66 68 |  | 
| 67 | 
            -
              @@jvm_loaded = false
         | 
| 68 | 
            -
             | 
| 69 69 | 
             
              def load_jvm(jargs = [])
         | 
| 70 | 
            -
                 | 
| 71 | 
            -
                return if @@jvm_loaded
         | 
| 72 | 
            -
                
         | 
| 73 | 
            -
                @@jvm_loaded = true
         | 
| 70 | 
            +
                return if Rjb::loaded?
         | 
| 74 71 | 
             
                classpath = ENV['CLASSPATH'] ||= ''
         | 
| 75 | 
            -
                @@rjb_jars.each do |jar|
         | 
| 76 | 
            -
                  classpath += File::PATH_SEPARATOR unless classpath.empty?
         | 
| 77 | 
            -
                  classpath += jar
         | 
| 78 | 
            -
                end
         | 
| 79 72 | 
             
                Rjb::load(classpath, jargs)
         | 
| 80 73 | 
             
              end
         | 
| 81 74 | 
             
            end
         | 
    
        data/test/exttest.rb
    CHANGED
    
    | @@ -16,6 +16,9 @@ end | |
| 16 16 |  | 
| 17 17 | 
             
            require 'rjbextension'
         | 
| 18 18 | 
             
            require 'test/unit'
         | 
| 19 | 
            +
            require 'fileutils'
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            FileUtils.rm_f 'jp/co/infoseek/hp/arton/rjb/Base.class'
         | 
| 19 22 |  | 
| 20 23 | 
             
            puts "start RJB(#{Rjb::VERSION}) test"
         | 
| 21 24 | 
             
            class ExtTestRjb < Test::Unit::TestCase
         | 
| @@ -25,9 +28,11 @@ class ExtTestRjb < Test::Unit::TestCase | |
| 25 28 | 
             
              end
         | 
| 26 29 |  | 
| 27 30 | 
             
              def test_require_extension
         | 
| 31 | 
            +
                assert !Rjb::loaded?
         | 
| 32 | 
            +
                $LOAD_PATH << '.'
         | 
| 28 33 | 
             
                require 'rjbtest.jar'
         | 
| 29 | 
            -
                 | 
| 30 | 
            -
                
         | 
| 34 | 
            +
                Rjb::load
         | 
| 35 | 
            +
                assert Rjb::loaded?
         | 
| 31 36 | 
             
                base = jp.co.infoseek.hp.arton.rjb.Base.new
         | 
| 32 37 | 
             
                assert_equal('hello', base.instance_var)
         | 
| 33 38 | 
             
              end
         | 
    
        data/test/test.rb
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            #!/usr/local/env ruby -Ku
         | 
| 2 2 | 
             
            # encoding: utf-8
         | 
| 3 | 
            -
            # $Id: test.rb  | 
| 3 | 
            +
            # $Id: test.rb 147 2010-10-23 05:10:33Z arton $
         | 
| 4 4 |  | 
| 5 5 | 
             
            begin
         | 
| 6 6 | 
             
              require 'rjb'
         | 
| @@ -9,12 +9,17 @@ rescue LoadError | |
| 9 9 | 
             
              require 'rjb'
         | 
| 10 10 | 
             
            end
         | 
| 11 11 | 
             
            require 'test/unit'
         | 
| 12 | 
            +
            require 'fileutils'
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            FileUtils.rm_f 'jp/co/infoseek/hp/arton/rjb/Base.class'
         | 
| 15 | 
            +
            FileUtils.rm_f 'jp/co/infoseek/hp/arton/rjb/ExtBase.class'
         | 
| 12 16 |  | 
| 13 17 | 
             
            puts "start RJB(#{Rjb::VERSION}) test"
         | 
| 14 18 | 
             
            class TestRjb < Test::Unit::TestCase
         | 
| 15 19 | 
             
              include Rjb
         | 
| 16 20 | 
             
              def setup
         | 
| 17 | 
            -
                load('.')
         | 
| 21 | 
            +
                Rjb::load('.')
         | 
| 22 | 
            +
                Rjb::add_jar(File.expand_path('rjbtest.jar'))
         | 
| 18 23 | 
             
                Rjb::primitive_conversion = false
         | 
| 19 24 |  | 
| 20 25 | 
             
                @jString = import('java.lang.String')
         | 
| @@ -463,10 +468,8 @@ class TestRjb < Test::Unit::TestCase | |
| 463 468 | 
             
                bs = import('jp.co.infoseek.hp.arton.rjb.Base')
         | 
| 464 469 | 
             
                b = cls.forName('jp.co.infoseek.hp.arton.rjb.Base')
         | 
| 465 470 | 
             
                assert_equal(bs, b)
         | 
| 466 | 
            -
                # class  | 
| 471 | 
            +
                # check class that was loaded from classpath
         | 
| 467 472 | 
             
                loader = Rjb::import('java.lang.ClassLoader')
         | 
| 468 | 
            -
                b = cls.forName('jp.co.infoseek.hp.arton.rjb.Base', true, loader.getSystemClassLoader)
         | 
| 469 | 
            -
                assert_equal(bs, b)
         | 
| 470 473 | 
             
                b = cls.forName('jp.co.infoseek.hp.arton.rjb.IBase', true, loader.getSystemClassLoader)
         | 
| 471 474 | 
             
                assert(b.isInterface)
         | 
| 472 475 | 
             
              end
         | 
| @@ -739,5 +742,13 @@ class TestRjb < Test::Unit::TestCase | |
| 739 742 | 
             
                assert jt
         | 
| 740 743 | 
             
                assert_equal 'abcd', jt.new.add('ab', 'cd')
         | 
| 741 744 | 
             
              end
         | 
| 745 | 
            +
              def test_add_jars
         | 
| 746 | 
            +
                arg = ['./jartest.jar', './jartest.jar'].map do |e|
         | 
| 747 | 
            +
                  File.expand_path(e)
         | 
| 748 | 
            +
                end
         | 
| 749 | 
            +
                add_jar(arg)
         | 
| 750 | 
            +
                jt = import('jp.co.infoseek.hp.arton.rjb.JarTest')
         | 
| 751 | 
            +
                assert_equal 'abcd', jt.new.add('ab', 'cd')
         | 
| 752 | 
            +
              end
         | 
| 742 753 | 
             
            end
         | 
| 743 754 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: rjb
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 27
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 1
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 1. | 
| 8 | 
            +
              - 3
         | 
| 9 | 
            +
              - 0
         | 
| 10 | 
            +
              version: 1.3.0
         | 
| 11 11 | 
             
            platform: x86-mswin32-60
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - arton
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2010- | 
| 18 | 
            +
            date: 2010-10-23 00:00:00 +09:00
         | 
| 19 19 | 
             
            default_executable: 
         | 
| 20 20 | 
             
            dependencies: []
         | 
| 21 21 |  | 
| @@ -54,8 +54,6 @@ files: | |
| 54 54 | 
             
            - test/ExtBase.class
         | 
| 55 55 | 
             
            - test/IBase.class
         | 
| 56 56 | 
             
            - test/jar/jp/co/infoseek/hp/arton/rjb/JarTest.class
         | 
| 57 | 
            -
            - test/jp/co/infoseek/hp/arton/rjb/Base.class
         | 
| 58 | 
            -
            - test/jp/co/infoseek/hp/arton/rjb/ExtBase.class
         | 
| 59 57 | 
             
            - test/jp/co/infoseek/hp/arton/rjb/IBase.class
         | 
| 60 58 | 
             
            - test/jp/co/infoseek/hp/arton/rjb/Test$TestTypes.class
         | 
| 61 59 | 
             
            - test/jp/co/infoseek/hp/arton/rjb/Test.class
         | 
| Binary file | 
| Binary file |