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 2013/05/03 15:40:37 UTC

svn commit: r1478787 - in /jena/trunk: jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/ jena-arq/src/main/java/org/apache/jena/atlas/io/ jena-arq/src/main/java/org/apache/jena/atlas/lib/ jena-arq/src/main/java/org/apache/jena/riot/ jena-ar...

Author: andy
Date: Fri May  3 13:40:37 2013
New Revision: 1478787

URL: http://svn.apache.org/r1478787
Log:
JENA-448

1/ Move IRILib to o.a.j.riot.system from o.a.j.atlas.lib
2/ Use AdapterFileManager when RIOT initializes
3/ Don't escape file:/// URIs at all - assume that when written /// they are correct.


Added:
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRILib.java
      - copied, changed from r1478584, jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java
Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterFileManager.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/FileManagerModelCache.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_ARP.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/LocatorFile.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRIResolver.java
    jena/trunk/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessorHTTP.java
    jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotReader.java
    jena/trunk/jena-arq/src/test/java/org/apache/jena/atlas/lib/TestFilenameProcessing.java
    jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/adapters/TestFileManager.java
    jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/http/DatasetGraphAccessorHTTP.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java Fri May  3 13:40:37 2013
@@ -44,9 +44,9 @@ import javax.xml.datatype.DatatypeConsta
 import javax.xml.datatype.Duration ;
 import javax.xml.datatype.XMLGregorianCalendar ;
 
-import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.riot.system.IRILib ;
 
 import com.hp.hpl.jena.datatypes.RDFDatatype ;
 import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java Fri May  3 13:40:37 2013
@@ -23,8 +23,8 @@ import java.nio.charset.Charset ;
 import java.util.zip.GZIPInputStream ;
 
 import org.apache.jena.atlas.AtlasException ;
-import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.logging.Log ;
+import org.apache.jena.riot.system.IRILib ;
 
 import com.hp.hpl.jena.util.FileUtils ;
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java Fri May  3 13:40:37 2013
@@ -1,6 +1,6 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements.  See the NOTICE filoved to riot.syae
  * 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
@@ -19,244 +19,93 @@
 package org.apache.jena.atlas.lib;
 
 import java.io.File ;
-import java.io.IOException ;
 
-import org.apache.jena.atlas.AtlasException ;
-
-/** Operations related to IRIs */
+/** @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib} */
+@Deprecated
 public class IRILib
 {
     /** Encode using the rules for a component (e.g. ':' and '/' get encoded) 
      * Does not encode non-ASCII characters 
+     * @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib}
      */
-    public static String encodeUriComponent(String string)
-    {
-        String encStr = StrUtils.encodeHex(string,'%', charsComponent) ;
-        return encStr ;
+    @Deprecated
+    public static String encodeUriComponent(String string) { 
+        return org.apache.jena.riot.system.IRILib.encodeUriComponent(string) ;
     }
     
     /** Encode using the rules for a file: URL.  Same as encodeUriPath except
      * add "~" to the encoded set.
      *  Does not encode non-ASCII characters
-     *   
+     * @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib}
      */
+    @Deprecated
     public static String encodeFileURL(String string)
     {
-        String encStr = StrUtils.encodeHex(string,'%', charsFilename) ;
-        return encStr ;
+        return org.apache.jena.riot.system.IRILib.encodeFileURL(string) ;
     }
     
-    /** Encode using the rules for a path (e.g. ':' and '/' do not get encoded) */
+    /** Encode using the rules for a path (e.g. ':' and '/' do not get encoded)
+     * @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib}
+     */
+    @Deprecated
     public static String encodeUriPath(String uri)
     {
-        // Not perfect.
-        // Encode path.
-        // %-encode chars.
-        uri = StrUtils.encodeHex(uri, '%', charsPath) ;
-        return uri ;
+        return org.apache.jena.riot.system.IRILib.encodeUriPath(uri) ;
     }
     
+    /** @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib} */
+    @Deprecated
     public static String decode(String string)
     {
-        return StrUtils.decodeHex(string, '%') ;
+        return org.apache.jena.riot.system.IRILib.decode(string) ;
     }
     
-    
-    private static final boolean isWindows = (File.pathSeparatorChar == ';' ) ;
-    // Does not help - we use file.getCanonicalPath
-    // /*package*/ public static void setIsWindowsForTesting(boolean val) { isWindows = val ; }
-
-    // http://www.w3.org/TR/xpath-functions/#func-encode-for-uri
-    // Encodes delimiters.
-    
-    /* RFC 3986
-     * 
-     * unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"
-     * gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@"
-     * sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
-                    / "*" / "+" / "," / ";" / "="
+    /** Return a string that is an IRI for the filename.
+     * @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib}
      */
-    
-    private static char uri_reserved[] = 
-    { 
-      '!', '*', '"', '\'', '(', ')', ';', ':', '@', '&', 
-      '=', '+', '$', ',', '/', '?', '%', '#', '[', ']'} ;
-
-    // No allowed in URIs
-    private static char uri_non_chars[] = { '<', '>', '{', '}', '|', '\\', '`', '^', ' ',  '\n', '\r', '\t' } ;
-    
-    // RFC 2396
-    //private static char uri_unwise[]    = { '{' , '}', '|', '\\', '^', '[', ']', '`' } ;
-
-
-    private static char[] charsComponent =
-    // reserved, + non-chars + nasties.
-    { '!', '*', '"', '\'', '(', ')', ';', ':', '@', '&', 
-      '=', '+', '$', ',', '/', '?', '%', '#', '[', ']',
-      '{', '}', '|', '\\', '`', '^',
-      ' ', '<', '>', '\n', '\r', '\t' } ;
-    
-    private static char[] charsFilename =
-        // reserved, + non-chars + nasties.
-        { '!', '*', '"', '\'', '(', ')', ';', ':', '@', '&', 
-          '=', '+', '$', ',', /*'/',*/ '?', '%', '#', '[', ']',
-          '{', '}', '|', '\\', '`', '^',
-          ' ', '<', '>', '\n', '\r', '\t',
-          '~'} ;
-
-    private static char[] charsPath =  
-    {
-        // Reserved except leave the separators alone. 
-        // Leave the path separator alone.
-        // Leave the drive separator alone.
-        '!', '*', '"', '\'', '(', ')', ';', /*':',*/ '@', '&',
-        '=', '+', '$', ',', /*'/',*/ '?', '%', '#', '[', ']',
-        '{', '}', '|', '\\', '`', '^',
-        // Other junk 
-        ' ', '<', '>', '\n', '\r', '\t' } ;
-
-    // The initializers must have run.
-    static final String cwd ; 
-    static final String cwdURL ;
-    
-    // Current directory, with trailing "/"
-    // This matters for resolution.
-    static { 
-        String x = new File(".").getAbsolutePath() ;
-        x = x.substring(0, x.length()-1) ;
-        cwd = x ;
-        cwdURL = plainFilenameToURL(cwd) ;
-    }
-    
-    // See also IRIResolver
-    /** Return a string that is an IRI for the filename.*/
+    @Deprecated
     public static String fileToIRI(File f)
     {
-        return filenameToIRI(f.getAbsolutePath()) ;
+        return org.apache.jena.riot.system.IRILib.fileToIRI(f) ;
     }
     
     /** Create a string that is a IRI for the filename.
      *  The file name may already have file:.
      *  The file name may be relative. 
      *  Encode using the rules for a path (e.g. ':' and'/' do not get encoded)
+     * @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib}
      */
+    @Deprecated
     public static String filenameToIRI(String fn)
     {
-        if ( fn == null ) return cwdURL ;
-        
-        if ( fn.length() == 0 ) return cwdURL ;
-        
-        if ( fn.startsWith("file:") )
-            return normalizeFilenameURI(fn) ;
-        return plainFilenameToURL(fn) ;
+        return org.apache.jena.riot.system.IRILib.filenameToIRI(fn) ;
+
     }
     
-    /** Convert an IRI to a filename */
+    /** Convert an IRI to a filename
+     * @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib}
+     */
+    @Deprecated
     public static String IRIToFilename(String iri)
     {
-        if ( ! iri.startsWith("file:") )
-            throw new AtlasException("Not a file: URI: "+iri) ; 
-        
-        String fn ;
-        if ( iri.startsWith("file:///") )
-            fn = iri.substring("file://".length()) ;
-        else
-            fn = iri.substring("file:".length()) ;
-        return decode(fn) ;
-    }
-    
-    /** Convert a plain file name (no file:) to a file: URL */
-    private static String plainFilenameToURL(String fn)
-    {
-        // No "file:"
-        // Make Absolute filename.
-        boolean trailingSlash = fn.endsWith("/") ;
-        File file = new File(fn) ;
-        
-        try { fn = file.getCanonicalPath() ; }
-        catch (IOException e) { fn = file.getAbsolutePath() ; }
-        
-        if ( trailingSlash && ! fn.endsWith("/") )
-            fn = fn + "/" ;
-        
-        if ( isWindows )
-        {
-            // C:\ => file:///C:/... 
-            if ( fn.length() >= 2 && fn.charAt(1) == ':' )
-                // Windows drive letter - already absolute path.
-                // Make "URI" absolute path
-                fn = "/"+fn ;
-            // Convert \ to /
-            // Maybe should do this on all platforms? i.e consistency.
-            fn = fn.replace('\\', '/' ) ;
-        }
-        
-        fn = encodeFileURL(fn) ;
-        return "file://"+fn ;
+        return org.apache.jena.riot.system.IRILib.IRIToFilename(iri) ;
     }
     
-    
-    /** Sanitize a "file:" URL. Must start "file:" */
-    private static String normalizeFilenameURI(String fn)
-    {
-        if ( ! fn.startsWith("file:/") )
-        {
-            // Relative path.
-            String fn2 = fn.substring("file:".length()) ;
-            return plainFilenameToURL(fn2) ;
-        }
-        
-        // Starts file:///
-        if ( fn.startsWith("file:///") )
-            // Good.
-            return encodeFileURL(fn) ;
-
-        if ( fn.startsWith("file://") )
-        {
-            String fn2 = fn.substring("file:/".length()) ;  // Leave one "/"
-            return plainFilenameToURL(fn2) ;
-        }
-            
-        // Must be file:/
-        String fn2 = fn.substring("file:".length()) ;
-        return plainFilenameToURL(fn2) ;
-    }
-
+    /**
+     * @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib}
+     */
+    @Deprecated
     public static String encodeNonASCII(String string)
     {
-        if ( ! containsNonASCII(string) )
-            return string ;
-        
-        byte[] bytes = StrUtils.asUTF8bytes(string) ;
-        StringBuilder sw = new StringBuilder() ;
-        for ( int i = 0 ; i < bytes.length ; i++ )
-        {
-            byte b = bytes[i] ;
-            // Signed bytes ...
-            if ( b > 0 )
-            {
-                sw.append((char)b) ;
-                continue ;
-            }
-            
-            int hi = (b & 0xF0) >> 4 ;
-            int lo = b & 0xF ;
-            sw.append('%') ;
-            sw.append(Chars.hexDigitsUC[hi]) ;
-            sw.append(Chars.hexDigitsUC[lo]) ;
-        }
-        return sw.toString() ;
+        return org.apache.jena.riot.system.IRILib.encodeNonASCII(string) ;
     }
 
+    /**
+     * @deprecated Moved to {@linkplain org.apache.jena.riot.system.IRILib}
+     */
+    @Deprecated
     public static boolean containsNonASCII(String string)
     {
-        boolean clean = true ;
-        for ( int i = 0 ; i < string.length() ; i++ )
-        {
-            char ch = string.charAt(i) ;
-            if ( ch >= 127 )
-                return true;
-        }
-        return false ;
+        return org.apache.jena.riot.system.IRILib.containsNonASCII(string) ;
     } 
 }

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/IO_Jena.java Fri May  3 13:40:37 2013
@@ -34,12 +34,9 @@ public class IO_Jena
 
     public static void wireIntoJena()
     {
-        if ( false )
-        {
-            if ( coreFileManager == null )
-                coreFileManager = FileManager.get() ;
-            FileManager.setGlobalFileManager(AdapterFileManager.get()) ;
-        }
+        if ( coreFileManager == null )
+            coreFileManager = FileManager.get() ;
+        FileManager.setGlobalFileManager(AdapterFileManager.get()) ;
         IO_JenaReaders.wireIntoJena() ;
         IO_JenaWriters.wireIntoJena() ;
     }

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/SysRIOT.java Fri May  3 13:40:37 2013
@@ -18,7 +18,7 @@
 
 package org.apache.jena.riot;
 
-import org.apache.jena.atlas.lib.IRILib ;
+import org.apache.jena.riot.system.IRILib ;
 import org.apache.jena.riot.system.IRIResolver ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterFileManager.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterFileManager.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterFileManager.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterFileManager.java Fri May  3 13:40:37 2013
@@ -22,9 +22,9 @@ import java.io.IOException ;
 import java.io.InputStream ;
 import java.util.Iterator ;
 
-import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.web.TypedInputStream ;
 import org.apache.jena.riot.stream.* ;
+import org.apache.jena.riot.system.IRILib ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
@@ -232,7 +232,7 @@ public class AdapterFileManager extends 
     
     /** return whether caching is on of off */
     @Override
-    public boolean getCachingModels()               { return modelCache.getCachingModels() ; }
+    public boolean isCachingModels()               { return modelCache.isCachingModels() ; }
     
     /** Read out of the cache - return null if not in the cache */ 
     @Override

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/FileManagerModelCache.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/FileManagerModelCache.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/FileManagerModelCache.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/FileManagerModelCache.java Fri May  3 13:40:37 2013
@@ -48,32 +48,32 @@ class FileManagerModelCache {
     }
     
     /** return whether caching is on of off */
-    public boolean getCachingModels() { return cacheModelLoads ; }
+    public boolean isCachingModels() { return cacheModelLoads ; }
     
     /** Read out of the cache - return null if not in the cache */ 
     public Model getFromCache(String filenameOrURI)
     { 
-        if ( ! getCachingModels() )
+        if ( ! isCachingModels() )
             return null; 
         return modelCache.get(filenameOrURI) ;
     }
     
     public boolean hasCachedModel(String filenameOrURI)
     { 
-        if ( ! getCachingModels() )
+        if ( ! isCachingModels() )
             return false ; 
         return modelCache.containsKey(filenameOrURI) ;
     }
     
     public void addCacheModel(String uri, Model m)
     { 
-        if ( getCachingModels() )
+        if ( isCachingModels() )
             modelCache.put(uri, m) ;
     }
 
     public void removeCacheModel(String uri)
     { 
-        if ( getCachingModels() )
+        if ( isCachingModels() )
             modelCache.remove(uri) ;
     }
 

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_ARP.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_ARP.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_ARP.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/adapters/RDFReaderRIOT_ARP.java Fri May  3 13:40:37 2013
@@ -22,7 +22,7 @@ import java.io.File ;
 import java.io.InputStream ;
 import java.io.Reader ;
 
-import org.apache.jena.atlas.lib.IRILib ;
+import org.apache.jena.riot.system.IRILib ;
 
 import com.hp.hpl.jena.rdf.arp.JenaReader ;
 import com.hp.hpl.jena.rdf.model.Model ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/LocatorFile.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/LocatorFile.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/LocatorFile.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/LocatorFile.java Fri May  3 13:40:37 2013
@@ -24,10 +24,10 @@ import java.io.InputStream ;
 import java.security.AccessControlException ;
 
 import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.web.ContentType ;
 import org.apache.jena.atlas.web.TypedInputStream ;
 import org.apache.jena.riot.RDFLanguages ;
+import org.apache.jena.riot.system.IRILib ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 

Copied: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRILib.java (from r1478584, jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRILib.java?p2=jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRILib.java&p1=jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java&r1=1478584&r2=1478787&rev=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/atlas/lib/IRILib.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRILib.java Fri May  3 13:40:37 2013
@@ -16,12 +16,14 @@
  * limitations under the License.
  */
 
-package org.apache.jena.atlas.lib;
+package org.apache.jena.riot.system;
 
 import java.io.File ;
 import java.io.IOException ;
 
 import org.apache.jena.atlas.AtlasException ;
+import org.apache.jena.atlas.lib.Chars ;
+import org.apache.jena.atlas.lib.StrUtils ;
 
 /** Operations related to IRIs */
 public class IRILib
@@ -208,15 +210,15 @@ public class IRILib
         
         // Starts file:///
         if ( fn.startsWith("file:///") )
-            // Good.
-            return encodeFileURL(fn) ;
+            // Assume it's good as return as-is.
+            return fn ;
 
         if ( fn.startsWith("file://") )
         {
             String fn2 = fn.substring("file:/".length()) ;  // Leave one "/"
             return plainFilenameToURL(fn2) ;
         }
-            
+
         // Must be file:/
         String fn2 = fn.substring("file:".length()) ;
         return plainFilenameToURL(fn2) ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRIResolver.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRIResolver.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRIResolver.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/system/IRIResolver.java Fri May  3 13:40:37 2013
@@ -20,7 +20,6 @@ package org.apache.jena.riot.system;
 
 import org.apache.jena.atlas.lib.Cache ;
 import org.apache.jena.atlas.lib.CacheFactory ;
-import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.iri.IRI ;
 import org.apache.jena.iri.IRIException ;
 import org.apache.jena.iri.IRIFactory ;

Modified: jena/trunk/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessorHTTP.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessorHTTP.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessorHTTP.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/apache/jena/web/DatasetGraphAccessorHTTP.java Fri May  3 13:40:37 2013
@@ -35,13 +35,13 @@ import org.apache.http.params.BasicHttpP
 import org.apache.http.params.HttpConnectionParams ;
 import org.apache.http.params.HttpParams ;
 import org.apache.http.params.HttpProtocolParams ;
-import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.atlas.web.TypedInputStream ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.riot.RiotException ;
 import org.apache.jena.riot.WebContent ;
+import org.apache.jena.riot.system.IRILib ;
 import org.apache.jena.riot.web.HttpNames ;
 
 import com.hp.hpl.jena.Jena ;

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotReader.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotReader.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotReader.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/RiotReader.java Fri May  3 13:40:37 2013
@@ -27,7 +27,6 @@ import java.util.Iterator ;
 import org.apache.jena.atlas.io.PeekReader ;
 import org.apache.jena.atlas.iterator.IteratorResourceClosing ;
 import org.apache.jena.atlas.json.io.parser.TokenizerJSON ;
-import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.lib.Sink ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
@@ -42,11 +41,7 @@ import org.apache.jena.riot.lang.LangTur
 import org.apache.jena.riot.lang.PipedQuadsStream ;
 import org.apache.jena.riot.lang.PipedRDFIterator ;
 import org.apache.jena.riot.lang.PipedTriplesStream ;
-import org.apache.jena.riot.system.ErrorHandlerFactory ;
-import org.apache.jena.riot.system.IRIResolver ;
-import org.apache.jena.riot.system.RiotLib ;
-import org.apache.jena.riot.system.StreamRDF ;
-import org.apache.jena.riot.system.StreamRDFLib ;
+import org.apache.jena.riot.system.* ;
 import org.apache.jena.riot.tokens.Tokenizer ;
 import org.apache.jena.riot.tokens.TokenizerFactory ;
 

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/atlas/lib/TestFilenameProcessing.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/atlas/lib/TestFilenameProcessing.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/atlas/lib/TestFilenameProcessing.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/atlas/lib/TestFilenameProcessing.java Fri May  3 13:40:37 2013
@@ -21,7 +21,7 @@ package org.apache.jena.atlas.lib;
 import java.io.File ;
 
 import org.apache.jena.atlas.junit.BaseTest ;
-import org.apache.jena.atlas.lib.IRILib ;
+import org.apache.jena.riot.system.IRILib ;
 import org.junit.Test ;
 
 public class TestFilenameProcessing extends BaseTest

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/adapters/TestFileManager.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/adapters/TestFileManager.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/adapters/TestFileManager.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/adapters/TestFileManager.java Fri May  3 13:40:37 2013
@@ -183,6 +183,8 @@ public class TestFileManager extends Tes
     
     public void testCache2()
     {
+        FileManager.setGlobalFileManager(AdapterFileManager.get()) ;
+        
         FileManager fileManager = FileManager.get() ;
         fileManager.addLocatorFile(testingDir) ;
         fileManager.setModelCaching(true) ;

Modified: jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/lang/TestIRI.java Fri May  3 13:40:37 2013
@@ -28,6 +28,7 @@ import org.apache.jena.riot.ErrorHandler
 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.IRILib ;
 import org.apache.jena.riot.system.RiotLib ;
 import org.junit.Test ;
 
@@ -38,23 +39,23 @@ public class TestIRI extends BaseTest
     
     static IRIFactory factory = IRIFactory.iriImplementation() ;
     
-    @Test public void iri1()  { test("http://example/") ; }
+    @Test public void iri1()  { testIRI("http://example/") ; }
     
     @Test(expected=ErrorHandlerTestLib.ExError.class)
     // No relative IRIs
-    public void iri2()  { test("example") ; }
+    public void iri2()  { testIRI("example") ; }
     
     @Test(expected=ExWarning.class) 
     public void iriErr1()  
-    { test("http:") ; }
+    { testIRI("http:") ; }
 
     @Test(expected=ExWarning.class) 
-    public void iriErr2()  { test("http:///::") ; }
+    public void iriErr2()  { testIRI("http:///::") ; }
 
     @Test(expected=ExWarning.class) 
-    public void iriErr3()  { test("http://example/.") ; }
+    public void iriErr3()  { testIRI("http://example/.") ; }
     
-    private void test(String uriStr)
+    private void testIRI(String uriStr)
     {
         IRI iri = factory.create(uriStr) ;
         CheckerIRI.iriViolations(iri, handler) ;
@@ -74,4 +75,37 @@ public class TestIRI extends BaseTest
         assertEquals("abc", n.getURI()) ;
     }
     
+    @Test public void fileIRI_1()
+    {
+        String uri = testFileIRI("D.ttl"); ; 
+        assertTrue(uri.endsWith("D.ttl")) ;
+    }
+    
+    @Test public void fileIRI_2()
+    {
+        String uri = testFileIRI("file:/D.ttl") ; 
+        assertTrue(uri.endsWith("D.ttl")) ;
+    }
+    
+    @Test public void fileIRI_3()
+    {
+        String uri = testFileIRI("file://D.ttl") ; 
+        assertTrue(uri.endsWith("D.ttl")) ;
+    }
+
+    @Test public void fileIRI_4()
+    {
+        String iri = testFileIRI("file:///D.ttl") ;
+        // Even on windows, this is used as-is so no drive letter. 
+        assertEquals("file:///D.ttl", iri) ;
+    }
+    
+    private static String testFileIRI(String fn)
+    {
+        String uri1 = IRILib.filenameToIRI(fn) ;
+        assertTrue(uri1.startsWith("file:///")) ;
+        String uri2 = IRILib.filenameToIRI(uri1) ;
+        assertEquals(uri1, uri2) ;
+        return uri1 ;
+    }
 }

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/http/DatasetGraphAccessorHTTP.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/http/DatasetGraphAccessorHTTP.java?rev=1478787&r1=1478786&r2=1478787&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/http/DatasetGraphAccessorHTTP.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/http/DatasetGraphAccessorHTTP.java Fri May  3 13:40:37 2013
@@ -35,13 +35,13 @@ import org.apache.http.params.BasicHttpP
 import org.apache.http.params.HttpConnectionParams ;
 import org.apache.http.params.HttpParams ;
 import org.apache.http.params.HttpProtocolParams ;
-import org.apache.jena.atlas.lib.IRILib ;
 import org.apache.jena.atlas.logging.Log ;
 import org.apache.jena.atlas.web.TypedInputStream ;
 import org.apache.jena.fuseki.* ;
 import org.apache.jena.riot.Lang ;
 import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.riot.WebContent ;
+import org.apache.jena.riot.system.IRILib ;
 
 import com.hp.hpl.jena.graph.Graph ;
 import com.hp.hpl.jena.graph.Node ;