|
Re: [jruby-user] JRuby class arguments: msg#00162lang.jruby.user
On 11/18/07, Patrick Logan <patrickdlogan@xxxxxxxxx> wrote: > I'm trying to use JXPath and JRuby. To do so I need to provide JXPath > with a Java class that is the superclass of all JRuby instances. For > example in the Jython code below this is the Java class called > PyInstance. > > I also need to provide JXPath with a class defined in JRuby that > implements a Java interface. Note, I do not need to pass to Java an > instance of this class. Rather I need to pass Java the class itself. > See the Python code below where the register method is given the > arguments PyInstance and JythonPropertyHandler. > > Further down is the equivalent JRuby code with a couple of question > marks for filling in these missing arguments. Can this be done in > JRuby yet? > > * JYTHON EXAMPLE * > > class JythonPropertyHandler (DynamicPropertyHandler): > def getPropertyNames (self, py_object): > keys = py_object.__dict__.keys() > return jarray.array(keys, String) > def getProperty(self, py_object, property): > if py_object.__dict__.has_key(property): > return py_object.__dict__[property] > else: > return None > def setProperty(self, py_object, property, value): > py_object.__dict__[property] = value > > def registerJythonPropertyHandler(): > JXPathIntrospector.registerDynamicClass(PyInstance, JythonPropertyHandler) > > ***************** > * JRUBY EXAMPLE * > > class JRubyPropertyHandler > include org.apache.commons.jxpath.DynamicPropertyHandler > > def getPropertyNames(robject) > return robject.instance_variables.to_java > end > > def getProperty(robject, property) > if robject.instance_variables.include?(property) > robject.instance_variable_get(property) > else > nil > end > end > > def setProperty(robject, property, value) > robject.instance_variable_set(property, value) > end > > def JRubyPropertyHandler.register() > introspector = org.apache.commons.jxpath.JXPathIntrospector > introspector.registerDynamicClass(???, ???) > end > end > Perhaps this snippet helps? $ bin/jruby -S irb irb(main):001:0> class Foo irb(main):002:1> include java.lang.Runnable irb(main):003:1> end => Foo irb(main):004:0> Foo.new.java_class => $Proxy7 irb(main):005:0> /Nick --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [jruby-user] Multiple applications on tomcat problem: 00162, Paweł Wielgus |
|---|---|
| Next by Date: | Re: [jruby-user] JRuby class arguments: 00162, Patrick Logan |
| Previous by Thread: | [jruby-user] JRuby class argumentsi: 00162, Patrick Logan |
| Next by Thread: | Re: [jruby-user] JRuby class arguments: 00162, Patrick Logan |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |