On Fri, 6 Dec 2002, [EMAIL PROTECTED] wrote:
> 
>> From: news [mailto:[EMAIL PROTECTED]]On Behalf Of Galen
>> Boyer Sent: Friday, December 06, 2002 8:45 AM To:
>> [EMAIL PROTECTED] Subject: Re: BanInfo wizard anyone?

[...]

>> The translation layer could handle things like the java method
>> signature returning, say, a hashmap.  The layer could have a
>> hashmap to alist converter.
> 
> I've actually got a working prototype of a generic
> interface/translation layer that does just that.  For now, I'm
> calling it JUCI (JDEE Universal Communication Interface).  It
> allows elisp to call java and java to call back to elisp in a
> standard manner.  It's still very alpha.  One (minor, IMHO)
> drawback is that it requires JDK 1.3 or greater, because I'm
> making use of the java.lang.reflect.Proxy mechanism.
> 
> My plan in the near term is to use it to try to integrate
> Transmogrify, which requires that the editor implement a 'Hook'
> interface for getting info like the current position of the
> cursor, list of files in the project, etc.
> 
> Calling java from elisp is straightforward; you create a java
> interface containing the methods you wish to call from elisp
> and an implementation of that interface that has a default
> constructor:
> 
> public interface MyHelper {
>   Object doSomething(Object arg);
> }
> 
> public class MyHelperImpl implements MyHelper {
>   public MyHelperImpl() {}
> 
>   public Object doSomething(Object arg) {
>     // ...
>   }
> }
> 
> On the elisp side, all you would need to do is declare a defun
> like this:
> 
> (defun my-helper-do-something (arg)
>   (jde-juci-invoke-java "MyHelperImpl" "doSomething"))
> 
> 
> For java code that calls elisp, you declare just an interface.
> On the elisp side, you implement that interface by creating a
> defun with a name following certain conventions and a matching
> arglist:
> 
> public interface MyPrompt {
>   String getUserInput();
> }
> 
> (defun my-prompt-get-user-input ()
>   (read-from-minibuffer "Input: "))
> 
> 
> // java code that invokes elisp
> 
>   Prompt prompt = (Prompt)
> jde.juci.ConnectionFactory.getConnection(MyPrompt.class);
>   String result = promt.getUserInput();
> 
> This will cause emacs to enter the minibuffer, capture the
> user-entered string, and return it to the java code.
> 
> My hope is that the JDEE community will find this approach
> useful and that I can find enough time to clean up the code,
> document it and make it robust.  I'd appreciate any feedback.

I see.  You aren't referencing the beanshell here.  Are you
opening up a direct connection to a JVM?

-- 
Galen Boyer


Reply via email to