You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2014/09/11 10:51:13 UTC

svn commit: r1624229 - in /jena/Experimental/hadoop-rdf/hadoop-rdf-common/src/main/java/org/apache/jena/hadoop/rdf/types/converters: ./ ThriftConverter.java

Author: rvesse
Date: Thu Sep 11 08:51:13 2014
New Revision: 1624229

URL: http://svn.apache.org/r1624229
Log:
Add missing files from prior commits

Added:
    jena/Experimental/hadoop-rdf/hadoop-rdf-common/src/main/java/org/apache/jena/hadoop/rdf/types/converters/
    jena/Experimental/hadoop-rdf/hadoop-rdf-common/src/main/java/org/apache/jena/hadoop/rdf/types/converters/ThriftConverter.java

Added: jena/Experimental/hadoop-rdf/hadoop-rdf-common/src/main/java/org/apache/jena/hadoop/rdf/types/converters/ThriftConverter.java
URL: http://svn.apache.org/viewvc/jena/Experimental/hadoop-rdf/hadoop-rdf-common/src/main/java/org/apache/jena/hadoop/rdf/types/converters/ThriftConverter.java?rev=1624229&view=auto
==============================================================================
--- jena/Experimental/hadoop-rdf/hadoop-rdf-common/src/main/java/org/apache/jena/hadoop/rdf/types/converters/ThriftConverter.java (added)
+++ jena/Experimental/hadoop-rdf/hadoop-rdf-common/src/main/java/org/apache/jena/hadoop/rdf/types/converters/ThriftConverter.java Thu Sep 11 08:51:13 2014
@@ -0,0 +1,124 @@
+package org.apache.jena.hadoop.rdf.types.converters;
+
+import java.io.ByteArrayOutputStream;
+
+import org.apache.jena.riot.thrift.wire.RDF_Quad;
+import org.apache.jena.riot.thrift.wire.RDF_Term;
+import org.apache.jena.riot.thrift.wire.RDF_Triple;
+import org.apache.thrift.TException;
+import org.apache.thrift.protocol.TCompactProtocol;
+import org.apache.thrift.protocol.TProtocol;
+import org.apache.thrift.transport.TIOStreamTransport;
+import org.apache.thrift.transport.TMemoryInputTransport;
+import org.apache.thrift.transport.TTransport;
+
+public class ThriftConverter {
+
+    private static ThreadLocal<TMemoryInputTransport> inputTransports = new ThreadLocal<>();
+    private static ThreadLocal<TProtocol> inputProtocols = new ThreadLocal<>();
+
+    private static ThreadLocal<ByteArrayOutputStream> outputStreams = new ThreadLocal<>();
+    private static ThreadLocal<TTransport> outputTransports = new ThreadLocal<>();
+    private static ThreadLocal<TProtocol> outputProtocols = new ThreadLocal<>();
+
+    private static TMemoryInputTransport getInputTransport() {
+        TMemoryInputTransport transport = inputTransports.get();
+        if (transport != null)
+            return transport;
+
+        transport = new TMemoryInputTransport();
+        inputTransports.set(transport);
+        return transport;
+    }
+
+    private static TProtocol getInputProtocol() {
+        TProtocol protocol = inputProtocols.get();
+        if (protocol != null)
+            return protocol;
+
+        protocol = new TCompactProtocol(getInputTransport());
+        inputProtocols.set(protocol);
+        return protocol;
+    }
+
+    private static ByteArrayOutputStream getOutputStream() {
+        ByteArrayOutputStream output = outputStreams.get();
+        if (output != null)
+            return output;
+
+        output = new ByteArrayOutputStream();
+        outputStreams.set(output);
+        return output;
+    }
+
+    private static TTransport getOutputTransport() {
+        TTransport transport = outputTransports.get();
+        if (transport != null)
+            return transport;
+
+        transport = new TIOStreamTransport(getOutputStream());
+        outputTransports.set(transport);
+        return transport;
+    }
+
+    private static TProtocol getOutputProtocol() {
+        TProtocol protocol = outputProtocols.get();
+        if (protocol != null)
+            return protocol;
+
+        protocol = new TCompactProtocol(getOutputTransport());
+        outputProtocols.set(protocol);
+        return protocol;
+    }
+
+    public static byte[] toBytes(RDF_Term term) throws TException {
+        ByteArrayOutputStream output = getOutputStream();
+        output.reset();
+
+        TProtocol protocol = getOutputProtocol();
+        term.write(protocol);
+
+        return output.toByteArray();
+    }
+
+    public static void fromBytes(byte[] bs, RDF_Term term) throws TException {
+        TMemoryInputTransport transport = getInputTransport();
+        transport.reset(bs);
+        TProtocol protocol = getInputProtocol();
+        term.read(protocol);
+    }
+
+    public static void fromBytes(byte[] buffer, RDF_Triple triple) throws TException {
+        TMemoryInputTransport transport = getInputTransport();
+        transport.reset(buffer);
+        TProtocol protocol = getInputProtocol();
+        triple.read(protocol);
+    }
+
+    public static byte[] toBytes(RDF_Triple triple) throws TException {
+        ByteArrayOutputStream output = getOutputStream();
+        output.reset();
+
+        TProtocol protocol = getOutputProtocol();
+        triple.write(protocol);
+
+        return output.toByteArray();
+    }
+
+    public static void fromBytes(byte[] buffer, RDF_Quad quad) throws TException {
+        TMemoryInputTransport transport = getInputTransport();
+        transport.reset(buffer);
+        TProtocol protocol = getInputProtocol();
+        quad.read(protocol);
+    }
+
+    public static byte[] toBytes(RDF_Quad quad) throws TException {
+        ByteArrayOutputStream output = getOutputStream();
+        output.reset();
+
+        TProtocol protocol = getOutputProtocol();
+        quad.write(protocol);
+
+        return output.toByteArray();
+    }
+}