diff options
author | Florian Frank <flori@ping.de> | 2010-09-22 22:21:02 +0200 |
---|---|---|
committer | Florian Frank <flori@ping.de> | 2010-09-23 01:16:01 +0200 |
commit | e3fe104e7d5ec184aac36128aed2d217cb655dfc (patch) | |
tree | 3a63dc0152effdb990defcd5c935e38209649a8f /java/src/json/ext/GeneratorService.java | |
parent | 2c0f8d2c9b15a33b8d10ffcb1959aef54d320b57 (diff) | |
download | json-e3fe104e7d5ec184aac36128aed2d217cb655dfc.tar.gz |
started to build jruby extension with Rakefile
Diffstat (limited to 'java/src/json/ext/GeneratorService.java')
-rw-r--r-- | java/src/json/ext/GeneratorService.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/java/src/json/ext/GeneratorService.java b/java/src/json/ext/GeneratorService.java new file mode 100644 index 0000000..b8deb22 --- /dev/null +++ b/java/src/json/ext/GeneratorService.java @@ -0,0 +1,42 @@ +/* + * This code is copyrighted work by Daniel Luz <dev at mernen dot com>. + * + * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files + * for details. + */ +package json.ext; + +import java.io.IOException; + +import org.jruby.Ruby; +import org.jruby.RubyClass; +import org.jruby.RubyModule; +import org.jruby.runtime.load.BasicLibraryService; + +/** + * The service invoked by JRuby's {@link org.jruby.runtime.load.LoadService LoadService}. + * Defines the <code>JSON::Ext::Generator</code> module. + * @author mernen + */ +public class GeneratorService implements BasicLibraryService { + public boolean basicLoad(Ruby runtime) throws IOException { + runtime.getLoadService().require("json/common"); + RuntimeInfo info = RuntimeInfo.initRuntime(runtime); + + info.jsonModule = runtime.defineModule("JSON"); + RubyModule jsonExtModule = info.jsonModule.defineModuleUnder("Ext"); + RubyModule generatorModule = jsonExtModule.defineModuleUnder("Generator"); + + RubyClass stateClass = + generatorModule.defineClassUnder("State", runtime.getObject(), + GeneratorState.ALLOCATOR); + stateClass.defineAnnotatedMethods(GeneratorState.class); + info.generatorStateClass = stateClass; + + RubyModule generatorMethods = + generatorModule.defineModuleUnder("GeneratorMethods"); + GeneratorMethods.populate(info, generatorMethods); + + return true; + } +} |