Mercurial > hg > octave-lyh
comparison libinterp/octave-value/ov-java.cc @ 15790:921912c92102
Deprecate java_invoke, replace with javaMethod.
Update all m-files to use javaMethod.
* scripts/deprecated/java_invoke.m: New m-file with warning about function
being deprecated.
* libinterp/octave-value/ov-java.cc(Fjava_invoke, FjavaMethod): Remove
java_invoke. Replace body of javaMethod with old java_invoke code.
* libinterp/octave-value/ov-java.cc(do_java_invoke): Rename to do_javaMethod.
* libinterp/octave-value/ov-java.cc(do_java_create): Rename to do_javaObject.
* libinterp/octave-value/ov-java.h(do_java_invoke, do_java_create): Rename
prototypes for functions to do_javaMethod and do_javaObject respectively.
* scripts/deprecated/javafields.m, scripts/deprecated/javamethods.m,
scripts/deprecated/module.mk, scripts/general/fieldnames.m,
scripts/general/methods.m, scripts/java/errordlg.m, scripts/java/helpdlg.m,
scripts/java/inputdlg.m, scripts/java/javaArray.m, scripts/java/javaaddpath.m,
scripts/java/javaclasspath.m, scripts/java/javamem.m,
scripts/java/javarmpath.m, scripts/java/listdlg.m, scripts/java/msgbox.m,
scripts/java/questdlg.m, scripts/java/warndlg.m: Replace java_invoke calls
with javaMethod calls.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 14 Dec 2012 09:51:37 -0800 |
parents | 4698ea77aa75 |
children | 12394261da0f |
comparison
equal
deleted
inserted
replaced
15789:8056d0e36bef | 15790:921912c92102 |
---|---|
70 Java_org_octave_Octave_doEvalString (JNIEnv *, jclass, jstring); | 70 Java_org_octave_Octave_doEvalString (JNIEnv *, jclass, jstring); |
71 | 71 |
72 JNIEXPORT jboolean JNICALL | 72 JNIEXPORT jboolean JNICALL |
73 Java_org_octave_Octave_needThreadedInvokation (JNIEnv *, jclass); | 73 Java_org_octave_Octave_needThreadedInvokation (JNIEnv *, jclass); |
74 } | 74 } |
75 | |
76 static octave_value _java_invoke (const octave_value_list& args); | |
77 | 75 |
78 static JavaVM *jvm = 0; | 76 static JavaVM *jvm = 0; |
79 static bool jvm_attached = false; | 77 static bool jvm_attached = false; |
80 | 78 |
81 // Need to keep hold of the shared library handle until exit. | 79 // Need to keep hold of the shared library handle until exit. |
1398 terminate_jvm (); | 1396 terminate_jvm (); |
1399 | 1397 |
1400 return retval; | 1398 return retval; |
1401 } | 1399 } |
1402 | 1400 |
1403 // internally called from java_invoke and javaMethod. | |
1404 | |
1405 static octave_value | |
1406 _java_invoke (const octave_value_list& args) | |
1407 { | |
1408 octave_value retval; | |
1409 | |
1410 initialize_java (); | |
1411 | |
1412 if (! error_state) | |
1413 { | |
1414 JNIEnv *current_env = octave_java::thread_jni_env (); | |
1415 | |
1416 if (args.length () > 1) | |
1417 { | |
1418 std::string methodname = args(1).string_value (); | |
1419 if (! error_state) | |
1420 { | |
1421 octave_value_list tmp; | |
1422 for (int i=2; i<args.length (); i++) | |
1423 tmp(i-2) = args(i); | |
1424 | |
1425 if (args(0).class_name () == "octave_java") | |
1426 { | |
1427 octave_java *jobj = TO_JAVA (args(0)); | |
1428 retval = jobj->do_java_invoke (current_env, methodname, tmp); | |
1429 } | |
1430 else if (args(0).is_string ()) | |
1431 { | |
1432 std::string cls = args(0).string_value (); | |
1433 retval = octave_java::do_java_invoke (current_env, cls, methodname, tmp); | |
1434 } | |
1435 else | |
1436 error ("java_invoke: OBJ must be a Java object or a string"); | |
1437 } | |
1438 else | |
1439 error ("java_invoke: METHODNAME must be a string"); | |
1440 } | |
1441 else | |
1442 print_usage (); | |
1443 } | |
1444 | |
1445 return retval; | |
1446 } | |
1447 | |
1448 JNIEXPORT jboolean JNICALL | 1401 JNIEXPORT jboolean JNICALL |
1449 Java_org_octave_Octave_call (JNIEnv *env, jclass, jstring funcName, | 1402 Java_org_octave_Octave_call (JNIEnv *env, jclass, jstring funcName, |
1450 jobjectArray argin, jobjectArray argout) | 1403 jobjectArray argin, jobjectArray argout) |
1451 { | 1404 { |
1452 std::string fname = jstring_to_string (env, funcName); | 1405 std::string fname = jstring_to_string (env, funcName); |
1587 case '.': | 1540 case '.': |
1588 if (type.length () > 1 && type[1] == '(') | 1541 if (type.length () > 1 && type[1] == '(') |
1589 { | 1542 { |
1590 octave_value_list ovl; | 1543 octave_value_list ovl; |
1591 count++; | 1544 count++; |
1592 ovl(0) = octave_value (this); | 1545 ovl(1) = octave_value (this); |
1593 ovl(1) = (idx.front ())(0); | 1546 ovl(0) = (idx.front ())(0); |
1594 std::list<octave_value_list>::const_iterator it = idx.begin (); | 1547 std::list<octave_value_list>::const_iterator it = idx.begin (); |
1595 ovl.append (*++it); | 1548 ovl.append (*++it); |
1596 retval = feval (std::string ("java_invoke"), ovl, 1); | 1549 retval = feval (std::string ("javaMethod"), ovl, 1); |
1597 skip++; | 1550 skip++; |
1598 } | 1551 } |
1599 else | 1552 else |
1600 { | 1553 { |
1601 octave_value_list ovl; | 1554 octave_value_list ovl; |
1729 else | 1682 else |
1730 return octave_value (""); | 1683 return octave_value (""); |
1731 } | 1684 } |
1732 | 1685 |
1733 octave_value | 1686 octave_value |
1734 octave_java::do_java_invoke (JNIEnv* jni_env, const std::string& name, | 1687 octave_java::do_javaMethod (JNIEnv* jni_env, const std::string& name, |
1735 const octave_value_list& args) | 1688 const octave_value_list& args) |
1736 { | 1689 { |
1737 octave_value retval; | 1690 octave_value retval; |
1738 | 1691 |
1739 if (jni_env) | 1692 if (jni_env) |
1756 | 1709 |
1757 return retval; | 1710 return retval; |
1758 } | 1711 } |
1759 | 1712 |
1760 octave_value | 1713 octave_value |
1761 octave_java:: do_java_invoke (JNIEnv* jni_env, | 1714 octave_java:: do_javaMethod (JNIEnv* jni_env, |
1762 const std::string& class_name, | 1715 const std::string& class_name, |
1763 const std::string& name, | 1716 const std::string& name, |
1764 const octave_value_list& args) | 1717 const octave_value_list& args) |
1765 { | 1718 { |
1766 octave_value retval; | 1719 octave_value retval; |
1786 | 1739 |
1787 return retval; | 1740 return retval; |
1788 } | 1741 } |
1789 | 1742 |
1790 octave_value | 1743 octave_value |
1791 octave_java::do_java_create (JNIEnv* jni_env, const std::string& name, | 1744 octave_java::do_javaObject (JNIEnv* jni_env, const std::string& name, |
1792 const octave_value_list& args) | 1745 const octave_value_list& args) |
1793 { | 1746 { |
1794 octave_value retval; | 1747 octave_value retval; |
1795 | 1748 |
1796 if (jni_env) | 1749 if (jni_env) |
1935 x = javaObject (\"java.lang.StringBuffer\")\n\ | 1888 x = javaObject (\"java.lang.StringBuffer\")\n\ |
1936 x = javaObject (\"java.lang.StringBuffer\", \"Initial string\")\n\ | 1889 x = javaObject (\"java.lang.StringBuffer\", \"Initial string\")\n\ |
1937 @end group\n\ | 1890 @end group\n\ |
1938 @end example\n\ | 1891 @end example\n\ |
1939 \n\ | 1892 \n\ |
1940 @seealso{java_invoke}\n\ | 1893 @seealso{javaMethod}\n\ |
1941 @end deftypefn") | 1894 @end deftypefn") |
1942 { | 1895 { |
1943 #ifdef HAVE_JAVA | 1896 #ifdef HAVE_JAVA |
1944 octave_value retval; | 1897 octave_value retval; |
1945 | 1898 |
1946 initialize_java (); | 1899 initialize_java (); |
1900 | |
1947 if (! error_state) | 1901 if (! error_state) |
1948 { | 1902 { |
1949 JNIEnv *current_env = octave_java::thread_jni_env (); | 1903 JNIEnv *current_env = octave_java::thread_jni_env (); |
1950 | 1904 |
1951 if (args.length () > 0) | 1905 if (args.length () > 0) |
1954 if (! error_state) | 1908 if (! error_state) |
1955 { | 1909 { |
1956 octave_value_list tmp; | 1910 octave_value_list tmp; |
1957 for (int i=1; i<args.length (); i++) | 1911 for (int i=1; i<args.length (); i++) |
1958 tmp(i-1) = args(i); | 1912 tmp(i-1) = args(i); |
1959 retval = octave_java::do_java_create (current_env, classname, tmp); | 1913 retval = octave_java::do_javaObject (current_env, classname, tmp); |
1960 } | 1914 } |
1961 else | 1915 else |
1962 error ("javaObject: CLASSNAME argument must be a string"); | 1916 error ("javaObject: CLASSNAME argument must be a string"); |
1963 } | 1917 } |
1964 else | 1918 else |
1970 error ("javaObject: Octave was not compiled with Java interface"); | 1924 error ("javaObject: Octave was not compiled with Java interface"); |
1971 return octave_value (); | 1925 return octave_value (); |
1972 #endif | 1926 #endif |
1973 } | 1927 } |
1974 | 1928 |
1975 DEFUN (java_invoke, args, , | |
1976 "-*- texinfo -*-\n\ | |
1977 @deftypefn {Built-in Function} {@var{ret} =} java_invoke (@var{obj}, @var{methodname}, @var{arg1}, @dots{})\n\ | |
1978 Invoke the method @var{methodname} on the Java object @var{obj} with the arguments\n\ | |
1979 @var{arg1}, @dots{} For static methods, @var{obj} can be a string\n\ | |
1980 representing the fully qualified name of the corresponding class. The\n\ | |
1981 function returns the result of the method invocation.\n\ | |
1982 \n\ | |
1983 When @var{obj} is a regular Java object, structure-like indexing can be\n\ | |
1984 used as a shortcut syntax. For instance, the two following statements are\n\ | |
1985 equivalent\n\ | |
1986 \n\ | |
1987 @example\n\ | |
1988 @group\n\ | |
1989 ret = java_invoke (x, \"method1\", 1.0, \"a string\")\n\ | |
1990 ret = x.method1 (1.0, \"a string\")\n\ | |
1991 @end group\n\ | |
1992 @end example\n\ | |
1993 \n\ | |
1994 @seealso{javaMethod, javaObject}\n\ | |
1995 @end deftypefn") | |
1996 { | |
1997 #ifdef HAVE_JAVA | |
1998 return _java_invoke (args); | |
1999 #else | |
2000 error ("java_invoke: Octave was not compiled with Java interface"); | |
2001 return octave_value (); | |
2002 #endif | |
2003 } | |
2004 | |
2005 DEFUN (javaMethod, args, , | 1929 DEFUN (javaMethod, args, , |
2006 "-*- texinfo -*-\n\ | 1930 "-*- texinfo -*-\n\ |
2007 @deftypefn {Built-in Function} {@var{ret} =} javaMethod (@var{methodname}, @var{obj}, @var{arg1}, @dots{})\n\ | 1931 @deftypefn {Built-in Function} {@var{ret} =} javaMethod (@var{methodname}, @var{obj})\n\ |
1932 @deftypefnx {Built-in Function} {@var{ret} =} javaMethod (@var{methodname}, @var{obj}, @var{arg1}, @dots{})\n\ | |
2008 Invoke the method @var{methodname} on the Java object @var{obj} with the arguments\n\ | 1933 Invoke the method @var{methodname} on the Java object @var{obj} with the arguments\n\ |
2009 @var{arg1}, @dots{} For static methods, @var{obj} can be a string\n\ | 1934 @var{arg1}, @dots{} For static methods, @var{obj} can be a string\n\ |
2010 representing the fully qualified name of the corresponding class. The\n\ | 1935 representing the fully qualified name of the corresponding class. The\n\ |
2011 function returns the result of the method invocation.\n\ | 1936 function returns the result of the method invocation.\n\ |
2012 \n\ | 1937 \n\ |
2019 ret = javaMethod (\"method1\", x, 1.0, \"a string\")\n\ | 1944 ret = javaMethod (\"method1\", x, 1.0, \"a string\")\n\ |
2020 ret = x.method1 (1.0, \"a string\")\n\ | 1945 ret = x.method1 (1.0, \"a string\")\n\ |
2021 @end group\n\ | 1946 @end group\n\ |
2022 @end example\n\ | 1947 @end example\n\ |
2023 \n\ | 1948 \n\ |
2024 @seealso{java_invoke, javaObject}\n\ | 1949 @seealso{methods, javaObject}\n\ |
2025 @end deftypefn") | 1950 @end deftypefn") |
2026 { | 1951 { |
2027 #ifdef HAVE_JAVA | 1952 #ifdef HAVE_JAVA |
2028 octave_value retval; | 1953 octave_value retval; |
2029 | 1954 |
2030 if (args.length () > 1) | 1955 initialize_java (); |
2031 { | 1956 |
2032 // swap first two arguments | 1957 if (! error_state) |
2033 octave_value_list tmp; | 1958 { |
2034 tmp(0) = args(1); | 1959 JNIEnv *current_env = octave_java::thread_jni_env (); |
2035 tmp(1) = args(0); | 1960 |
2036 | 1961 if (args.length () > 1) |
2037 // copy remaining arguments | 1962 { |
2038 for (int i=2; i<args.length (); i++) | 1963 std::string methodname = args(0).string_value (); |
2039 tmp(i) = args(i); | 1964 if (! error_state) |
2040 | 1965 { |
2041 retval = _java_invoke (tmp); | 1966 octave_value_list tmp; |
2042 } | 1967 for (int i=2; i<args.length (); i++) |
2043 else | 1968 tmp(i-2) = args(i); |
2044 { | 1969 |
2045 print_usage (); | 1970 if (args(1).class_name () == "octave_java") |
1971 { | |
1972 octave_java *jobj = TO_JAVA (args(1)); | |
1973 retval = jobj->do_javaMethod (current_env, methodname, tmp); | |
1974 } | |
1975 else if (args(1).is_string ()) | |
1976 { | |
1977 std::string cls = args(1).string_value (); | |
1978 retval = octave_java::do_javaMethod (current_env, cls, methodname, tmp); | |
1979 } | |
1980 else | |
1981 error ("javaMethod: OBJ must be a Java object or a string"); | |
1982 } | |
1983 else | |
1984 error ("javaMethod: METHODNAME must be a string"); | |
1985 } | |
1986 else | |
1987 print_usage (); | |
2046 } | 1988 } |
2047 | 1989 |
2048 return retval; | 1990 return retval; |
2049 #else | 1991 #else |
2050 error ("javaMethod: Octave was not compiled with Java interface"); | 1992 error ("javaMethod: Octave was not compiled with Java interface"); |
2068 __java_get__ (x, \"field1\")\n\ | 2010 __java_get__ (x, \"field1\")\n\ |
2069 x.field1\n\ | 2011 x.field1\n\ |
2070 @end group\n\ | 2012 @end group\n\ |
2071 @end example\n\ | 2013 @end example\n\ |
2072 \n\ | 2014 \n\ |
2073 @seealso{java_set, java_invoke, javaObject}\n\ | 2015 @seealso{__java_set__, javaMethod, javaObject}\n\ |
2074 @end deftypefn") | 2016 @end deftypefn") |
2075 { | 2017 { |
2076 #ifdef HAVE_JAVA | 2018 #ifdef HAVE_JAVA |
2077 octave_value retval; | 2019 octave_value retval; |
2078 | 2020 |
2130 __java_set__ (x, \"field1\", val)\n\ | 2072 __java_set__ (x, \"field1\", val)\n\ |
2131 x.field1 = val\n\ | 2073 x.field1 = val\n\ |
2132 @end group\n\ | 2074 @end group\n\ |
2133 @end example\n\ | 2075 @end example\n\ |
2134 \n\ | 2076 \n\ |
2135 @seealso{__java_get__, java_invoke, javaObject}\n\ | 2077 @seealso{__java_get__, javaMethod, javaObject}\n\ |
2136 @end deftypefn") | 2078 @end deftypefn") |
2137 { | 2079 { |
2138 #ifdef HAVE_JAVA | 2080 #ifdef HAVE_JAVA |
2139 octave_value retval; | 2081 octave_value retval; |
2140 | 2082 |
2176 #endif | 2118 #endif |
2177 } | 2119 } |
2178 | 2120 |
2179 DEFUN (java2mat, args, , | 2121 DEFUN (java2mat, args, , |
2180 "-*- texinfo -*-\n\ | 2122 "-*- texinfo -*-\n\ |
2181 @deftypefn {Built-in Function} {} java2mat (@var{obj})\n\ | 2123 @deftypefn {Built-in Function} {} java2mat (@var{javaobj})\n\ |
2182 Undocumented internal function.\n\ | 2124 Undocumented internal function.\n\ |
2183 @end deftypefn") | 2125 @end deftypefn") |
2184 { | 2126 { |
2185 #ifdef HAVE_JAVA | 2127 #ifdef HAVE_JAVA |
2186 octave_value_list retval; | 2128 octave_value_list retval; |
2264 // merely test for the presence of a Java object without having Java installed. | 2206 // merely test for the presence of a Java object without having Java installed. |
2265 DEFUN (isjava, args, , | 2207 DEFUN (isjava, args, , |
2266 "-*- texinfo -*-\n\ | 2208 "-*- texinfo -*-\n\ |
2267 @deftypefn {Built-in Function} {} isjava (@var{x})\n\ | 2209 @deftypefn {Built-in Function} {} isjava (@var{x})\n\ |
2268 Return true if @var{x} is a Java object.\n\ | 2210 Return true if @var{x} is a Java object.\n\ |
2269 @seealso{class, typeinfo, isa}\n\ | 2211 @seealso{class, typeinfo, isa, javaObject}\n\ |
2270 @end deftypefn") | 2212 @end deftypefn") |
2271 { | 2213 { |
2272 octave_value retval; | 2214 octave_value retval; |
2273 | 2215 |
2274 if (args.length () != 1) | 2216 if (args.length () != 1) |