Thanks Patrick I'm traveling the remainder of the week and will play with it next week
Thanks a ton Jay Sent from my iPhone On Jan 13, 2011, at 9:43 AM, Patrick LeBoutillier <[email protected]> wrote: > Jay, > > I just uploaded 0.53_90 to CPAN, you must use that version for what > you want to do. There is an example in there: > > http://cpansearch.perl.org/src/PATL/Inline-Java-0.53_90/Java/PerlInterpreter/t/02_perl_interpreter.t > > At the end on that file there is a Java program that creates a > PerlInterpreter, loads a Perl script and calls > a function in it. I added an example where the Perl code processes a > ArrayList object (sum_array_list). > > The Perl script loaded is here: > http://cpansearch.perl.org/src/PATL/Inline-Java-0.53_90/Java/PerlInterpreter/t/Tests.pl > > > Patrick > > > > On Wed, Jan 12, 2011 at 2:46 PM, Jay Strauss <[email protected]> wrote: >> 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 >> >> > > > > -- > ===================== > Patrick LeBoutillier > Rosemère, Québec, Canada
