From c7979c05a79cca85edb2bfcd34cef5c15e1e81c0 Mon Sep 17 00:00:00 2001 From: Jim Blake Date: Wed, 22 Apr 2015 15:34:06 -0400 Subject: [PATCH] VIVO-1018 RiotReader.createIteratorTriples() assumes an ASCII stream, so we need a different method. --- .../webapp/searchindex/IndexingChangeListener.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/searchindex/IndexingChangeListener.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/searchindex/IndexingChangeListener.java index 61567909b..9c5996c43 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/searchindex/IndexingChangeListener.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/searchindex/IndexingChangeListener.java @@ -6,8 +6,6 @@ import static edu.cornell.mannlib.vitro.webapp.modules.searchIndexer.SearchIndex import static edu.cornell.mannlib.vitro.webapp.modules.searchIndexer.SearchIndexer.Event.Type.START_REBUILD; import static edu.cornell.mannlib.vitro.webapp.modules.searchIndexer.SearchIndexer.Event.Type.UNPAUSE; -import java.io.ByteArrayInputStream; -import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -17,8 +15,9 @@ import java.util.concurrent.TimeUnit; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.jena.riot.RDFLanguages; import org.apache.jena.riot.RiotReader; +import org.apache.jena.riot.tokens.Tokenizer; +import org.apache.jena.riot.tokens.TokenizerFactory; import com.hp.hpl.jena.graph.Triple; import com.hp.hpl.jena.rdf.model.Model; @@ -142,9 +141,9 @@ public class IndexingChangeListener implements ChangeListener, private Statement parseTriple(String serializedTriple) { try { // Use RiotReader to parse a Triple - // NB A Triple can be serialized correctly with: FmtUtils.stringForTriple(triple, PrefixMapping.Factory.create()) + " ."; - ByteArrayInputStream input = new ByteArrayInputStream(serializedTriple.getBytes("UTF-8")); - Iterator it = RiotReader.createIteratorTriples(input, RDFLanguages.NTRIPLES, null); + // NB A Triple can be serialized correctly with: FmtUtils.stringForTriple(triple, PrefixMapping.Factory.create()) + " .";' + Tokenizer tokenizer = TokenizerFactory.makeTokenizerString(serializedTriple); + Iterator it = RiotReader.createParserNTriples(tokenizer, null); if (it.hasNext()) { Triple triple = it.next(); @@ -164,8 +163,6 @@ public class IndexingChangeListener implements ChangeListener, } catch (RuntimeException riot) { log.error("Failed to parse triple " + serializedTriple, riot); throw riot; - } catch (UnsupportedEncodingException uee) { - throw new RuntimeException(uee); } }