@Override public RubyHashEntry internalDelete(final IRubyObject key) { final Map map = mapDelegate(); Object convertedKey = key.toJava(Object.class); Object value = map.get(convertedKey); if (value != null) { map.remove(convertedKey); setSize( map.size() ); return new RubyHashEntry(key.hashCode(), key, JavaUtil.convertJavaToUsableRubyObject(getRuntime(), value), null, null); } return NO_ENTRY; }
@Override public void visitAll(Visitor visitor) { Map.Entry[] entries = (Entry[]) getMap().entrySet().toArray(new Map.Entry[0]); for (Map.Entry entry : entries) { IRubyObject key = JavaUtil.convertJavaToUsableRubyObject(getRuntime(), entry.getKey()); IRubyObject value = JavaUtil.convertJavaToUsableRubyObject(getRuntime(), entry.getValue()); visitor.visit(key, value); } }
@Override public RubyHashEntry internalDelete(final IRubyObject key) { final Map map = mapDelegate(); Object convertedKey = key.toJava(Object.class); Object value = map.get(convertedKey); if (value != null) { map.remove(convertedKey); setSize( map.size() ); return new RubyHashEntry(key.hashCode(), key, JavaUtil.convertJavaToUsableRubyObject(getRuntime(), value), null, null); } return NO_ENTRY; }
@Override public RubyHash to_hash() { final Ruby runtime = getRuntime(); final RubyHash hash = new RubyHash(runtime); @SuppressWarnings("unchecked") Set<Map.Entry> entries = mapDelegate().entrySet(); for ( Map.Entry entry : entries ) { IRubyObject key = JavaUtil.convertJavaToUsableRubyObject(runtime, entry.getKey()); IRubyObject value = JavaUtil.convertJavaToUsableRubyObject(runtime, entry.getValue()); hash.fastASetCheckString(runtime, key, value); } return hash; }
@Override public IRubyObject shift(ThreadContext context) { throw getRuntime().newNotImplementedError("Java Maps do not preserve insertion order and do not support shift"); }
@Override public IRubyObject internalGet(IRubyObject key) { Object result = getMap().get(key.toJava(Object.class)); if (result == null) return null; return JavaUtil.convertJavaToUsableRubyObject(getRuntime(), result); }
@Override public IRubyObject internalGet(IRubyObject key) { Object result = getMap().get(key.toJava(Object.class)); if (result == null) return null; return JavaUtil.convertJavaToUsableRubyObject(getRuntime(), result); }
@Override public IRubyObject internalGet(IRubyObject key) { Object result = mapDelegate().get(key.toJava(Object.class)); if (result == null) return null; return JavaUtil.convertJavaToUsableRubyObject(getRuntime(), result); }
@Override public IRubyObject delete(ThreadContext context, IRubyObject key, Block block) { modify(); Object value = mapDelegate().remove(key.toJava(Object.class)); if ( value != null ) return JavaUtil.convertJavaToUsableRubyObject(getRuntime(), value); if ( block.isGiven() ) return block.yield(context, key); return context.nil; }
@Override public RubyHash to_hash() { RubyHash hash = new RubyHash(getRuntime()); Set<Map.Entry> entries = ((Map) ((JavaProxy)receiver).getObject()).entrySet(); for (Map.Entry entry : entries) { IRubyObject key = JavaUtil.convertJavaToUsableRubyObject(getRuntime(), entry.getKey()); IRubyObject value = JavaUtil.convertJavaToUsableRubyObject(getRuntime(), entry.getValue()); hash.op_aset(getRuntime().getCurrentContext(), key, value); } return hash; } }
@Override public RubyHashEntry internalGetEntry(IRubyObject key) { Map map = getMap(); Object convertedKey = key.toJava(Object.class); Object value = map.get(convertedKey); if (value != null) { RubyHashEntry rubyEntry = new RubyHashEntry(key.hashCode(), key, JavaUtil.convertJavaToUsableRubyObject(getRuntime(), value), null, null); return rubyEntry; } return NO_ENTRY; }
@Override public RubyBoolean empty_p() { return mapDelegate().isEmpty() ? getRuntime().getTrue() : getRuntime().getFalse(); }
@Override public RubyBoolean has_value_p(ThreadContext context, IRubyObject val) { final Object convertedVal = val.toJava(Object.class); return getRuntime().newBoolean( mapDelegate().containsValue(convertedVal) ); }
@Override public IRubyObject delete(ThreadContext context, IRubyObject key, Block block) { modify(); Object value = mapDelegate().remove(key.toJava(Object.class)); if ( value != null ) return JavaUtil.convertJavaToUsableRubyObject(getRuntime(), value); if ( block.isGiven() ) return block.yield(context, key); return context.nil; }
@Override public RubyBoolean has_value_p(ThreadContext context, IRubyObject val) { final Object convertedVal = val.toJava(Object.class); return getRuntime().newBoolean( mapDelegate().containsValue(convertedVal) ); }
@Override public RubyBoolean has_key_p(IRubyObject key) { final Object convertedKey = key.toJava(Object.class); return getRuntime().newBoolean( mapDelegate().containsKey(convertedKey) ); }
@Override public IRubyObject internalGet(IRubyObject key) { Object result = mapDelegate().get(key.toJava(Object.class)); if (result == null) return null; return JavaUtil.convertJavaToUsableRubyObject(getRuntime(), result); }
@Override public RubyBoolean has_key_p(IRubyObject key) { final Object convertedKey = key.toJava(Object.class); return getRuntime().newBoolean( mapDelegate().containsKey(convertedKey) ); }
@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 // 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; }