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)