Passing an array to a Java method
This example demonstrates passing an array to a Java method and returning a value to Mosel.
model MosJvmExample3
uses "mosjvm"
declarations
MyData: array(range) of real
result: real
end-declarations
! Create some data
forall(x in 0..5000) MyData(x) := x*5
! Calculate sum
result := jvmcallreal("com.fico.examples.MathOperations.sumOfArray", MyData)
if jvmstatus=false then
setmatherr("Java exception: "+jvmgetexceptionclass)
end-if
! Print result
writeln("Sum of values = ", result)
end-model Where the MathOperations class is defined as follows:
package com.fico.examples;
public class MathOperations {
public static double sumOfArray(double[] values) {
double tot = 0;
for (double v : values) {
tot += v;
}
return tot;
}
} Calling a Java method that returns an Object
This example demonstrates calling a Java method that returns an Object.
model MosJvmExample2
uses "mosjvm"
declarations
o: jvmobject
end-declarations
writeln("Creating file")
o := jvmcallobj("com.fico.examples.FileOperations.createFile")
if jvmstatus=false then
setmatherr("Java exception: "+jvmgetexceptionclass)
end-if
writeln("Deleting file")
jvmcallvoid("com.fico.examples.FileOperations.deleteFile", o)
if jvmstatus=false then
setmatherr("Java exception: "+jvmgetexceptionclass)
end-if
end-model Where the FileOperations class is defined as follows:
package com.fico.examples;
import java.io.*;
public class FileOperations {
public static File createFile() throws IOException {
File f = (new File("testfile.txt")).getAbsoluteFile();
try (PrintWriter pw = new PrintWriter(new FileWriter(f))) {
pw.println("Hello World");
}
return f;
}
public static void deleteFile(File f) throws IOException {
if (!f.delete()) throw new IOException("Failed to delete file: "+f);
}
} Creating and calling methods on Java objects
This example demonstrates calling a Java method that creates an Object, then calls an instance method on that Object.
model MosJvmExample2
uses "mosjvm"
declarations
o: jvmobject
end-declarations
writeln("Creating File object")
o := jvmnewobj("java.lang.File","myfile.txt")
if jvmstatus=false then
setmatherr("Java exception: "+jvmgetexceptionclass)
end-if
writeln("Absolute file path = ", jvmcallstr(o, "getAbsolutePath"))
if jvmstatus=false then
setmatherr("Java exception: "+jvmgetexceptionclass)
end-if
end-model
