Hi,

2 questions:

1) why do call yourself Sisyphus?  Is it really all for meaningless, endless
:)

2) I'd like to call some perl from a running Java process.  I'm using a
vendor api and framework to build custom code.  The way it works is I have
to write some java (see below), then compile within Eclipse using a supplied
Ant xml, which turns my code into a Jar that is deployed onto the server.
 The vendor's Java app reads a DB that indicates where the Jar is located
and the class and method to call under various situations.

I've written a Inline::Java callback in the past, but it was initiated via
Perl.  That is, I launched a perl process, that then instantiated some Java
that in turn called back into the perl.

In reading the callback docs I can't seem to grok how to make it all happen
from Java and my Jar correctly.

Below is the code.

Any guidance would be hugely appreciated.

Thanks
Jay

// this is just some test code
// that doesn't really do anything but write to a file

package com.my.stuff;
import java.io.*;
import vendorapi.mpi.*;
import vendorapi.handler.*;
import java.util.Map;
import java.util.Date;
import java.text.SimpleDateFormat;

public class FileHandler extends HandlerExtBase
{
// Class-specific members used as keys in the handlerArgs to identify
// the pre and post-ixn filename(s)

private static final String ARG_PREFILENAME  = "preFileName";
private static final String ARG_POSTFILENAME = "postFileName";
 // Instance-specific members initialized during the overridden init()
method

private String preFileName = null;
private String postFileName = null;
 public void init(Context ctx, String handlerArgs)
{
 Map<?, ?> argsMap = parseArgs(handlerArgs);
String madHomeDir = System.getenv("MAD_HOMEDIR");

// Create the pre- and post- files in the MAD_HOMEDIR directory

if (argsMap.containsKey(ARG_PREFILENAME))
 {
preFileName = madHomeDir + File.separator + "log" + File.separator +
 (String)argsMap.get(ARG_PREFILENAME);
}

if (argsMap.containsKey(ARG_POSTFILENAME))
 {
postFileName = madHomeDir + File.separator + "log" + File.separator +
 (String)argsMap.get(ARG_POSTFILENAME);
}
 }

 protected void writeFile(String fileName, RowList rowList)
 {

Date todaysDate            = new java.util.Date();
SimpleDateFormat formatter = new SimpleDateFormat();
 String formattedDate       = formatter.format(todaysDate);

PrintWriter out = null;
 try {
out = new PrintWriter(new BufferedWriter(new FileWriter("c:\\" +
formattedDate + ".txt")));
 out.println(formattedDate);
} catch (IOException e) {
// TODO Auto-generated catch block
 e.printStackTrace();
}

//
 // I'd like to call Perl at this point and have Perl be
// able to access the RowList instance, so Perl could walk
 // the list.  As opposed to flattening the list in someway
// and shelling out and passing in the flattened list
 //
//

public void preIxn(IService service) throws CallbackHandlerException
{
 if (preFileName != null)
{
writeFile(preFileName, service.getInpMemRowList());
 }

}

public void postIxn(IService service) throws CallbackHandlerException
 {

if (postFileName != null)
{
 writeFile(postFileName, service.getOutMemRowList());
}

}
}

Reply via email to