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 <
patrick.leboutill...@gmail.com> 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 <m...@heyjay.com> 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
>

Reply via email to