[pypy-commit] pypy kill-ootype: Kill rjvm
rlamy
noreply at buildbot.pypy.org
Fri Jul 26 19:28:38 CEST 2013
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: kill-ootype
Changeset: r65695:18f60cc5840e
Date: 2013-07-26 18:28 +0100
http://bitbucket.org/pypy/pypy/changeset/18f60cc5840e/
Log: Kill rjvm
diff --git a/rpython/rlib/rjvm.py b/rpython/rlib/rjvm.py
deleted file mode 100644
--- a/rpython/rlib/rjvm.py
+++ /dev/null
@@ -1,79 +0,0 @@
-
-import jpype
-import atexit
-
-
-class CallWrapper(object):
-
- def wrap_item(self, item):
- if isinstance(item, jpype.java.lang.Object):
- return JavaInstanceWrapper(item)
- elif isinstance(item, jpype._jclass._JavaClass):
- return JavaInstanceWrapper(item.__javaclass__)
- elif isinstance(item, tuple) or isinstance(item, list):
- return self.wrap_list(item)
- return item
-
- def wrap_list(self, lst):
- return [self.wrap_item(x) for x in lst]
-
- def __call__(self, *args, **kwargs):
- result = self.__wrapped__(*args, **kwargs)
- return self.wrap_item(result)
-
-
-class JavaWrapper(CallWrapper):
- def __init__(self, name):
- self.__javaname__ = name
- all_names = name.split(".")
- temp_module = jpype
- for n in all_names:
- temp_module = getattr(temp_module, n)
- self.__wrapped__ = temp_module
- def __getattr__(self, attr):
- if isinstance(getattr(self.__wrapped__, attr), type):
- return JavaClassWrapper(getattr(self.__wrapped__, attr))
- elif isinstance(getattr(self.__wrapped__, attr), jpype.JPackage):
- return JavaWrapper(self.__javaname__ + '.' + attr)
-
-class JavaInstanceWrapper(object):
- def __init__(self, obj):
- self.__wrapped__ = obj
-
- def __getattr__(self, attr):
- return JavaMethodWrapper(getattr(self.__wrapped__, attr))
-
-class JavaClassWrapper(CallWrapper):
- def __init__(self, cls):
- self.__wrapped__ = cls
-
- def __getattr__(self, attr):
- result = None
- try:
- result = JavaStaticMethodWrapper(getattr(self.__wrapped__, attr))
- except AttributeError:
- result = JavaStaticMethodWrapper(getattr(self.__wrapped__.__javaclass__, attr))
- return result
-
-class JavaMethodWrapper(CallWrapper):
-
- def __init__(self, meth):
- self.__wrapped__ = meth
-
-class JavaStaticMethodWrapper(CallWrapper):
- def __init__(self, static_meth):
- self.__wrapped__ = static_meth
-
-
-
-jpype.startJVM(jpype.getDefaultJVMPath(), "-ea")
-java = JavaWrapper("java")
-JavaMethod = type(jpype.java.lang.Math.abs)
-
-
-def cleanup():
- jpype.shutdownJVM()
-
-atexit.register(cleanup)
-
-
diff --git a/rpython/rlib/test/test_rjvm.py b/rpython/rlib/test/test_rjvm.py
deleted file mode 100644
--- a/rpython/rlib/test/test_rjvm.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import py
-py.test.skip('this is outdated. Check the jvm-improvements branch')
-
-try:
- import jpype
-except ImportError:
- py.test.skip("In Progress...")
-
-from rpython.rlib.rjvm import java, JavaWrapper, JavaClassWrapper, JavaInstanceWrapper, JavaMethodWrapper, JavaStaticMethodWrapper
-
-def test_static_method():
- assert isinstance(java.lang, JavaWrapper)
- assert isinstance(java.lang.Math, JavaClassWrapper)
- assert isinstance(java.lang.Math.abs, JavaStaticMethodWrapper)
- result = java.lang.Math.abs(-42)
- assert isinstance(result, int)
- assert result == 42
-
-def test_class_instantiate():
- al = java.util.ArrayList()
- assert isinstance(al, JavaInstanceWrapper)
- assert isinstance(al.add, JavaMethodWrapper)
- al.add("test")
- assert al.get(0) == "test"
-
-def test_reflection():
- py.test.skip('in progress')
- al_class = java.lang.Class.forName("java.util.ArrayList")
- assert isinstance(al_class, JavaInstanceWrapper)
- #meths = al_class.__javaclass__.getDeclaredMethods()
- constructors = al_class.getDeclaredConstructors()
- meths = al_class.getDeclaredMethods()
- al = constructors[0].newInstance([])
- al_org = java.util.ArrayList()
- assert isinstance(al, JavaInstanceWrapper)
- assert isinstance(al.add, JavaMethodWrapper)
- al_add = meths[2]
- assert isinstance(al_add, JavaInstanceWrapper)
- assert isinstance(al_add.invoke, JavaMethodWrapper)
- # This fail, but work on the command line
- al_add.invoke(al_org, ["Hello"])
- assert al_org[0] == "Hello"
- al_add.invoke(al, ["Hello"])
- assert al[0] == "Hello"
More information about the pypy-commit
mailing list