Java::Override JRuby Module =========================== * [Homepage](https://rubygems.org/gems/java_override) * [Documentation](https://github.com/szw/java_override/blob/master/README.md) Description ----------- Java::Override is a JRuby module that enables overriding native Java methods with Ruby naming conventions. JRuby allows you to call Java methods (members of native Java classes/interfaces) with Ruby naming style. Therefore you can use *snake_case* and Ruby-like accessors instead of JavaBean ones. In JRuby JavaBean accessors are *translated* to their Ruby counterparts (e.g. getFooBar can be accessed via foo\_bar, isFooBar via foo\_bar?, or setFooBar via foo\_bar=). Those methods are added to Java classes as JRuby aliases. However, if we want to override a Java method we cannot define a Ruby-like method because JVM won't see it. JVM performs polymorphic calls on its own, native methods. And so we have to override native Java methods and it doesn't look much pretty in JRuby code. But the Java::Override module abolishes this inconvenience. Once included in the subclass it creates aliases to native Java methods and supports inheritance and polymorphism that way. Moreover, it adds proper aliases for Java interfaces included as modules. Examples -------- Here is a good looking simple implementation of javax.swing.table.AbstractTableModel class. require 'java/override' java_import javax::swing::table::AbstractTableModel class MyTableModel < AbstractTableModel include Java::Override def initialize super @column_names = ['First Name', 'Last Name'] @data = [ ['John', 'Doe'], ['Jack', 'FooBar'] ] end def column_count @column_names.size end def row_count @data.size end def column_name(col) @column_names[col] end def get_value_at(row, col) @data[row][col] end def column_class(col) get_value_at(0, c).java_class end def cell_editable?(row, col) col.zero? end def set_value_at(value, row, col) @data[row][col] = value fire_table_cell_updated(row, col) end end Requirements ------------ Java::Override requires JRuby in 1.9 mode and a decent JVM. It has been tested under JRuby 1.6.2 and Oracle Java 7 JDK. Install ------- $ gem install java_override Copyright --------- Copyright (c) 2012 Szymon Wrozynski See LICENSE.txt for details.