Sha256: e870fc0eb73870e087e139dcf5ad49e13ce429b8316facf797246e56d2233165

Contents?: true

Size: 1.82 KB

Versions: 70

Compression:

Stored size: 1.82 KB

Contents

package org.embulk.spi.json;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import com.google.common.base.Throwables;
import org.msgpack.core.MessagePack;
import org.msgpack.core.MessageBufferPacker;
import org.msgpack.core.buffer.MessageBuffer;
import org.msgpack.value.Value;
import org.jruby.Ruby;
import org.jruby.RubyString;
import org.jruby.runtime.builtin.IRubyObject;
import org.jruby.util.ByteList;
import org.jcodings.specific.ASCIIEncoding;

public class RubyValueApi
{
    public static Value fromMessagePack(RubyString content)
    {
        ByteList list = content.getByteList();
        try {
            return MessagePack.newDefaultUnpacker(list.unsafeBytes(), list.begin(), list.length()).unpackValue();
        }
        catch (IOException ex) {
            throw Throwables.propagate(ex);
        }
    }

    private static class OpenByteArrayOutputStream
            extends ByteArrayOutputStream
    {
        public byte[] getBuffer()
        {
            return buf;
        }

        public int getCount()
        {
            return count;
        }
    }

    public static RubyString toMessagePack(Ruby runtime, Value value)
    {
        try {
            MessageBufferPacker packer = MessagePack.newDefaultBufferPacker();
            packer.packValue(value);
            MessageBuffer mb = packer.toMessageBuffer();
            ByteList list = new ByteList(mb.array(), mb.arrayOffset(), mb.size(), ASCIIEncoding.INSTANCE, false);
            return RubyString.newString(runtime, list);
        }
        catch (IOException ex) {
            throw Throwables.propagate(ex);
        }
    }

    public static Value toValue(Ruby runtime, IRubyObject object)
    {
        RubyString string = (RubyString) object.callMethod(runtime.getCurrentContext(), "to_msgpack");
        return fromMessagePack(string);
    }
}

Version data entries

70 entries across 70 versions & 1 rubygems

Version Path
embulk-0.8.35 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.35-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.34 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.34-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.33 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.33-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.32 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.32-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.31 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.31-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.30 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.30-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.29 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.29-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.28 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.28-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.27 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.27-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.26 embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java
embulk-0.8.26-java embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java