You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2014/08/31 11:34:41 UTC

svn commit: r1621573 [5/5] - in /jena/trunk/jena-arq: ./ src/main/java/org/apache/jena/riot/ src/main/java/org/apache/jena/riot/resultset/ src/main/java/org/apache/jena/riot/system/ src/main/java/org/apache/jena/riot/thrift/ src/main/java/org/apache/je...

Added: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/thrift/wire/RDF_VarTuple.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/thrift/wire/RDF_VarTuple.java?rev=1621573&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/thrift/wire/RDF_VarTuple.java (added)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/thrift/wire/RDF_VarTuple.java Sun Aug 31 09:34:40 2014
@@ -0,0 +1,441 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package org.apache.jena.riot.thrift.wire;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("all")
+public class RDF_VarTuple implements org.apache.thrift.TBase<RDF_VarTuple, RDF_VarTuple._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("RDF_VarTuple");
+
+  private static final org.apache.thrift.protocol.TField VARS_FIELD_DESC = new org.apache.thrift.protocol.TField("vars", org.apache.thrift.protocol.TType.LIST, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new RDF_VarTupleStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new RDF_VarTupleTupleSchemeFactory());
+  }
+
+  public List<RDF_VAR> vars; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    VARS((short)1, "vars");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // VARS
+          return VARS;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.VARS, new org.apache.thrift.meta_data.FieldMetaData("vars", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, RDF_VAR.class))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(RDF_VarTuple.class, metaDataMap);
+  }
+
+  public RDF_VarTuple() {
+  }
+
+  public RDF_VarTuple(
+    List<RDF_VAR> vars)
+  {
+    this();
+    this.vars = vars;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public RDF_VarTuple(RDF_VarTuple other) {
+    if (other.isSetVars()) {
+      List<RDF_VAR> __this__vars = new ArrayList<RDF_VAR>();
+      for (RDF_VAR other_element : other.vars) {
+        __this__vars.add(new RDF_VAR(other_element));
+      }
+      this.vars = __this__vars;
+    }
+  }
+
+  public RDF_VarTuple deepCopy() {
+    return new RDF_VarTuple(this);
+  }
+
+  @Override
+  public void clear() {
+    this.vars = null;
+  }
+
+  public int getVarsSize() {
+    return (this.vars == null) ? 0 : this.vars.size();
+  }
+
+  public java.util.Iterator<RDF_VAR> getVarsIterator() {
+    return (this.vars == null) ? null : this.vars.iterator();
+  }
+
+  public void addToVars(RDF_VAR elem) {
+    if (this.vars == null) {
+      this.vars = new ArrayList<RDF_VAR>();
+    }
+    this.vars.add(elem);
+  }
+
+  public List<RDF_VAR> getVars() {
+    return this.vars;
+  }
+
+  public RDF_VarTuple setVars(List<RDF_VAR> vars) {
+    this.vars = vars;
+    return this;
+  }
+
+  public void unsetVars() {
+    this.vars = null;
+  }
+
+  /** Returns true if field vars is set (has been assigned a value) and false otherwise */
+  public boolean isSetVars() {
+    return this.vars != null;
+  }
+
+  public void setVarsIsSet(boolean value) {
+    if (!value) {
+      this.vars = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case VARS:
+      if (value == null) {
+        unsetVars();
+      } else {
+        setVars((List<RDF_VAR>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case VARS:
+      return getVars();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case VARS:
+      return isSetVars();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof RDF_VarTuple)
+      return this.equals((RDF_VarTuple)that);
+    return false;
+  }
+
+  public boolean equals(RDF_VarTuple that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_vars = true && this.isSetVars();
+    boolean that_present_vars = true && that.isSetVars();
+    if (this_present_vars || that_present_vars) {
+      if (!(this_present_vars && that_present_vars))
+        return false;
+      if (!this.vars.equals(that.vars))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  public int compareTo(RDF_VarTuple other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    RDF_VarTuple typedOther = (RDF_VarTuple)other;
+
+    lastComparison = Boolean.valueOf(isSetVars()).compareTo(typedOther.isSetVars());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetVars()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.vars, typedOther.vars);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("RDF_VarTuple(");
+    boolean first = true;
+
+    sb.append("vars:");
+    if (this.vars == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.vars);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class RDF_VarTupleStandardSchemeFactory implements SchemeFactory {
+    public RDF_VarTupleStandardScheme getScheme() {
+      return new RDF_VarTupleStandardScheme();
+    }
+  }
+
+  private static class RDF_VarTupleStandardScheme extends StandardScheme<RDF_VarTuple> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, RDF_VarTuple struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField schemeField;
+      iprot.readStructBegin();
+      while (true)
+      {
+        schemeField = iprot.readFieldBegin();
+        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (schemeField.id) {
+          case 1: // VARS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
+                struct.vars = new ArrayList<RDF_VAR>(_list0.size);
+                for (int _i1 = 0; _i1 < _list0.size; ++_i1)
+                {
+                  RDF_VAR _elem2; // required
+                  _elem2 = new RDF_VAR();
+                  _elem2.read(iprot);
+                  struct.vars.add(_elem2);
+                }
+                iprot.readListEnd();
+              }
+              struct.setVarsIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      struct.validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot, RDF_VarTuple struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.vars != null) {
+        oprot.writeFieldBegin(VARS_FIELD_DESC);
+        {
+          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.vars.size()));
+          for (RDF_VAR _iter3 : struct.vars)
+          {
+            _iter3.write(oprot);
+          }
+          oprot.writeListEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class RDF_VarTupleTupleSchemeFactory implements SchemeFactory {
+    public RDF_VarTupleTupleScheme getScheme() {
+      return new RDF_VarTupleTupleScheme();
+    }
+  }
+
+  private static class RDF_VarTupleTupleScheme extends TupleScheme<RDF_VarTuple> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, RDF_VarTuple struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetVars()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetVars()) {
+        {
+          oprot.writeI32(struct.vars.size());
+          for (RDF_VAR _iter4 : struct.vars)
+          {
+            _iter4.write(oprot);
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, RDF_VarTuple struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        {
+          org.apache.thrift.protocol.TList _list5 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.vars = new ArrayList<RDF_VAR>(_list5.size);
+          for (int _i6 = 0; _i6 < _list5.size; ++_i6)
+          {
+            RDF_VAR _elem7; // required
+            _elem7 = new RDF_VAR();
+            _elem7.read(iprot);
+            struct.vars.add(_elem7);
+          }
+        }
+        struct.setVarsIsSet(true);
+      }
+    }
+  }
+
+}
+

Propchange: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/thrift/wire/RDF_VarTuple.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-arq/src/main/java/riotcmd/dumpthrift.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/riotcmd/dumpthrift.java?rev=1621573&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/main/java/riotcmd/dumpthrift.java (added)
+++ jena/trunk/jena-arq/src/main/java/riotcmd/dumpthrift.java Sun Aug 31 09:34:40 2014
@@ -0,0 +1,52 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package riotcmd;
+
+import java.io.InputStream ;
+
+import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.logging.LogCtl ;
+import org.apache.jena.riot.RIOT ;
+import org.apache.jena.riot.thrift.BinRDF ;
+
+import com.hp.hpl.jena.sparql.util.Utils ;
+
+/** Dump an rdf-thrift file to show structure */ 
+public class dumpthrift {
+    static { LogCtl.setCmdLogging(); }
+
+    public static void main(String[] args) {
+        RIOT.init() ;
+        if ( args.length == 0 ) {
+            args = new String[] {"-"} ;
+        }
+        
+        if ( args.length != 1 ) {
+            System.err.println("Usage: "+Utils.classShortName(dumpthrift.class)+" FILE") ;
+            System.exit(2) ;
+        }
+        
+        // Leave a general loop ...
+        for ( String fn : args ) {
+            InputStream in = IO.openFile(fn) ; 
+            BinRDF.dump(System.out, in) ;
+        }
+    }
+}    
+

Propchange: jena/trunk/jena-arq/src/main/java/riotcmd/dumpthrift.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TC_Riot.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TC_Riot.java?rev=1621573&r1=1621572&r2=1621573&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TC_Riot.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/TC_Riot.java Sun Aug 31 09:34:40 2014
@@ -25,6 +25,7 @@ import org.apache.jena.riot.process.TS_P
 import org.apache.jena.riot.resultset.TS_ResultSetRIOT ;
 import org.apache.jena.riot.stream.TS_IO2 ;
 import org.apache.jena.riot.system.TS_RiotSystem ;
+import org.apache.jena.riot.thrift.TS_RDFThrift ;
 import org.apache.jena.riot.web.TS_RiotWeb ;
 import org.apache.jena.riot.writer.TS_RiotWriter ;
 import org.junit.BeforeClass ;
@@ -44,6 +45,7 @@ import org.junit.runners.Suite ;
     , TS_RiotSystem.class
     , TS_RiotWeb.class
     , TS_ResultSetRIOT.class
+    , TS_RDFThrift.class
 })
 
 

Added: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TS_RDFThrift.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TS_RDFThrift.java?rev=1621573&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TS_RDFThrift.java (added)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TS_RDFThrift.java Sun Aug 31 09:34:40 2014
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.riot.thrift;
+
+import org.junit.runner.RunWith ;
+import org.junit.runners.Suite ;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses( {
+    TestThriftTerm.class
+    , TestThriftSetup.class
+    , TestStreamRDFThrift.class
+    , TestResultSetThrift.class
+    //, TestPatchThrift.class
+    
+} )
+
+public class TS_RDFThrift {
+    public static final String TestingDir = "testing/RIOT/RDF-Thrift" ;
+
+}
+

Propchange: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TS_RDFThrift.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java?rev=1621573&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java (added)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java Sun Aug 31 09:34:40 2014
@@ -0,0 +1,129 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.riot.thrift;
+
+import java.io.ByteArrayInputStream ;
+import java.io.ByteArrayOutputStream ;
+import java.io.IOException ;
+import java.io.InputStream ;
+
+import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.atlas.lib.StrUtils ;
+import org.apache.jena.riot.thrift.BinRDF ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.query.ResultSet ;
+import com.hp.hpl.jena.query.ResultSetFactory ;
+import com.hp.hpl.jena.query.ResultSetRewindable ;
+import com.hp.hpl.jena.sparql.resultset.ResultSetCompare ;
+import com.hp.hpl.jena.sparql.sse.Item ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+import com.hp.hpl.jena.sparql.sse.builders.BuilderResultSet ;
+import com.hp.hpl.jena.sparql.util.NodeUtils.EqualityTest ;
+
+public class TestResultSetThrift extends BaseTest {
+    // Only datatypes that transmitted perfectly. 
+    static ResultSetRewindable rs0 = make
+        ("(resultset (?x ?y)"
+         , "   (row (?x _:a) (?y 3))"
+         , "   (row (?x 1) (?y 'a'))"
+         , "   (row (?y 'y'))"
+         , "   (row (?x _:a))"
+         , "   (row)"
+         , "   (row (?x 2) (?y 10))"
+         , ")"
+         ) ;
+    
+    static ResultSetRewindable rs1 = make
+        ("(resultset (?x ?y)"
+         , "   (row (?x 1) (?y 3))"
+         , "   (row (?x 1) (?y 'a'))"
+         , ")"
+         ) ;
+    static ResultSetRewindable rs2 = make
+        ("(resultset (?x ?y)"
+         , "   (row (?x 1) (?y 'a'))"
+         , "   (row (?x 1) (?y 3))"
+         , ")"
+         ) ;
+
+    
+    static class EqualityTestExact implements EqualityTest {
+        @Override
+        public boolean equal(Node n1, Node n2) {
+            return n1.equals(n2) ;
+        }
+    }
+    private static EqualityTest exactTest = new EqualityTestExact() ;
+    
+    @Test public void resultSet_01() { test(rs0) ; }
+    
+    @Test public void resultSet_02() { 
+        ResultSetRewindable r1 = test(rs1) ;
+        // not reordered
+        r1.reset();
+        rs2.reset() ;
+        assertFalse(ResultSetCompare.equalsByTermAndOrder(r1, rs2)) ;
+        rs2.reset() ;
+    }
+    
+    @Test public void resultSet_03() { 
+        ResultSetRewindable r2 = test(rs2) ;
+        // not reordered
+        r2.reset();
+        rs1.reset() ;
+        assertFalse(ResultSetCompare.equalsByTermAndOrder(r2, rs1)) ;
+        rs1.reset() ;
+    }
+
+    private static ResultSetRewindable test(ResultSetRewindable resultSet) {
+        resultSet.reset(); 
+        ByteArrayOutputStream out = new ByteArrayOutputStream() ;
+        BinRDF.writeResultSet(out, resultSet, true) ; 
+        resultSet.reset();
+
+        ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()) ;
+        ResultSet rs$ = BinRDF.readResultSet(in) ;
+        ResultSetRewindable resultSet2 = ResultSetFactory.makeRewindable(rs$) ;
+        // Includes bnode labels. 
+        ResultSetCompare.equalsExact(resultSet, resultSet2) ;
+        resultSet.reset(); 
+        resultSet2.reset();
+        return resultSet2 ;
+    }
+
+    private static ResultSetRewindable make(String ... strings) {
+        String s = StrUtils.strjoinNL(strings) ; 
+        Item item = SSE.parse(s) ;
+        ResultSetRewindable rs = ResultSetFactory.makeRewindable(BuilderResultSet.build(item)) ;
+        return rs ;
+    }
+    
+    private static final String DIR = TS_RDFThrift.TestingDir ;
+    
+    @Test public void resultSet_10() {
+        try (InputStream in = IO.openFile(DIR+"/results-1.srj")) {
+            ResultSet rs = ResultSetFactory.fromJSON(in) ;
+            test(ResultSetFactory.copyResults(rs)) ;
+        } catch (IOException ex) { IO.exception(ex) ; }
+    }
+}
+

Propchange: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestResultSetThrift.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java?rev=1621573&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java (added)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java Sun Aug 31 09:34:40 2014
@@ -0,0 +1,191 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.riot.thrift;
+
+import java.io.ByteArrayInputStream ;
+import java.io.ByteArrayOutputStream ;
+import java.util.Iterator ;
+
+import org.apache.jena.atlas.iterator.Filter ;
+import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.atlas.lib.StrUtils ;
+import org.apache.jena.riot.Lang ;
+import org.apache.jena.riot.RDFDataMgr ;
+import org.apache.jena.riot.RIOT ;
+import org.apache.jena.riot.system.StreamOps ;
+import org.apache.jena.riot.system.StreamRDF ;
+import org.apache.jena.riot.system.StreamRDFLib ;
+import org.apache.jena.riot.system.StreamRDFWriter ;
+import org.junit.BeforeClass ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
+import com.hp.hpl.jena.sparql.core.Quad ;
+import com.hp.hpl.jena.sparql.graph.GraphFactory ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+import com.hp.hpl.jena.sparql.util.IsoMatcher ;
+
+public class TestStreamRDFThrift extends BaseTest {
+
+    private static final String DIR = TS_RDFThrift.TestingDir ;
+    
+    @BeforeClass public static void beforeClassInit() { RIOT.init(); }
+    
+    static String gs = StrUtils.strjoinNL(
+        "(graph",
+        "  (_:a :p 123) ",
+        "  (_:a :p 'foo'@en) ",
+        "  (_:b :p '456') ",        // Presrved values only.
+        "  (_:b :p '456.5') ",
+        "  (_:b :p '456.5e6') ",
+         ")") ;
+        
+    static Graph graph = SSE.parseGraph(gs) ;
+    
+    static String dgs = StrUtils.strjoinNL(
+        "(dataset",
+        "  (graph (:s1 :p _:a) (:s2 :p _:a))" ,
+        "  (graph :g  (:s1 :p _:a))" ,
+        "  (graph _:a (:s2 :p _:a))" ,
+        ")" ) ;
+    
+    static DatasetGraph datasetGraph = SSE.parseDatasetGraph(dgs) ;
+
+    // graph_01 and graph_02 are the same test but use different ways to read/write the graph.
+    // Ditto dataset_01 and dataset_02
+    
+    @Test public void graph_01() {
+        ByteArrayOutputStream out = new ByteArrayOutputStream() ;
+        StreamRDF stream = BinRDF.streamToOutputStream(out, true) ; // With values.
+        StreamOps.graphToStream(graph, stream) ;
+        
+        byte[] bytes = out.toByteArray() ;
+        ByteArrayInputStream in = new ByteArrayInputStream(bytes) ;
+        
+        Graph g2 = GraphFactory.createGraphMem() ;
+        StreamRDF stream2 = StreamRDFLib.graph(g2) ;
+        BinRDF.inputStreamToStream(in, stream2) ;
+        
+        //assertTrue(graph.isIsomorphicWith(g2)) ;
+        boolean b = IsoMatcher.isomorphic(graph, g2) ; //****
+        assertTrue(b) ;
+        
+        // Stronger - same bNodes.
+        sameTerms(graph, g2) ;
+    }
+
+    @Test public void graph_02() {
+        ByteArrayOutputStream out = new ByteArrayOutputStream() ;
+        StreamRDFWriter.write(out, graph, Lang.THRIFT) ;
+
+        byte[] bytes = out.toByteArray() ;
+        ByteArrayInputStream in = new ByteArrayInputStream(bytes) ;
+        
+        
+        Graph g2 = GraphFactory.createGraphMem() ;
+        RDFDataMgr.read(g2, in, Lang.THRIFT) ;
+        boolean b = IsoMatcher.isomorphic(graph, g2) ;
+        assertTrue(b) ;
+        
+        // Stronger - same bNodes.
+        // ** Java8
+        //graph.find(null, null, null).forEachRemaining(t -> assertTrue(g2.contains(t))) ;
+        
+        // Stronger - same bNodes.
+        sameTerms(graph, g2) ;
+    }
+    
+    @Test public void dataset_01() {
+        DatasetGraph dsg1 = datasetGraph ;
+        ByteArrayOutputStream out = new ByteArrayOutputStream() ;
+        StreamRDF stream = BinRDF.streamToOutputStream(out) ;
+        StreamOps.datasetToStream(dsg1, stream) ;
+        
+        byte[] bytes = out.toByteArray() ;
+        ByteArrayInputStream in = new ByteArrayInputStream(bytes) ;
+        DatasetGraph dsg2 = DatasetGraphFactory.createMem() ;
+        StreamRDF stream2 = StreamRDFLib.dataset(dsg2) ;
+        BinRDF.inputStreamToStream(in, stream2) ;
+        
+        boolean b = IsoMatcher.isomorphic(dsg1, dsg2) ;
+        assertTrue(b) ;
+        // Stronger - same bNode and same as in original data.
+        Node obj = Iter.first(dsg1.listGraphNodes(), filterBlankNode) ;
+        termAsObject(dsg1, obj) ;
+    }
+
+    @Test public void dataset_02() {
+        DatasetGraph dsg1 = datasetGraph ;
+        ByteArrayOutputStream out = new ByteArrayOutputStream() ;
+        StreamRDFWriter.write(out, dsg1, Lang.THRIFT) ;
+        
+        byte[] bytes = out.toByteArray() ;
+        ByteArrayInputStream in = new ByteArrayInputStream(bytes) ;
+        DatasetGraph dsg2 = DatasetGraphFactory.createMem() ;
+        
+        StreamRDF stream2 = StreamRDFLib.dataset(dsg2) ;
+        BinRDF.inputStreamToStream(in, stream2) ;
+        
+        boolean b = IsoMatcher.isomorphic(dsg1, dsg2) ;
+        assertTrue(b) ;
+        // Stronger - same bNode and same as in original data.
+        Node obj = Iter.first(dsg1.listGraphNodes(), filterBlankNode) ;
+        termAsObject(dsg1, obj) ;
+    }
+    
+    static void sameTerms(Graph g1, Graph g2) {
+        assertEquals(g1.size() , g2.size() ) ;
+        // ** Java8
+        //g1.find(null, null, null).forEachRemaining(t -> assertTrue(g2.contains(t))) ;
+        Iterator<Triple> iter = g1.find(null, null, null) ;
+        while(iter.hasNext()) {
+            Triple t = iter.next() ;
+            g2.contains(t) ;
+        }
+    }
+
+    static void termAsObject(DatasetGraph dsg, Node term)  {
+        Iterator<Quad> iter = dsg.find() ;
+        for ( ; iter.hasNext() ; ) {
+            Quad quad = iter.next() ;
+            if ( quad.getObject().equals(term) )
+                return ;
+        }
+        fail("Failed to find "+term) ;
+    }
+    
+    static Filter<Node> filterBlankNode = new Filter<Node>() {
+        @Override
+        public boolean accept(Node item) {
+            return item.isBlank() ;
+        }
+    } ;
+    
+    // ** Java8
+//    public static <T> Stream<T> stream(Iterator<? extends T> iterator) {
+//        int characteristics = Spliterator.ORDERED | Spliterator.IMMUTABLE;
+//        return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, characteristics), false);
+//    }
+}
+

Propchange: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestStreamRDFThrift.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftSetup.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftSetup.java?rev=1621573&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftSetup.java (added)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftSetup.java Sun Aug 31 09:34:40 2014
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.riot.thrift;
+
+import static org.apache.jena.riot.RDFLanguages.THRIFT ;
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.riot.* ;
+import org.junit.BeforeClass ;
+import org.junit.Test ;
+
+public class TestThriftSetup extends BaseTest {
+
+    @BeforeClass public static void beforeClass() { RIOT.init() ; }
+    
+    @Test public void setup_01() {
+        assertTrue(RDFLanguages.isRegistered(THRIFT)) ;
+    }
+
+    @Test public void setup_02() {
+        Lang lang = RDFLanguages.filenameToLang("data.rt") ;
+        assertEquals(lang, THRIFT) ;
+    }
+
+    @Test public void setup_03() {
+        assertTrue(RDFParserRegistry.isQuads(THRIFT)) ;
+        assertTrue(RDFParserRegistry.isTriples(THRIFT)) ;
+        assertNotNull(RDFParserRegistry.getFactory(THRIFT)) ;
+    }
+    
+    @Test public void setup_04() {
+        assertTrue(RDFWriterRegistry.contains(THRIFT)) ;
+        assertNotNull(RDFWriterRegistry.getWriterDatasetFactory(THRIFT)) ;
+        assertTrue(RDFWriterRegistry.contains(RDFFormat.RDF_THRIFT)) ;
+        assertNotNull(RDFWriterRegistry.getWriterDatasetFactory(RDFFormat.RDF_THRIFT)) ;
+        assertTrue(RDFWriterRegistry.contains(RDFFormat.RDF_THRIFT_VALUES)) ;
+        assertNotNull(RDFWriterRegistry.getWriterDatasetFactory(RDFFormat.RDF_THRIFT_VALUES)) ;
+    }
+}
+

Propchange: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftSetup.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftTerm.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftTerm.java?rev=1621573&view=auto
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftTerm.java (added)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftTerm.java Sun Aug 31 09:34:40 2014
@@ -0,0 +1,283 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.riot.thrift;
+
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.riot.system.PrefixMap ;
+import org.apache.jena.riot.system.PrefixMapFactory ;
+import org.apache.jena.riot.thrift.TRDF ;
+import org.apache.jena.riot.thrift.ThriftConvert ;
+import org.apache.jena.riot.thrift.wire.RDF_BNode ;
+import org.apache.jena.riot.thrift.wire.RDF_IRI ;
+import org.apache.jena.riot.thrift.wire.RDF_Literal ;
+import org.apache.jena.riot.thrift.wire.RDF_Term ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.graph.NodeFactory ;
+import com.hp.hpl.jena.rdf.model.AnonId ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+import com.hp.hpl.jena.vocabulary.RDF ;
+import com.hp.hpl.jena.vocabulary.RDFS ;
+import com.hp.hpl.jena.vocabulary.XSD ;
+
+public class TestThriftTerm extends BaseTest {
+    static PrefixMap prefixMap = PrefixMapFactory.create() ;
+    static {
+        prefixMap.add("rdf",    RDF.getURI()) ;
+        prefixMap.add("xsd",    XSD.getURI()) ;
+        prefixMap.add("rdfs",   RDFS.getURI()) ;
+        prefixMap.add("ex",     "http://example.org/") ;
+        prefixMap.add("",       "http://example/") ;
+        prefixMap.add("ns",     "http://namespace/ns#") ;
+    }
+    
+    // Terms
+    @Test public void term_uri_01() {
+        testTerm("<http://hostname/>") ;
+    }
+
+    @Test public void term_uri_02()  { 
+        RDF_Term rt = testTerm("<http://example/>") ;
+        assertTrue(rt.isSetPrefixName()) ;
+        assertEquals(rt.getPrefixName().prefix, "") ;
+        assertEquals(rt.getPrefixName().localName,  "") ;
+    }
+    
+    @Test public void term_uri_03()  { 
+        RDF_Term rt = testTerm("<http://namespace/ns#foobar>") ;
+        assertTrue(rt.isSetPrefixName()) ;
+        assertEquals(rt.getPrefixName().prefix, "ns") ;
+        assertEquals(rt.getPrefixName().localName,  "foobar") ;
+    }
+
+    @Test public void term_uri_04()  { 
+        RDF_Term rt = testTerm("rdf:type") ;
+        assertTrue(rt.isSetPrefixName()) ;
+        assertEquals(rt.getPrefixName().prefix, "rdf") ;
+        assertEquals(rt.getPrefixName().localName,  "type") ;
+    }
+    
+    @Test public void term_literal_01() {
+        testTerm("'foo'") ;
+    }
+
+    @Test public void term_literal_02() {
+        testTerm("'foo'@en") ;
+    }    
+
+    @Test public void term_literal_03() {
+        RDF_Term rt = testTerm("123") ;
+        assertFalse(rt.getLiteral().isSetDatatype()) ;
+        assertTrue(rt.getLiteral().isSetDtPrefix()) ;
+        assertEquals(rt.getLiteral().getDtPrefix().getPrefix(), "xsd") ;
+        assertEquals(rt.getLiteral().getDtPrefix().getLocalName(), "integer") ;
+    }
+
+    @Test public void term_literal_04() {
+        RDF_Term rt = testTerm("'foo'^^<http://dataype/>") ;
+        assertTrue(rt.getLiteral().isSetDatatype()) ;
+        assertFalse(rt.getLiteral().isSetDtPrefix()) ;
+        assertEquals(rt.getLiteral().getDatatype(), "http://dataype/") ;
+    }
+
+    @Test public void term_literal_05() {
+        RDF_Term rt = testTerm("'foo'^^<http://example/>") ;
+        assertFalse(rt.getLiteral().isSetDatatype()) ;
+        assertTrue(rt.getLiteral().isSetDtPrefix()) ;
+        assertEquals(rt.getLiteral().getDtPrefix().getPrefix(), "") ;
+        assertEquals(rt.getLiteral().getDtPrefix().getLocalName(), "") ;
+    }
+
+    
+    @Test public void term_var_01() {
+        testTerm("?var") ;
+    }
+    
+    @Test public void term_bnode_01() {
+        Node n = SSE.parseNode("_:blanknode") ;
+        RDF_Term rt = testTerm(n) ;
+        assertEquals(rt.getBnode().getLabel(), n.getBlankNodeLabel()) ;
+    }
+    
+    @Test public void term_bnode_02() {
+        String label = "abcdefghijklmn" ;
+        Node n = NodeFactory.createAnon(new AnonId("abcdefghijklmn")) ;
+        RDF_Term rt = testTerm(n) ;
+        assertTrue(rt.isSetBnode()) ;
+        assertEquals("abcdefghijklmn", rt.getBnode().getLabel()) ;
+    }
+    
+    @Test public void term_any_1() {
+        RDF_Term rt = testTerm(Node.ANY) ;
+        assertTrue(rt.isSetAny()) ;
+    }
+    
+    @Test public void term_value_01() {
+        RDF_Term rt = testTermValue("123") ; 
+        assertTrue(rt.isSetValInteger()) ;
+        assertEquals(123, rt.getValInteger()) ;
+    }
+
+    @Test public void term_value_02() {
+        RDF_Term rt = testTermValue("'123'^^xsd:integer") ; 
+        assertTrue(rt.isSetValInteger()) ;
+        assertEquals(123, rt.getValInteger()) ;
+    }
+
+    @Test public void term_value_03() {
+        RDF_Term rt = testTermValue("'123'^^xsd:long") ; 
+        assertTrue(rt.isSetValInteger()) ;
+        assertEquals(123, rt.getValInteger()) ;
+    }
+    
+    @Test public void term_value_04() {
+        RDF_Term rt = testTermValue("'123'^^xsd:int") ; 
+        assertTrue(rt.isSetValInteger()) ;
+        assertEquals(123, rt.getValInteger()) ;
+    }
+    
+    @Test public void term_value_05() {
+        RDF_Term rt = testTermValue("'123'^^xsd:short") ; 
+        assertTrue(rt.isSetValInteger()) ;
+        assertEquals(123, rt.getValInteger()) ;
+    }
+    
+    @Test public void term_value_06() {
+        RDF_Term rt = testTermValue("'123'^^xsd:byte") ; 
+        assertTrue(rt.isSetValInteger()) ;
+        assertEquals(123, rt.getValInteger()) ;
+    }
+    
+    @Test public void term_value_10() {
+        RDF_Term rt = testTermValue("123.6") ; 
+        assertTrue(rt.isSetValDecimal()) ;
+        assertEquals(1236, rt.getValDecimal().getValue()) ;
+        assertEquals(1, rt.getValDecimal().getScale()) ;
+    }
+
+    @Test public void term_value_11() {
+        RDF_Term rt = testTermValue("0.005") ; 
+        assertTrue(rt.isSetValDecimal()) ;
+        assertEquals(5, rt.getValDecimal().getValue()) ;
+        assertEquals(3, rt.getValDecimal().getScale()) ;
+    }
+    
+    @Test public void term_value_12() {
+        RDF_Term rt = testTermValue("50.0") ; 
+        assertTrue(rt.isSetValDecimal()) ;
+        assertEquals(500, rt.getValDecimal().getValue()) ;
+        assertEquals(1, rt.getValDecimal().getScale()) ;
+    }
+    
+    @Test public void term_value_13() {
+        RDF_Term rt = testTermValue("50.05") ; 
+        assertTrue(rt.isSetValDecimal()) ;
+        assertEquals(5005, rt.getValDecimal().getValue()) ;
+        assertEquals(2, rt.getValDecimal().getScale()) ;
+    }
+
+    @Test public void term_value_20() {
+        RDF_Term rt = testTermValue("50e6") ; 
+        assertTrue(rt.isSetValDouble()) ;
+        assertEquals(50e6, rt.getValDouble(), 0.001) ;
+    }
+
+    @Test public void term_value_21() {
+        RDF_Term rt = testTermValue("50e-6") ; 
+        assertTrue(rt.isSetValDouble()) ;
+        assertEquals(50e-6, rt.getValDouble(), 0.001e6) ;
+    }
+
+    private RDF_Term testTermValue(String str) {
+        RDF_Term rt = testTerm(SSE.parseNode(str), prefixMap, true) ;
+        return rt ;
+    }
+    
+    private RDF_Term testTerm(String str) {
+        RDF_Term rt = testTerm(SSE.parseNode(str), prefixMap, false) ;
+        return rt ;
+    }
+
+    private RDF_Term testTerm(Node node) {
+        return testTerm(node, null, false) ;
+    }
+    
+    private RDF_Term testTerm(Node node, PrefixMap pmap, boolean asValue) {
+        RDF_Term rt = ThriftConvert.convert(node, pmap, asValue) ;
+        assertTrue(rt.isSet()) ;
+
+        if ( node.isURI() ) {
+            assertTrue(rt.isSetIri() || rt.isSetPrefixName() ) ;
+            if ( rt.isSetIri() ) {
+                RDF_IRI iri = rt.getIri() ;
+                assertEquals(node.getURI(), iri.getIri()) ;
+            }
+            if ( rt.isSetPrefixName() ) {
+                assertTrue(rt.getPrefixName().isSetPrefix()) ;
+                assertTrue(rt.getPrefixName().isSetLocalName()) ;
+            }
+        } else if ( rt.isSetValDecimal() || 
+                    rt.isSetValDouble() ||
+                    rt.isSetValInteger() )
+        {
+            // Nothing specific to check.
+            // And not reversible.
+            return rt ;
+        }
+        else if ( node.isLiteral() ) {
+            assertTrue(rt.isSetLiteral()) ;
+            RDF_Literal lit = rt.getLiteral() ;
+            assertTrue(lit.isSetLex()) ;
+            assertEquals(node.getLiteralLexicalForm(), lit.getLex()) ;
+            // RDF 1.1
+            if ( node.getLiteralDatatype() != null ) {
+                assertTrue(lit.isSetDatatype() || lit.isSetDtPrefix()) ;
+            }
+        } else if ( node.isBlank() ) {
+            assertTrue(rt.isSetBnode()) ;
+            RDF_BNode bnode = rt.getBnode() ;
+            assertEquals(node.getBlankNodeLabel(), bnode.getLabel()) ;
+        } else if ( node.isVariable() ) {
+            assertTrue(rt.isSetVariable()) ;
+            assertEquals(node.getName(), rt.getVariable().getName()) ;
+        } else if ( Node.ANY.equals(node) ) {
+            assertTrue(rt.isSetAny()) ;
+        } else
+            fail("Unknown node type") ; 
+        
+        // And reverse
+        Node n2 = ThriftConvert.convert(rt,pmap) ;
+        assertEquals(node, n2) ;
+        return rt ;
+    }
+
+    @Test public void rdfterm_01() { 
+            RDF_Term rt = TRDF.tANY ;
+            Node n = ThriftConvert.convert(rt) ;
+            assertEquals(Node.ANY, n) ;
+       }
+
+//    @Test public void rdfterm_02() { 
+//        RDF_Term rt = TRDF.UNDEF ;
+//        Node n = TRDF.convert(rt) ;
+//        assertNull(n) ;
+//    }
+}
+

Propchange: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/thrift/TestThriftTerm.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain