/** * @param runtime * @param driver * @return */ public static RubyClass createResultClass(final Ruby runtime, DriverDefinition driver) { RubyModule doModule = runtime.getModule(DATA_OBJECTS_MODULE_NAME); RubyClass superClass = doModule.getClass(RUBY_CLASS_NAME); RubyModule driverModule = (RubyModule) doModule.getConstant(driver.getModuleName()); RubyClass resultClass = driverModule.defineClassUnder(RUBY_CLASS_NAME, superClass, RESULT_ALLOCATOR); resultClass.defineAnnotatedMethods(Result.class); return resultClass; }
/** * @param runtime * @param factory * @return */ public static RubyClass createCommandClass(final Ruby runtime, DriverDefinition factory) { RubyModule doModule = runtime.getModule(DATA_OBJECTS_MODULE_NAME); RubyClass superClass = doModule.getClass(RUBY_CLASS_NAME); RubyModule driverModule = (RubyModule) doModule.getConstant(factory.getModuleName()); RubyClass commandClass = runtime.defineClassUnder("Command", superClass, COMMAND_ALLOCATOR, driverModule); commandClass.setInstanceVariable("@__factory", JavaEmbedUtils.javaToRuby(runtime, factory)); commandClass.defineAnnotatedMethods(Command.class); setDriverDefinition(commandClass, runtime, factory); return commandClass; }