@Override public Object convertEntry(Ruby runtime, RubyHashEntry entry) { return entry.value.toJava(Object.class); } @Override
@Override public Object getValue() { return entry.value.toJava(Object.class); } @Override
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2) { if (javaVarargsCallables != null) return call(context, self, clazz, name, new IRubyObject[] {arg0, arg1, arg2}); JavaMethod method = (JavaMethod) findCallableArityThree(self, name, arg0, arg1, arg2); final Class<?>[] paramTypes = method.getParameterTypes(); Object cArg0 = arg0.toJava(paramTypes[0]); Object cArg1 = arg1.toJava(paramTypes[1]); Object cArg2 = arg2.toJava(paramTypes[2]); return method.invokeStaticDirect(context, cArg0, cArg1, cArg2); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2) { if (javaVarargsCallables != null) return call(context, self, clazz, name, new IRubyObject[] {arg0, arg1, arg2}); JavaMethod method = (JavaMethod) findCallableArityThree(self, name, arg0, arg1, arg2); final Class<?>[] paramTypes = method.getParameterTypes(); Object cArg0 = arg0.toJava(paramTypes[0]); Object cArg1 = arg1.toJava(paramTypes[1]); Object cArg2 = arg2.toJava(paramTypes[2]); return method.invokeDirect(context, singleton, cArg0, cArg1, cArg2); }
@JRubyMethod(name = { "<<" }) public static IRubyObject append(final IRubyObject self, final IRubyObject item) { java.util.Collection coll = unwrapIfJavaObject(self); coll.add( item.toJava(java.lang.Object.class) ); return self; }
@Override // NOTE: likely won't be called public RubyHashEntry internalDeleteEntry(final RubyHashEntry entry) { final Map map = mapDelegate(); Object convertedKey = ((IRubyObject) entry.getKey()).toJava(Object.class); if (map.containsKey(convertedKey)) { map.remove(convertedKey); setSize( map.size() ); return entry; } return NO_ENTRY; }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2) { if (javaVarargsCallables != null) return call(context, self, clazz, name, new IRubyObject[] {arg0, arg1, arg2}); JavaProxy proxy = castJavaProxy(self); JavaMethod method = (JavaMethod) findCallableArityThree(self, name, arg0, arg1, arg2); final Class<?>[] paramTypes = method.getParameterTypes(); Object cArg0 = arg0.toJava(paramTypes[0]); Object cArg1 = arg1.toJava(paramTypes[1]); Object cArg2 = arg2.toJava(paramTypes[2]); return method.invokeDirect(context, proxy.getObject(), cArg0, cArg1, cArg2); }
@Override protected final void op_asetForString(Ruby runtime, RubyString key, IRubyObject value) { @SuppressWarnings("unchecked") final Map<Object, Object> map = mapDelegate(); map.put(key.decodeString(), value.toJava(Object.class)); setSize( map.size() ); }
private static void copyDataToJavaArrayDirect(final Class<?> targetType, final RubyArray rubyArray, final int[] javaArray) { int length = rubyArray.getLength(); final int javaLength = javaArray.length; if ( javaLength < length ) length = javaLength; for ( int i = 0; i < length; i++ ) { javaArray[i] = (Integer) rubyArray.eltInternal(i).toJava(targetType); } }
private static void copyDataToJavaArrayDirect(final Class<?> targetType, final RubyArray rubyArray, final long[] javaArray) { int length = rubyArray.getLength(); final int javaLength = javaArray.length; if ( javaLength < length ) length = javaLength; for ( int i = 0; i < length; i++ ) { javaArray[i] = (Long) rubyArray.eltInternal(i).toJava(targetType); } }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, IRubyObject arg1) { if (javaVarargsCallables != null) return call(context, self, clazz, name, new IRubyObject[] {arg0, arg1}); JavaMethod method = (JavaMethod) findCallableArityTwo(self, name, arg0, arg1); final Class<?>[] paramTypes = method.getParameterTypes(); Object cArg0 = arg0.toJava(paramTypes[0]); Object cArg1 = arg1.toJava(paramTypes[1]); return method.invokeStaticDirect(context, cArg0, cArg1); }
public boolean retainAll(Collection coll) { final int size = size(); for (Iterator<IRubyObject> iter = rawIterator(); iter.hasNext();) { IRubyObject elem = iter.next(); if ( ! coll.contains(elem.toJava(Object.class)) ) { deleteImplIterator(elem, iter); } } return size() < size; }
@Override // NOTE: likely won't be called public RubyHashEntry internalGetEntry(IRubyObject key) { Map map = mapDelegate(); Object convertedKey = key.toJava(Object.class); Object value = map.get(convertedKey); if (value != null) { return new RubyHashEntry(key.hashCode(), key, JavaUtil.convertJavaToUsableRubyObject(getRuntime(), value), null, null); } return NO_ENTRY; }
@Override public Object get(Object key) { IRubyObject gotten = internalGet(JavaUtil.convertJavaToUsableRubyObject(getRuntime(), key)); return gotten == null ? null : gotten.toJava(Object.class); }
@JRubyMethod(meta = true) public static IRubyObject java_send(ThreadContext context, IRubyObject recv, IRubyObject rubyName, IRubyObject argTypes, IRubyObject arg0) { String name = rubyName.asJavaString(); RubyArray argTypesAry = argTypes.convertToArray(); final Ruby runtime = context.runtime; checkArgSizeMismatch(runtime, 1, argTypesAry); Class argTypeClass = (Class) argTypesAry.eltInternal(0).toJava(Class.class); JavaMethod method = new JavaMethod(runtime, getMethodFromClass(context, recv, name, argTypeClass)); return method.invokeStaticDirect(context, arg0.toJava(argTypeClass)); }
public Object set(int index, Object element) { Object previous = elt(index).toJava(Object.class); store(index, JavaUtil.convertJavaToUsableRubyObject(getRuntime(), element)); return previous; }
@JRubyMethod public IRubyObject java_send(ThreadContext context, IRubyObject rubyName, IRubyObject argTypes, IRubyObject arg0) { String name = rubyName.asJavaString(); RubyArray argTypesAry = argTypes.convertToArray(); Ruby runtime = context.runtime; checkArgSizeMismatch(runtime, 1, argTypesAry); Class argTypeClass = (Class) argTypesAry.eltInternal(0).toJava(Class.class); JavaMethod method = new JavaMethod(runtime, getMethod(context, name, argTypeClass)); return method.invokeDirect(context, getObject(), arg0.toJava(argTypeClass)); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0) { if (javaVarargsCallables != null) return call(context, self, clazz, name, new IRubyObject[] {arg0}); JavaMethod method = (JavaMethod) findCallableArityOne(self, name, arg0); if (method.isVarArgs()) return call(context, self, clazz, name, new IRubyObject[] {arg0}); final Class<?>[] paramTypes = method.getParameterTypes(); Object cArg0 = arg0.toJava(paramTypes[0]); return method.invokeDirect(context, singleton, cArg0); }
@JRubyMethod public static IRubyObject to_java(ThreadContext context, final IRubyObject fromObject, final IRubyObject type) { if ( type.isNil() ) return to_java(context, fromObject); final JavaClass targetType = resolveTargetType(context, type); if ( fromObject instanceof RubyArray ) { return targetType.javaArrayFromRubyArray(context, (RubyArray) fromObject); } return Java.getInstance(context.runtime, fromObject.toJava(targetType.javaClass())); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, Block block) { if (block.isGiven()) { RubyProc proc = RubyProc.newProc(context.runtime, block, block.type); JavaMethod method = (JavaMethod) findCallableArityTwo(self, name, arg0, proc); final Class<?>[] paramTypes = method.getParameterTypes(); Object cArg0 = arg0.toJava(paramTypes[0]); Object cArg1 = proc.toJava(paramTypes[1]); return method.invokeStaticDirect(context, cArg0, cArg1); } return call(context, self, clazz, name, arg0); }