Merge pull request #635 from afs/thrift-update
JENA-1781: Update for Thrift 0.13.0, including workaround for THRIFT-5022
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java b/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
index 7da523d..52e6e92 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/thrift/BinRDF.java
@@ -156,20 +156,11 @@
PrefixMap pmap = PrefixMapFactory.create() ;
final Thrift2StreamRDF s = new Thrift2StreamRDF(pmap, dest) ;
dest.start() ;
- // ** Java8
- //apply(protocol, z -> TRDF.visit(z, s)) ;
-
- applyVisitor(protocol, s) ;
-
+ apply(protocol, z -> TRDF.visit(z, s)) ;
dest.finish() ;
// No need to flush - we read from the protocol ;
}
- // ** Java7 support
- public static void applyVisitor(TProtocol protocol, final VisitorStreamRowTRDF visitor) {
- apply(protocol, z -> TRDF.visit(z, visitor)) ;
- }
-
/**
* Send the contents of a RDF-encoded Thrift file to an "action"
* @param protocol TProtocol
@@ -177,11 +168,14 @@
*/
public static void apply(TProtocol protocol, Consumer<RDF_StreamRow> action) {
RDF_StreamRow row = new RDF_StreamRow() ;
- while(protocol.getTransport().isOpen()) {
+ // Bug in 0.13.0 / TIOStreamTransport.isOpen / THRIFT-5022
+ //while(protocol.getTransport().isOpen()) {
+ while(true) {
try { row.read(protocol) ; }
catch (TTransportException e) {
if ( e.getType() == TTransportException.END_OF_FILE )
- break ;
+ // THRIFT-5022 // break;
+ return;
}
catch (TException ex) { TRDF.exception(ex) ; }
action.accept(row) ;
@@ -198,7 +192,7 @@
IndentedWriter iOut = new IndentedWriter(out) ;
StreamRowTRDFPrinter printer = new StreamRowTRDFPrinter(iOut) ;
TProtocol protocol = TRDF.protocol(in) ;
- BinRDF.applyVisitor(protocol, printer) ;
+ apply(protocol, z -> TRDF.visit(z, printer));
iOut.flush() ;
}
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/thrift/IteratorThriftRDF.java b/jena-arq/src/main/java/org/apache/jena/riot/thrift/IteratorThriftRDF.java
index e297a99..1d98180 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/thrift/IteratorThriftRDF.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/thrift/IteratorThriftRDF.java
@@ -51,8 +51,9 @@
@Override
protected StreamRowRDF moveToNext() {
- if ( ! protocol.getTransport().isOpen() )
- return null ;
+ // THRIFT-5022 : isOpen for TIOStreamTransport is broken.
+// if ( ! protocol.getTransport().isOpen() )
+// return null ;
try { row.read(protocol) ; }
catch (TTransportException e) {
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
index 2644a1e..51e9f0e 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
@@ -82,7 +82,14 @@
BinRDF.inputStreamToStream(in, stream2) ;
//assertTrue(graph.isIsomorphicWith(g2)) ;
- boolean b = IsoMatcher.isomorphic(graph, g2) ; //****
+ boolean b = IsoMatcher.isomorphic(graph, g2) ;
+ if ( !b ) {
+ RDFDataMgr.write(System.out, graph, Lang.TTL);
+ System.out.println("---------");
+ RDFDataMgr.write(System.out, g2, Lang.TTL);
+ System.out.println("=========");
+ }
+
assertTrue(b) ;
// Stronger - same bNodes.
diff --git a/pom.xml b/pom.xml
index 23681f3..94d8e26 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,7 +56,7 @@
<ver.junit>4.12</ver.junit>
<ver.jetty>9.4.12.v20180830</ver.jetty>
- <ver.libthrift>0.12.0</ver.libthrift>
+ <ver.libthrift>0.13.0</ver.libthrift>
<!-- jsonld-java depends on depends on Jackson core
and Jackson databind. databind has had a few CVEs