Hi Patrick, thanks for the quick response.
I'm looking at the POD now.
I see that you're creating a pi, then doing pi.eval, which I believe is
doing a perl eval{} around the string being passed.
do you have any examples of calling a perl module? (i tried to find
something in the tests) Maybe even walking a java variable?
Thanks
Jay
On Wed, Jan 12, 2011 at 12:25 PM, Patrick LeBoutillier <
[email protected]> wrote:
> Jay,
>
> You need to use the Inline::Java::PerlInterpreter for that:
>
> http://search.cpan.org/~patl/Inline-Java-0.53/Java/PerlInterpreter/PerlInterpreter.pod
>
> Once your interpreter is created you can call Callback methods on it:
> require, CallPerlSub, eval...
>
> Note: Keep in mind that Inline::Java::PerlInterpreter is experimental, so
> YMMV.
>
>
> Patrick
>
>
> On Wed, Jan 12, 2011 at 1:01 PM, Jay Strauss <[email protected]> wrote:
> > 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());
> > }
> >
> > }
> > }
> >
>
>
>
> --
> =====================
> Patrick LeBoutillier
> Rosemère, Québec, Canada
>