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); } }