Initializing help system before first use

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