[ https://issues.apache.org/jira/browse/JENA-1892?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17096701#comment-17096701 ]
Gilles Sérasset commented on JENA-1892: --------------------------------------- I have : {code:java} java.lang.StringIndexOutOfBoundsException: String index out of range: 71 at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47) at java.base/java.lang.String.charAt(String.java:693) at org.apache.jena.atlas.lib.StrUtils.decodeHex(StrUtils.java:212) at org.apache.jena.tdb.store.nodetable.NodecSSE.decode(NodecSSE.java:121) at org.apache.jena.tdb.lib.NodeLib.decode(NodeLib.java:120) at org.apache.jena.tdb.lib.NodeLib.fetchDecode(NodeLib.java:97) at org.apache.jena.tdb.store.nodetable.NodeTableNative.readNodeFromTable(NodeTableNative.java:182) at org.apache.jena.tdb.store.nodetable.NodeTableNative._retrieveNodeByNodeId(NodeTableNative.java:108) at org.apache.jena.tdb.store.nodetable.NodeTableNative.getNodeForNodeId(NodeTableNative.java:67) at org.apache.jena.tdb.store.nodetable.NodeTableCache._retrieveNodeByNodeId(NodeTableCache.java:128) at org.apache.jena.tdb.store.nodetable.NodeTableCache.getNodeForNodeId(NodeTableCache.java:82) at org.apache.jena.tdb.store.nodetable.NodeTableWrapper.getNodeForNodeId(NodeTableWrapper.java:50) at org.apache.jena.tdb.store.nodetable.NodeTableInline.getNodeForNodeId(NodeTableInline.java:67) at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:126) at org.apache.jena.tdb.lib.TupleLib.quad(TupleLib.java:120) at org.apache.jena.tdb.lib.TupleLib.lambda$convertToQuads$3(TupleLib.java:59) at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352) at org.apache.jena.atlas.iterator.Iter$2.next(Iter.java:352) at org.apache.jena.atlas.iterator.Iter.next(Iter.java:1072) at org.apache.jena.util.iterator.WrappedIterator.next(WrappedIterator.java:94) at org.apache.jena.riot.writer.TurtleShell$ShellGraph.findBNodesSyntax1(TurtleShell.java:385) at org.apache.jena.riot.writer.TurtleShell$ShellGraph.<init>(TurtleShell.java:200) at org.apache.jena.riot.writer.TurtleShell$ShellGraph.<init>(TurtleShell.java:149) at org.apache.jena.riot.writer.TurtleShell.writeGraphTTL(TurtleShell.java:134) at org.apache.jena.riot.writer.TurtleWriter$TurtleWriter$.write(TurtleWriter.java:44) at org.apache.jena.riot.writer.TurtleWriter$TurtleWriter$.access$000(TurtleWriter.java:34) at org.apache.jena.riot.writer.TurtleWriter.output(TurtleWriter.java:31) at org.apache.jena.riot.writer.TurtleWriterBase.output$(TurtleWriterBase.java:54) at org.apache.jena.riot.writer.TurtleWriterBase.write(TurtleWriterBase.java:48) at org.apache.jena.riot.RDFWriter.write$(RDFWriter.java:202) at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:161) at org.apache.jena.riot.RDFWriter.output(RDFWriter.java:112) at org.apache.jena.riot.RDFWriterBuilder.output(RDFWriterBuilder.java:205) at org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:86) at org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:379) at org.getalp.dbnary.JenaIRITest.insertIRIAndDump(JenaIRITest.java:41) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58){code} > Non ASCII chars in URIs leads to StringIndexOutOfBoundException > --------------------------------------------------------------- > > Key: JENA-1892 > URL: https://issues.apache.org/jira/browse/JENA-1892 > Project: Apache Jena > Issue Type: Bug > Components: Base, TDB > Affects Versions: Jena 3.14.0 > Reporter: Gilles Sérasset > Priority: Major > Attachments: JenaIRITest.java > > > When a URI uses a non ASCII char, the StrUtils.decodeHex() method will > incorrectly decode the URI when stored in TDB and eventually throw a > StringIndexOutOfBoundException. > In the attached JUnit class is a method which will raise the exception. > Note that if the dataset is not closed and reopened (forcing TDB to store the > data on disk and retrieve it), the code works correctly. -- This message was sent by Atlassian Jira (v8.3.4#803005)