From ca760f74291f8bcd4f4f983a56c0e8b7e41dddb2 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 13 Jan 2018 17:12:26 +0000 Subject: [PATCH 1/7] Move to test source tree. --- .../java/org/apache/jena/shared/wg/InputStreamFactoryTests.java} | 0 .../java/org/apache/jena/shared/wg/LazyFileInputStream.java | 0 .../java/org/apache/jena/shared/wg/LazyInputStream.java | 0 .../java/org/apache/jena/shared/wg/LazyURLInputStream.java | 0 .../java/org/apache/jena/shared/wg/LazyZipEntryInputStream.java | 0 .../{main => test}/java/org/apache/jena/shared/wg/package.html | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename jena-core/src/{main/java/org/apache/jena/shared/wg/TestInputStreamFactory.java => test/java/org/apache/jena/shared/wg/InputStreamFactoryTests.java} (100%) rename jena-core/src/{main => test}/java/org/apache/jena/shared/wg/LazyFileInputStream.java (100%) rename jena-core/src/{main => test}/java/org/apache/jena/shared/wg/LazyInputStream.java (100%) rename jena-core/src/{main => test}/java/org/apache/jena/shared/wg/LazyURLInputStream.java (100%) rename jena-core/src/{main => test}/java/org/apache/jena/shared/wg/LazyZipEntryInputStream.java (100%) rename jena-core/src/{main => test}/java/org/apache/jena/shared/wg/package.html (100%) diff --git a/jena-core/src/main/java/org/apache/jena/shared/wg/TestInputStreamFactory.java b/jena-core/src/test/java/org/apache/jena/shared/wg/InputStreamFactoryTests.java similarity index 100% rename from jena-core/src/main/java/org/apache/jena/shared/wg/TestInputStreamFactory.java rename to jena-core/src/test/java/org/apache/jena/shared/wg/InputStreamFactoryTests.java diff --git a/jena-core/src/main/java/org/apache/jena/shared/wg/LazyFileInputStream.java b/jena-core/src/test/java/org/apache/jena/shared/wg/LazyFileInputStream.java similarity index 100% rename from jena-core/src/main/java/org/apache/jena/shared/wg/LazyFileInputStream.java rename to jena-core/src/test/java/org/apache/jena/shared/wg/LazyFileInputStream.java diff --git a/jena-core/src/main/java/org/apache/jena/shared/wg/LazyInputStream.java b/jena-core/src/test/java/org/apache/jena/shared/wg/LazyInputStream.java similarity index 100% rename from jena-core/src/main/java/org/apache/jena/shared/wg/LazyInputStream.java rename to jena-core/src/test/java/org/apache/jena/shared/wg/LazyInputStream.java diff --git a/jena-core/src/main/java/org/apache/jena/shared/wg/LazyURLInputStream.java b/jena-core/src/test/java/org/apache/jena/shared/wg/LazyURLInputStream.java similarity index 100% rename from jena-core/src/main/java/org/apache/jena/shared/wg/LazyURLInputStream.java rename to jena-core/src/test/java/org/apache/jena/shared/wg/LazyURLInputStream.java diff --git a/jena-core/src/main/java/org/apache/jena/shared/wg/LazyZipEntryInputStream.java b/jena-core/src/test/java/org/apache/jena/shared/wg/LazyZipEntryInputStream.java similarity index 100% rename from jena-core/src/main/java/org/apache/jena/shared/wg/LazyZipEntryInputStream.java rename to jena-core/src/test/java/org/apache/jena/shared/wg/LazyZipEntryInputStream.java diff --git a/jena-core/src/main/java/org/apache/jena/shared/wg/package.html b/jena-core/src/test/java/org/apache/jena/shared/wg/package.html similarity index 100% rename from jena-core/src/main/java/org/apache/jena/shared/wg/package.html rename to jena-core/src/test/java/org/apache/jena/shared/wg/package.html From ed34030fc9a75095a14e310159f3a314417d6647 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 13 Jan 2018 17:13:26 +0000 Subject: [PATCH 2/7] Use RIOT-wide global IRIResolver.iriFactory. --- .../main/java/org/apache/jena/riot/system/PrefixMapBase.java | 3 +-- .../main/java/org/apache/jena/riot/system/PrefixMapStd.java | 3 +-- .../org/apache/jena/sparql/expr/nodevalue/NodeFunctions.java | 3 ++- .../org/apache/jena/query/TestParameterizedSparqlString.java | 4 ++-- jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java | 3 ++- .../org/apache/jena/riot/system/AbstractTestPrefixMap.java | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java index d4d8fc43766..63623af5b91 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapBase.java @@ -27,7 +27,6 @@ import org.apache.jena.atlas.lib.Pair; import org.apache.jena.iri.IRI; -import org.apache.jena.iri.IRIFactory; import org.apache.jena.shared.PrefixMapping ; /** @@ -65,7 +64,7 @@ public void forEach(BiConsumer action) { @Override public void add(String prefix, String iriString) { - this.add(prefix, IRIFactory.iriImplementation().create(iriString)); + this.add(prefix, IRIResolver.iriFactory.create(iriString)); } @Override diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapStd.java b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapStd.java index 557d07d7ca4..4c1510865a5 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapStd.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/system/PrefixMapStd.java @@ -24,7 +24,6 @@ import org.apache.jena.atlas.lib.Pair ; import org.apache.jena.iri.IRI ; -import org.apache.jena.iri.IRIFactory ; /** * Default implementation of a {@link PrefixMap}, this implementation @@ -66,7 +65,7 @@ public Map getMapping() { @Override public void add(String prefix, String iriString) { prefix = canonicalPrefix(prefix); - IRI iri = IRIFactory.iriImplementation().create(iriString); + IRI iri = IRIResolver.iriFactory.create(iriString); prefixes.put(prefix, iri); uriToPrefix.put(iriString, prefix) ; } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeFunctions.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeFunctions.java index 9949ca8adf0..15ef5a740bf 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeFunctions.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeFunctions.java @@ -28,6 +28,7 @@ import org.apache.jena.iri.IRI ; import org.apache.jena.iri.IRIFactory ; import org.apache.jena.iri.Violation ; +import org.apache.jena.riot.system.IRIResolver; import org.apache.jena.sparql.expr.ExprEvalException ; import org.apache.jena.sparql.expr.ExprTypeException ; import org.apache.jena.sparql.expr.NodeValue ; @@ -348,7 +349,7 @@ public static boolean isLiteral(Node node) { return node.isLiteral() ; } - private static final IRIFactory iriFactory = IRIFactory.iriImplementation() ; + private static final IRIFactory iriFactory = IRIResolver.iriFactory; public static boolean warningsForIRIs = false ; // -------- IRI diff --git a/jena-arq/src/test/java/org/apache/jena/query/TestParameterizedSparqlString.java b/jena-arq/src/test/java/org/apache/jena/query/TestParameterizedSparqlString.java index d3a6250c716..a3afcf1562f 100644 --- a/jena-arq/src/test/java/org/apache/jena/query/TestParameterizedSparqlString.java +++ b/jena-arq/src/test/java/org/apache/jena/query/TestParameterizedSparqlString.java @@ -25,8 +25,8 @@ import org.apache.jena.datatypes.TypeMapper ; import org.apache.jena.graph.Node ; import org.apache.jena.graph.NodeFactory ; -import org.apache.jena.iri.IRIFactory ; import org.apache.jena.rdf.model.* ; +import org.apache.jena.riot.system.IRIResolver; import org.apache.jena.shared.impl.PrefixMappingImpl ; import org.apache.jena.sparql.ARQException ; import org.apache.jena.sparql.syntax.Element ; @@ -1129,7 +1129,7 @@ public void test_param_string_append_iri_2() { query.append("SELECT *"); query.append('\n'); query.append("WHERE { ?s "); - query.appendIri(IRIFactory.iriImplementation().construct("http://example.org")); + query.appendIri(IRIResolver.iriFactory.construct("http://example.org")); query.append(" ?o }"); test(query, new String[] { "SELECT", "*", "\n", "WHERE", "?s", "", "?o" }, new String[] {}); diff --git a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java index b9dfee16099..b976e0a19d3 100644 --- a/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java +++ b/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java @@ -27,6 +27,7 @@ import org.apache.jena.riot.checker.CheckerIRI ; import org.apache.jena.riot.system.Checker ; import org.apache.jena.riot.system.ErrorHandler ; +import org.apache.jena.riot.system.IRIResolver ; import org.apache.jena.riot.system.RiotLib ; import org.junit.Test ; @@ -35,7 +36,7 @@ public class TestIRI extends BaseTest static protected final ErrorHandler handler = new ErrorHandlerTestLib.ErrorHandlerEx() ; static protected final Checker checker = new Checker(new ErrorHandlerTestLib.ErrorHandlerEx()) ; - static IRIFactory factory = IRIFactory.iriImplementation() ; + static IRIFactory factory = IRIResolver.iriFactory; @Test public void iri1() { testIRI("http://example/") ; } diff --git a/jena-arq/src/test/java/org/apache/jena/riot/system/AbstractTestPrefixMap.java b/jena-arq/src/test/java/org/apache/jena/riot/system/AbstractTestPrefixMap.java index 0ddfe8f35ca..09d27f1a7d5 100644 --- a/jena-arq/src/test/java/org/apache/jena/riot/system/AbstractTestPrefixMap.java +++ b/jena-arq/src/test/java/org/apache/jena/riot/system/AbstractTestPrefixMap.java @@ -27,7 +27,7 @@ * */ public abstract class AbstractTestPrefixMap extends BaseTest { - protected IRIFactory factory = IRIFactory.iriImplementation(); + protected IRIFactory factory = IRIResolver.iriFactory; /** * Gets the prefix map implementation to test, each call should result in a From a8c99ff7a095b473a756f6709fdb5803e42f625e Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 13 Jan 2018 17:15:15 +0000 Subject: [PATCH 3/7] Deprecate FileUtils.toURL --- .../main/java/org/apache/jena/util/FileUtils.java | 15 ++++++++++----- .../java/org/apache/jena/util/TestFileUtils.java | 3 ++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/jena-core/src/main/java/org/apache/jena/util/FileUtils.java b/jena-core/src/main/java/org/apache/jena/util/FileUtils.java index 046d7dce4e7..9c6473f5095 100644 --- a/jena-core/src/main/java/org/apache/jena/util/FileUtils.java +++ b/jena-core/src/main/java/org/apache/jena/util/FileUtils.java @@ -177,23 +177,28 @@ public static String decodeFileName(String s) return sbuff.toString(); } - - /** Turn a plain filename into a "file:" URL */ + /** Turn a plain filename into a "file:" URL + * Use IRILib.filenameToIRI + * This remains only for legacy compatibility. + */ + @Deprecated public static String toURL(String filename) { if ( filename.length()>5 && filename.substring(0,5).equalsIgnoreCase("file:") ) return filename ; + if ( filename.equals(".") ) + filename = "" ; + /** - * Convert a File, note java.net.URI appears to do the right thing. + * Convert a File, note java.net.URI does the right thing. * viz: * Convert to absolute path. * Convert all % to %25. * then convert all ' ' to %20. * It quite probably does more e.g. ? # - * But has bug in only having one / not three at beginning - + * But has one /, not three, at beginning */ return "file://" + new File(filename).toURI().toString().substring(5); } diff --git a/jena-core/src/test/java/org/apache/jena/util/TestFileUtils.java b/jena-core/src/test/java/org/apache/jena/util/TestFileUtils.java index e800d30ade6..b78b81069ca 100644 --- a/jena-core/src/test/java/org/apache/jena/util/TestFileUtils.java +++ b/jena-core/src/test/java/org/apache/jena/util/TestFileUtils.java @@ -213,7 +213,8 @@ public void testToURL5() { checkToURL("ü","ü"); } private void checkToURL(String fn, String match) { - String r = FileUtils.toURL(fn); + @SuppressWarnings("deprecation") + String r = FileUtils.toURL(fn); if (!r.matches("^.*/[^/]*" + match + "[^/]*$")) fail("Converted \"" + fn + "\" to <" + r + "> which did not match /" + match + "/"); From 35a5cc927222ea69d827633e13dd9065676558eb Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 13 Jan 2018 17:17:22 +0000 Subject: [PATCH 4/7] N3IRIResolver for jena-core test support only. --- .../org/apache/jena/n3/N3IRIResolver.java | 34 ++++++++++++++++--- .../java/org/apache/jena/n3/TestResolver.java | 7 ++-- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/jena-core/src/main/java/org/apache/jena/n3/N3IRIResolver.java b/jena-core/src/main/java/org/apache/jena/n3/N3IRIResolver.java index f8ba6defd35..2084604d128 100644 --- a/jena-core/src/main/java/org/apache/jena/n3/N3IRIResolver.java +++ b/jena-core/src/main/java/org/apache/jena/n3/N3IRIResolver.java @@ -19,19 +19,25 @@ package org.apache.jena.n3; +import java.io.File; + import org.apache.jena.iri.IRI; import org.apache.jena.iri.IRIException; import org.apache.jena.iri.IRIFactory; -import org.apache.jena.util.FileUtils ; +import org.apache.jena.iri.ViolationCodes; /** A simple class to access IRI resolution. + * * Replaced by {@code org.apache.jena.riot.system.IRIResolver} + * + * Only exists for jena-core tests */ @Deprecated public class N3IRIResolver { /** * The current working directory, as a string. + * Ends in "/". */ static private String globalBase = "http://localhost/LocalHostBase/" ; @@ -39,9 +45,24 @@ public class N3IRIResolver { // Security (e.g. Tomcat) may prevent this in which case we // use a common default set above. static { - try { globalBase = FileUtils.toURL("."); } - catch (Throwable th) { } + try { globalBase = cwdURL(); } + catch (Throwable th) {} } + + /** The current directory as a "file:" URL */ + private static String cwdURL() + { + /** + * Convert a File, note java.net.URI does the right thing. + * viz: + * Convert to absolute path. + * Convert all % to %25. + * then convert all ' ' to %20. + * It quite probably does more e.g. ? # + * But has one /, not three, at beginning + */ + return "file://" + new File("").toURI().toString().substring(5); + } /** * The current working directory, as an IRI. @@ -51,9 +72,12 @@ public class N3IRIResolver { /** * An IRIFactory appropriately configuired. */ - static final IRIFactory factory = new IRIFactory(IRIFactory - .jenaImplementation()); + static final IRIFactory factory = new IRIFactory(IRIFactory.jenaImplementation()); static { + factory.shouldViolation(false,false); + factory.securityViolation(false,false); + factory.setIsWarning(ViolationCodes.UNREGISTERED_IANA_SCHEME, false); + factory.setIsError(ViolationCodes.UNREGISTERED_IANA_SCHEME, false); factory.setSameSchemeRelativeReferences("file"); } diff --git a/jena-core/src/test/java/org/apache/jena/n3/TestResolver.java b/jena-core/src/test/java/org/apache/jena/n3/TestResolver.java index 832a4b7df5e..1af8dc476dc 100644 --- a/jena-core/src/test/java/org/apache/jena/n3/TestResolver.java +++ b/jena-core/src/test/java/org/apache/jena/n3/TestResolver.java @@ -23,6 +23,7 @@ import org.apache.jena.n3.N3IRIResolver ; import org.apache.jena.n3.JenaURIException ; @SuppressWarnings("deprecation") +// Tests the old N3IRIResolver which is now only used for tests. public class TestResolver extends TestCase { public static TestSuite suite() @@ -90,7 +91,8 @@ public void testChoice2() { public void testURI_1() { execTest("", "http://example.org/", "http://example.org/"); } public void testURI_2() { execTest("", "http://example.org/xyz_2007", "http://example.org/xyz_2007"); } - public void testURI_3() { execTest("", "http://example.org/xyz 2007", "http://example.org/xyz 2007"); } + // RDF URI References - space in URI. Not IRIs. + //public void testURI_3() { execTest("", "http://example.org/xyz 2007", "http://example.org/xyz 2007"); } public void testURI_4() { execTest("", "http://example.org/xyz__2007", "http://example.org/xyz__2007"); } public void testURI_5() { execTest("", "http://example.org/xyz__abc", "http://example.org/xyz__abc"); } @@ -222,7 +224,8 @@ public void testChoice2() { public void testURI_file_7() { execTestMatch("file:foo", "file:xyz", "^file:///.*foo$") ; } - public void testURI_file_8() { execTestMatch("file:foo", "file:a b", "^file:///.*foo$") ; } + // RDF URI References - space in URI. Not IRIs. + //public void testURI_file_8() { execTestMatch("file:foo", "file:a b", "^file:///.*foo$") ; } // File URLs - test aren't exact as the depend where they are run. From c055fa62b54ff800a820b87712a1c5403ff366e5 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 13 Jan 2018 17:19:18 +0000 Subject: [PATCH 5/7] Add documentation about legecay uses. Clean classes. --- .../apache/jena/rdfxml/xmlinput/ARPOptions.java | 6 ++++++ .../jena/rdfxml/xmloutput/impl/BaseXMLWriter.java | 2 ++ .../jena/rdfxml/xmlinput/NTripleTestSuite.java | 8 ++++---- .../apache/jena/rdfxml/xmlinput/TestARPMain.java | 8 ++++---- .../org/apache/jena/rdfxml/xmlinput/URITests.java | 2 ++ .../apache/jena/rdfxml/xmlinput/WGTestSuite.java | 12 ++++++------ .../jena/shared/wg/InputStreamFactoryTests.java | 15 ++++++++------- 7 files changed, 32 insertions(+), 21 deletions(-) diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput/ARPOptions.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput/ARPOptions.java index c66fae7c746..6df6feeb820 100644 --- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput/ARPOptions.java +++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput/ARPOptions.java @@ -67,6 +67,12 @@ private ARPOptions() { private boolean embedding = false; private int errorMode[] = defaultErrorMode.clone(); + // Note: This is the legacy setup for jena-core only. + // When used normally, with RIOT, the IRIFcatory is + // org.apache.jena.riot.system.IRIResolver.iriFactory + // which is RDF 1.1 and also the IRIfcatory used by all + // RIOT parsing. + @SuppressWarnings("deprecation") private static IRIFactory defaultIriFactory = IRIFactory.jenaImplementation() ; private IRIFactory iriFactory = defaultIriFactory ; diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java index 26591f7851c..0bd43678f34 100644 --- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java +++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java @@ -490,6 +490,8 @@ private void setupNamespaces( Model model ) } @SuppressWarnings("deprecation") + // Testing. + // Agrees with ARPOptions.defaultIriFactory. static IRIFactory factory = IRIFactory.jenaImplementation(); diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/NTripleTestSuite.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/NTripleTestSuite.java index f5ae838735e..b40883c5b1f 100644 --- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/NTripleTestSuite.java +++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/NTripleTestSuite.java @@ -31,7 +31,7 @@ import org.apache.jena.rdfxml.xmlinput.NTriple ; import org.apache.jena.rdfxml.xmlinput.impl.ARPResource ; import org.apache.jena.rdfxml.xmlinput.impl.ARPSaxErrorHandler ; -import org.apache.jena.shared.wg.TestInputStreamFactory ; +import org.apache.jena.shared.wg.InputStreamFactoryTests ; import org.junit.Assert ; import org.xml.sax.SAXException ; import org.xml.sax.SAXParseException ; @@ -42,20 +42,20 @@ * Jena N-triple writer. */ class NTripleTestSuite extends WGTestSuite { - NTripleTestSuite(TestInputStreamFactory fact, String name, boolean b) { + NTripleTestSuite(InputStreamFactoryTests fact, String name, boolean b) { super(fact, name, b); } static TestSuite suite(IRI testDir, String d, String nm) { return new NTripleTestSuite( - new TestInputStreamFactory(testDir, d), + new InputStreamFactoryTests(testDir, d), nm, true); } static TestSuite suite(IRI testDir, IRI d, String nm) { return new NTripleTestSuite( - new TestInputStreamFactory(testDir, d), + new InputStreamFactoryTests(testDir, d), nm, true); } diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/TestARPMain.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/TestARPMain.java index e44105ed9e2..a8997e36ae7 100644 --- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/TestARPMain.java +++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/TestARPMain.java @@ -21,7 +21,7 @@ import junit.framework.Test ; import junit.framework.TestSuite ; import org.apache.jena.iri.IRIFactory ; -import org.apache.jena.shared.wg.TestInputStreamFactory ; +import org.apache.jena.shared.wg.InputStreamFactoryTests ; public class TestARPMain { @@ -30,7 +30,7 @@ static public Test suite() TestSuite test0 = new TestSuite("ARP") ; WGTestSuite test1 = new org.apache.jena.rdfxml.xmlinput.WGTestSuite( - new TestInputStreamFactory( + new InputStreamFactoryTests( IRIFactory .iriImplementation() .create( @@ -1296,7 +1296,7 @@ static public Test suite() // test1.addTest(test173); test0.addTest(test1) ; WGTestSuite test175 = new org.apache.jena.rdfxml.xmlinput.WGTestSuite( - new TestInputStreamFactory(IRIFactory.iriImplementation().create("http://jcarroll.hpl.hp.com/arp-tests/"), + new InputStreamFactoryTests(IRIFactory.iriImplementation().create("http://jcarroll.hpl.hp.com/arp-tests/"), "arp"), "ARP Tests", false) ; TestSuite test176 = new TestSuite("ARP") ; @@ -1483,7 +1483,7 @@ static public Test suite() test175.addTest(test176) ; test0.addTest(test175) ; WGTestSuite test211 = new org.apache.jena.rdfxml.xmlinput.NTripleTestSuite( - new TestInputStreamFactory( + new InputStreamFactoryTests( IRIFactory .iriImplementation() .create( diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/URITests.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/URITests.java index 618e31ccec7..44e851c24d2 100644 --- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/URITests.java +++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/URITests.java @@ -52,6 +52,8 @@ static public Test suite() { } @SuppressWarnings("deprecation") + // Testing. + // Agrees with ARPOptions.defaultIriFactory. static IRIFactory factory = IRIFactory.jenaImplementation(); // static { // factory.useSpecificationRDF(false); diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/WGTestSuite.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/WGTestSuite.java index 7984a32a8c0..20aa675ffc6 100644 --- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/WGTestSuite.java +++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput/WGTestSuite.java @@ -46,7 +46,7 @@ import org.apache.jena.shared.BrokenException ; import org.apache.jena.shared.JenaException ; import org.apache.jena.shared.impl.JenaParameters ; -import org.apache.jena.shared.wg.TestInputStreamFactory ; +import org.apache.jena.shared.wg.InputStreamFactoryTests ; import org.apache.jena.vocabulary.OWLResults ; import org.apache.jena.vocabulary.RDF ; import org.apache.jena.vocabulary.RDFS ; @@ -185,7 +185,7 @@ public void act(Resource r) { } }; - TestInputStreamFactory factory; + InputStreamFactoryTests factory; static private Collection misc = Arrays.asList( @@ -236,7 +236,7 @@ public void act(Resource r) { }); } - private Model loadRDF(final TestInputStreamFactory fact, + private Model loadRDF(final InputStreamFactoryTests fact, final String file) { Model m = null; String base = fact.getBase().toString(); @@ -270,7 +270,7 @@ public InputStream open() throws IOException { */ String createMe; - WGTestSuite(TestInputStreamFactory fact, String name, boolean dynamic) { + WGTestSuite(InputStreamFactoryTests fact, String name, boolean dynamic) { super(name); factory = fact; testDir = fact.getBase(); @@ -334,14 +334,14 @@ public InputStream open() throws IOException { static TestSuite suite(IRI testDir, String d, String nm) { return new WGTestSuite( - new TestInputStreamFactory(testDir, d), + new InputStreamFactoryTests(testDir, d), nm, true); } static TestSuite suite(IRI testDir, IRI d, String nm) { return new WGTestSuite( - new TestInputStreamFactory(testDir, d), + new InputStreamFactoryTests(testDir, d), nm, true); } diff --git a/jena-core/src/test/java/org/apache/jena/shared/wg/InputStreamFactoryTests.java b/jena-core/src/test/java/org/apache/jena/shared/wg/InputStreamFactoryTests.java index 0375eeca22a..1d7a59d9a9c 100644 --- a/jena-core/src/test/java/org/apache/jena/shared/wg/InputStreamFactoryTests.java +++ b/jena-core/src/test/java/org/apache/jena/shared/wg/InputStreamFactoryTests.java @@ -30,12 +30,13 @@ import org.apache.jena.iri.*; import org.apache.jena.shared.JenaException ; -/** +/** In support of the RDF 2004 Working Group tests. + * * This class provides input streams that: * 1: can be from a URL or from a zip * 2: do not actually open until the first read */ -public class TestInputStreamFactory { +public class InputStreamFactoryTests { @SuppressWarnings("deprecation") final IRIFactory iriFactory = IRIFactory.jenaImplementation(); @@ -48,7 +49,7 @@ public class TestInputStreamFactory { /** @param baseDir A prefix of all URLs accessed through this factory. * @param getBaseDir Replace the baseDir into getBaseDir before opening any URL. */ - public TestInputStreamFactory(IRI baseDir, IRI getBaseDir) { + public InputStreamFactoryTests(IRI baseDir, IRI getBaseDir) { base = baseDir; mapBase = getBaseDir; zip = null; @@ -57,14 +58,14 @@ public TestInputStreamFactory(IRI baseDir, IRI getBaseDir) { /** @param baseDir A prefix of all URLs accessed through this factory. * @param zip To open a URL remove the baseDir from the URL and get the named file from the zip. */ - public TestInputStreamFactory(IRI baseDir, ZipFile zip) { + public InputStreamFactoryTests(IRI baseDir, ZipFile zip) { base = baseDir; mapBase = null; this.zip = zip; property = null; } - public TestInputStreamFactory(IRI baseDir, String propDir) { + public InputStreamFactoryTests(IRI baseDir, String propDir) { createMe = "new TestInputStreamFactory(URI.create(\""+baseDir.toString() +"\"),\""+propDir+"\")"; base = baseDir; @@ -160,13 +161,13 @@ private Object open(IRI uri, boolean in) { if (zip != null) return new LazyZipEntryInputStream(zip,relPath ); else - return TestInputStreamFactory.getInputStream(property + relPath ); + return InputStreamFactoryTests.getInputStream(property + relPath ); } private static InputStream getInputStream(String prop) { // System.err.println(prop); - ClassLoader loader = TestInputStreamFactory.class.getClassLoader(); + ClassLoader loader = InputStreamFactoryTests.class.getClassLoader(); if (loader == null) throw new SecurityException("Cannot access class loader"); InputStream in = From aecfaac0d631995120b77f22059291ffe6b9f06f Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 13 Jan 2018 17:22:03 +0000 Subject: [PATCH 6/7] JENA-1462: Use RIOT global default resolver. --- .../main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java index ed37f2a3c52..eccda5f86a0 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderRIOTRDFXML.java @@ -30,7 +30,6 @@ import org.apache.jena.graph.Node ; import org.apache.jena.graph.NodeFactory ; import org.apache.jena.graph.Triple ; -import org.apache.jena.iri.IRIFactory; import org.apache.jena.rdf.model.RDFErrorHandler ; import org.apache.jena.rdfxml.xmlinput.* ; import org.apache.jena.rdfxml.xmlinput.impl.ARPSaxErrorHandler ; @@ -126,7 +125,7 @@ public void parse() { } if ( JenaRuntime.isRDF11 ) - arp.getOptions().setIRIFactory(IRIFactory.iriImplementation()); + arp.getOptions().setIRIFactory(IRIResolver.iriFactory); try { if ( reader != null ) From 1d037e80dfd8a91e9c4042f65695cadec4b17097 Mon Sep 17 00:00:00 2001 From: Andy Seaborne Date: Sat, 13 Jan 2018 17:24:29 +0000 Subject: [PATCH 7/7] JENA-1463: Fix for file://host/path --- .../src/main/java/org/apache/jena/atlas/lib/IRILib.java | 6 +++--- .../org/apache/jena/atlas/lib/TestFilenameProcessing.java | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/IRILib.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/IRILib.java index 18f3b942d0b..ffe05de1cf8 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/IRILib.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/IRILib.java @@ -192,14 +192,14 @@ private static String normalizeFilenameURI(String fn) { return plainFilenameToURL(fn2) ; } - // Starts file:/// + // Starts file:// or file:/// if ( fn.startsWith("file:///") ) // Assume it's good and return as-is. return fn ; if ( fn.startsWith("file://") ) { - String fn2 = fn.substring("file:/".length()) ; // Leave one "/" - return plainFilenameToURL(fn2) ; + // file: URL with host name (maybe!) + return fn ; } // Must be file:/ diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestFilenameProcessing.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestFilenameProcessing.java index e34fe3e61d5..84d08c4d6e6 100644 --- a/jena-base/src/test/java/org/apache/jena/atlas/lib/TestFilenameProcessing.java +++ b/jena-base/src/test/java/org/apache/jena/atlas/lib/TestFilenameProcessing.java @@ -65,8 +65,11 @@ public void fileIRI_2() { @Test public void fileIRI_3() { - String uri = testFileIRI("file://D.ttl") ; - assertTrue(uri.endsWith("D.ttl")) ; + String fn = "file://some.host/D.ttl" ; + String uri1 = IRILib.filenameToIRI(fn) ; + assertEquals(fn, uri1); + String uri2 = IRILib.filenameToIRI(uri1) ; + assertEquals(uri1, uri2) ; } @Test