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