I sent this to the wrong list serv :) Meant to send it to the JRuby list
serv

2012/2/27 Jonathan Coveney <[email protected]>

> It looks like in master, RubyEnumerator.enumeratorize() is public, but as
> of 1.6.7 it is not. I'm wondering what the idiomatic way is to do this? In
> 1.6.6 I used "RubyEnumerator.RubyEnumeratorKernerl.obj_to_enum", but that
> is no longer working.
>
> As always, I appreciate the help. Writing jruby libraries in Java is a
> brave new world.
>
> My method is the following:
>
>     @JRubyMethod
>     public IRubyObject each(ThreadContext context, Block block) throws
> ExecException {
>         //TODO would like to return an Enumerator, but the necessary
> methods are taken?
>         if (!block.isGiven()) return
> RubyEnumerator.RubyEnumeratorKernel.obj_to_enum(context, this);
>
>         getIterator(context).each(context,block);
>
>         return this;
>         /*  In a future release of JRuby when enumeratorize is made public
> (which is planned), should replace the above with the below
>         if (!block.isGiven()) return
> RubyEnumerator.enumeratorize(context.getRuntime(), this, "each");
>         */
>     }
>
> and the error is below:
>
> Java::JavaLang::NoSuchMethodError:
> org.jruby.RubyEnumerator$RubyEnumeratorKernel.obj_to_enum(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
>     from
> org.apache.pig.scripting.jruby.RubyDataBag.each(RubyDataBag.java:175)
>     from
> org.apache.pig.scripting.jruby.RubyDataBag$INVOKER$i$0$0$each.call(RubyDataBag$INVOKER$i$0$0$each.gen:65535)
>     from
> org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrNBlock.call(JavaMethod.java:256)
>     from
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:292)
>     from
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:135)
>     from org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:63)
>     from org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>     from org.jruby.ast.RootNode.interpret(RootNode.java:129)
>     from
> org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:98)
>     from
> org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:169)
>     from org.jruby.RubyKernel.evalCommon(RubyKernel.java:1058)
>     from org.jruby.RubyKernel.eval(RubyKernel.java:1011)
>     from
> org.jruby.RubyKernel$INVOKER$s$0$3$eval.call(RubyKernel$INVOKER$s$0$3$eval.gen:65535)
>     from
> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:186)
>     from
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:69)
>     from
> org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
> ... 114 levels...
>     from
> org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:77)
>     from
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:190)
>     from
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:179)
>     from
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:312)
>     from
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:169)
>     from
> Users.jcoveney.workspace.jruby.bin.jirb.__file__(/Users/jcoveney/workspace/jruby/bin/jirb:13)
>     from
> Users.jcoveney.workspace.jruby.bin.jirb.load(/Users/jcoveney/workspace/jruby/bin/jirb)
>     from org.jruby.Ruby.runScript(Ruby.java:732)
>     from org.jruby.Ruby.runScript(Ruby.java:725)
>     from org.jruby.Ruby.runNormally(Ruby.java:632)
>     from org.jruby.Ruby.runFromMain(Ruby.java:481)
>     from org.jruby.Main.doRunFromMain(Main.java:335)
>     from org.jruby.Main.internalRun(Main.java:255)
>     from org.jruby.Main.run(Main.java:221)
>     from org.jruby.Main.run(Main.java:205)
>     from org.jruby.Main.main(Main.java:185)ree-1.8.7-2011.03 :005 >
> a.flatten
> Java::JavaLang::NoSuchMethodError:
> org.jruby.RubyEnumerator$RubyEnumeratorKernel.obj_to_enum(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
>     from
> org.apache.pig.scripting.jruby.RubyDataBag.flattten(RubyDataBag.java:189)
>     from
> org.apache.pig.scripting.jruby.RubyDataBag$INVOKER$i$0$0$flattten.call(RubyDataBag$INVOKER$i$0$0$flattten.gen:65535)
>     from
> org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrNBlock.call(JavaMethod.java:256)
>     from
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:292)
>     from
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:135)
>     from org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:63)
>     from org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
>     from org.jruby.ast.RootNode.interpret(RootNode.java:129)
>     from
> org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:98)
>     from
> org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:169)
>     from org.jruby.RubyKernel.evalCommon(RubyKernel.java:1058)
>     from org.jruby.RubyKernel.eval(RubyKernel.java:1011)
>     from
> org.jruby.RubyKernel$INVOKER$s$0$3$eval.call(RubyKernel$INVOKER$s$0$3$eval.gen:65535)
>     from
> org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:186)
>     from
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:282)
>     from
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:71)
> ... 116 levels...
>     from
> org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:77)
>     from
> org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:190)
>     from
> org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:179)
>     from
> org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:312)
>     from
> org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:169)
>     from
> Users.jcoveney.workspace.jruby.bin.jirb.__file__(/Users/jcoveney/workspace/jruby/bin/jirb:13)
>     from
> Users.jcoveney.workspace.jruby.bin.jirb.load(/Users/jcoveney/workspace/jruby/bin/jirb)
>     from org.jruby.Ruby.runScript(Ruby.java:732)
>     from org.jruby.Ruby.runScript(Ruby.java:725)
>     from org.jruby.Ruby.runNormally(Ruby.java:632)
>     from org.jruby.Ruby.runFromMain(Ruby.java:481)
>     from org.jruby.Main.doRunFromMain(Main.java:335)
>     from org.jruby.Main.internalRun(Main.java:255)
>     from org.jruby.Main.run(Main.java:221)
>     from org.jruby.Main.run(Main.java:205)
>
>

Reply via email to