Forum: JRuby RE: Re: Passing JRuby to Java

C37cb1a6a19e23f067aae6ccb2d0de4b?d=identicon&s=25 Manuel Ramos Caro (Guest)
on 2013-12-03 16:15
(Received via mailing list)
Hi..
Did you read this...??

https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby

-----Mensaje original-----
De: "Ray H." <lists@ruby-forum.com>
Enviado: ‎03/‎12/‎2013 15:25
Para: "user@jruby.codehaus.org" <user@jruby.codehaus.org>
Asunto: [jruby-user] Re: Passing JRuby to Java

Christian,  I wanted to get a bit more info about the Marshal class, but
cannot seem to find it.  I searched in the JRuby API but only saw the
MarshalStream class.

Like I said, I need to pass the objects to Drools and Drools need to
recognize them as a special named class for the "facts" to work.  That
was why I created a Java class to inspect an object and then passed a
JRuby mongoid/moped object.  JRuby properly see it as an object of type
"Record" or whatever I have called it, but my Java program saw the class
as "RubyObject".

Drools is a rules engine that responds to facts that are actually Java
classes with specific values.  So if for example, I have customer data
in a class but Drools not see the class as being "Customer", then it
will not trigger processing.  The class types have to match as well as
the method calls.

Ray

--
Posted via http://www.ruby-forum.com/.
6b611063e1aec3f09bdca7e406b3a765?d=identicon&s=25 Ray H. (ray_h)
on 2013-12-08 05:16
Manuel,  I have tried many things to resolve this issue.  Basically the
issue is when passing JRuby objects to Java.  For standard objects/
primities such as Strings, JRuby has some standard builtin translations.
The problem comes in if you want to pass any instance of a class.  It
will be translated to a RubyObject.  I have tried Java reflection, but I
cannot find any way to execute the methods nor to set/ retrieve the
contents of a JRuby class.

I have done this many times in Groovy, where the Groovy classes are
first class Java classes.  I was hoping to do the same with JRuby and
Rails.  I would even be willing to create a wrapper class to give the
Java objects access to the methods and data in the Ruby class.  I cannot
see anyway to do that... before you mention embedding, keep in mind that
I not trying to instantiate the class within Java but to use an instance
of the class created by Rails.

Thoughts?

Ray
This topic is locked and can not be replied to.