Author: andy
Date: Wed Aug 28 15:11:17 2013
New Revision: 1518255

URL: http://svn.apache.org/r1518255
Log:
JENA-525 : Add cloning operation for the (new) LocationMapper.
Reformat.

Modified:
    
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/stream/LocationMapper.java
    
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/StreamManager.java
    
jena/trunk/jena-arq/src/test/java/org/apache/jena/riot/adapters/TestFileManager.java

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=1518255&r1=1518254&r2=1518255&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
 Wed Aug 28 15:11:17 2013
@@ -98,251 +98,262 @@ public class AdapterFileManager extends 
     // These are in the FileManager for legacy reasons.
     private FileManagerModelCache modelCache = new FileManagerModelCache() ;
 
-    /** Get the global file manager.
+    /**
+     * Get the global file manager.
+     * 
      * @return the global file manager
      */
-    public static AdapterFileManager get()
-    {
+    public static AdapterFileManager get() {
         if ( instance == null )
             instance = makeGlobal() ;
         return instance ;
     }
-    
-    /** Set the global file manager (as returned by get())
-     * If called before any call to get(), then the usual default filemanager 
is not created 
+
+    /**
+     * Set the global file manager (as returned by get()) If called before any
+     * call to get(), then the usual default filemanager is not created
+     * 
      * @param globalFileManager
      */
-    public static void setGlobalFileManager(AdapterFileManager 
globalFileManager)
-    {
+    public static void setGlobalFileManager(AdapterFileManager 
globalFileManager) {
         instance = globalFileManager ;
     }
-    
+
     /** Create an uninitialized FileManager */
-    private AdapterFileManager()
-    { 
+    private AdapterFileManager() {
         streamManager = new StreamManager() ;
     }
-    
-//    /** Create a new file manager that is a copy of another.
-//     * Location mapper and locators chain are copied (the locators are not 
cloned).
-//     * @param filemanager
-//     */
-//    public AdapterFileManager(com.hp.hpl.jena.util.FileManager filemanager)
-//    {
-//        this() ;
-//        Iterator<com.hp.hpl.jena.util.Locator> iter = filemanager.locators() 
;
-//        while ( iter.hasNext() )
-//            streamManager.addLocator(AdapterLib.convert(iter.next())) ;
-//
-//        com.hp.hpl.jena.util.LocationMapper locmap = 
filemanager.getLocationMapper() ;
-//        streamManager.setLocationMapper(AdapterLib.copyConvert(locmap)) ;
-//    }
-    
-    @Override
-    public FileManager clone() { 
-        StreamManager sm = new StreamManager(streamManager) ;
-        // clone LM
+
+    @Override
+    public FileManager clone() {
+        StreamManager sm = streamManager.clone() ;
         AdapterFileManager x = new AdapterFileManager(sm) ;
         return x ;
-        
+
+    }
+
+    public AdapterFileManager(StreamManager streamManager) {
+        this(streamManager, streamManager == null ? null : 
streamManager.getLocationMapper()) ;
     }
 
-    public AdapterFileManager(StreamManager streamManager)
-    {
-        this(streamManager, 
-             streamManager == null ? null : streamManager.getLocationMapper() 
) ;
-    }
-    
-    /** Create a FileManger using a RIOT StreamManager and RIOT LocationMapper 
 */
-    public AdapterFileManager(StreamManager streamManager, LocationMapper 
mapper)
-    { 
+    /** Create a FileManger using a RIOT StreamManager and RIOT LocationMapper 
*/
+    public AdapterFileManager(StreamManager streamManager, LocationMapper 
mapper) {
         if ( streamManager == null )
             streamManager = new StreamManager() ;
-        this.streamManager = streamManager ; 
+        this.streamManager = streamManager ;
         streamManager.setLocationMapper(mapper) ;
     }
-    
+
     /** Create a "standard" FileManager. */
-    public static AdapterFileManager makeGlobal()
-    {
+    public static AdapterFileManager makeGlobal() {
         AdapterFileManager fMgr = new AdapterFileManager(StreamManager.get()) ;
         return fMgr ;
     }
-    
-    /** Return the associate stream manager */ 
-    public StreamManager getStreamManager()         { return streamManager ; } 
-    
+
+    /** Return the associate stream manager */
+    public StreamManager getStreamManager() {
+        return streamManager ;
+    }
+
     /** Set the location mapping */
     @Override
-    public void setLocationMapper(com.hp.hpl.jena.util.LocationMapper mapper)  
 { streamManager.setLocationMapper(AdapterLib.copyConvert(mapper)) ; }
-    
+    public void setLocationMapper(com.hp.hpl.jena.util.LocationMapper mapper) {
+        streamManager.setLocationMapper(AdapterLib.copyConvert(mapper)) ;
+    }
+
     /** Get the location mapping */
     @Override
-    public com.hp.hpl.jena.util.LocationMapper getLocationMapper()             
  { return new AdapterLocationMapper(streamManager.getLocationMapper()) ; }
-    
+    public com.hp.hpl.jena.util.LocationMapper getLocationMapper() {
+        return new AdapterLocationMapper(streamManager.getLocationMapper()) ;
+    }
+
     /** Return an iterator over all the handlers */
     @Override
-    public Iterator<com.hp.hpl.jena.util.Locator> locators()    { throw new 
UnsupportedOperationException() ; }
+    public Iterator<com.hp.hpl.jena.util.Locator> locators() {
+        throw new UnsupportedOperationException() ;
+    }
 
-    /** Remove a locator */ 
+    /** Remove a locator */
     @Override
-    public void remove(com.hp.hpl.jena.util.Locator loc)                       
      { throw new UnsupportedOperationException() ; }
+    public void remove(com.hp.hpl.jena.util.Locator loc) {
+        throw new UnsupportedOperationException() ;
+    }
 
-    /** Add a locator to the end of the locators list */ 
+    /** Add a locator to the end of the locators list */
     @Override
-    public void addLocator(com.hp.hpl.jena.util.Locator oldloc)
-    {
+    public void addLocator(com.hp.hpl.jena.util.Locator oldloc) {
         Locator loc = AdapterLib.convert(oldloc) ;
-        log.debug("Add location: "+loc.getName()) ;
-        streamManager.addLocator(loc) ; }
+        log.debug("Add location: " + loc.getName()) ;
+        streamManager.addLocator(loc) ;
+    }
 
     /** Add a file locator */
     @Override
-    public void addLocatorFile() { addLocatorFile(null) ; } 
+    public void addLocatorFile() {
+        addLocatorFile(null) ;
+    }
 
-    /** Add a file locator which uses dir as its working directory */ 
+    /** Add a file locator which uses dir as its working directory */
     @Override
-    public void addLocatorFile(String dir)
-    {
+    public void addLocatorFile(String dir) {
         LocatorFile fLoc = new LocatorFile(dir) ;
         streamManager.addLocator(fLoc) ;
     }
-    
-    /** Add a class loader locator */ 
+
+    /** Add a class loader locator */
     @Override
-    public void addLocatorClassLoader(ClassLoader cLoad)
-    {
+    public void addLocatorClassLoader(ClassLoader cLoad) {
         LocatorClassLoader cLoc = new LocatorClassLoader(cLoad) ;
         streamManager.addLocator(cLoc) ;
     }
 
     /** Add a URL locator */
     @Override
-    public void addLocatorURL()
-    {
+    public void addLocatorURL() {
         Locator loc = new LocatorURL() ;
         streamManager.addLocator(loc) ;
     }
 
     /** Add a zip file locator */
     @Override
-    public void addLocatorZip(String zfn)
-    {
+    public void addLocatorZip(String zfn) {
         Locator loc = new LocatorZip(zfn) ;
         streamManager.addLocator(loc) ;
     }
-    
+
     // -------- Cache operations (start)
     /** Reset the model cache */
     @Override
-    public void resetCache()                        { modelCache.resetCache() 
; }
+    public void resetCache() {
+        modelCache.resetCache() ;
+    }
 
-    /** Change the state of model cache : does not clear the cache */ 
+    /** Change the state of model cache : does not clear the cache */
     @Override
-    public void setModelCaching(boolean state)      { 
modelCache.setModelCaching(state) ; }
-    
+    public void setModelCaching(boolean state) {
+        modelCache.setModelCaching(state) ;
+    }
+
     /** return whether caching is on of off */
     @Override
-    public boolean isCachingModels()               { return 
modelCache.isCachingModels() ; }
-    
-    /** Read out of the cache - return null if not in the cache */ 
+    public boolean isCachingModels() {
+        return modelCache.isCachingModels() ;
+    }
+
+    /** Read out of the cache - return null if not in the cache */
     @Override
-    public Model getFromCache(String filenameOrURI) { return 
modelCache.getFromCache(filenameOrURI) ; }
+    public Model getFromCache(String filenameOrURI) {
+        return modelCache.getFromCache(filenameOrURI) ;
+    }
 
     @Override
-    public boolean hasCachedModel(String filenameOrURI)
-    { return modelCache.hasCachedModel(filenameOrURI) ; } 
-    
+    public boolean hasCachedModel(String filenameOrURI) {
+        return modelCache.hasCachedModel(filenameOrURI) ;
+    }
+
     @Override
-    public void addCacheModel(String uri, Model m)  { 
modelCache.addCacheModel(uri, m) ; }
+    public void addCacheModel(String uri, Model m) {
+        modelCache.addCacheModel(uri, m) ;
+    }
 
     @Override
-    public void removeCacheModel(String uri)        { 
modelCache.removeCacheModel(uri) ; }
+    public void removeCacheModel(String uri) {
+        modelCache.removeCacheModel(uri) ;
+    }
+
     // -------- Cache operations (end)
 
     @Override
-    protected Model readModelWorker(Model model, String filenameOrURI, String 
baseURI, String syntax)
-    {
-        // Doesn't call open() - we want to make the synatx guess based on the 
mapped URI.
+    protected Model readModelWorker(Model model, String filenameOrURI, String 
baseURI, String syntax) {
+        // Doesn't call open() - we want to make the synatx guess based on the
+        // mapped URI.
         String mappedURI = mapURI(filenameOrURI) ;
 
-        if ( log.isDebugEnabled() && ! mappedURI.equals(filenameOrURI) )
-            log.debug("Map: "+filenameOrURI+" => "+mappedURI) ;
+        if ( log.isDebugEnabled() && !mappedURI.equals(filenameOrURI) )
+            log.debug("Map: " + filenameOrURI + " => " + mappedURI) ;
 
-        if ( syntax == null && baseURI == null && mappedURI.startsWith( 
"http:" ) )
-        {
+        if ( syntax == null && baseURI == null && 
mappedURI.startsWith("http:") ) {
             // No syntax, no baseURI, HTTP URL ==> use content negotiation
             model.read(mappedURI) ;
             return model ;
         }
-        
-        if ( syntax == null )
-        {
+
+        if ( syntax == null ) {
             syntax = FileUtils.guessLang(mappedURI) ;
             if ( syntax == null || syntax.equals("") )
                 syntax = FileUtils.langXML ;
-            if ( log.isDebugEnabled() ) 
-                log.debug("Syntax guess: "+syntax);
+            if ( log.isDebugEnabled() )
+                log.debug("Syntax guess: " + syntax) ;
         }
 
         if ( baseURI == null )
             baseURI = chooseBaseURI(filenameOrURI) ;
 
         TypedInputStream in = streamManager.openNoMapOrNull(mappedURI) ;
-        if ( in == null )
-        {
+        if ( in == null ) {
             if ( log.isDebugEnabled() )
-                log.debug("Failed to locate '"+mappedURI+"'") ;
-            throw new NotFoundException("Not found: "+filenameOrURI) ;
+                log.debug("Failed to locate '" + mappedURI + "'") ;
+            throw new NotFoundException("Not found: " + filenameOrURI) ;
         }
-        if ( in.getMediaType() != null )
-        {
+        if ( in.getMediaType() != null ) {
             // XXX
-            //syntax
+            // syntax
         }
         model.read(in, baseURI, syntax) ;
-        try { in.close(); } catch (IOException ex) {}
+        try {
+            in.close() ;
+        } catch (IOException ex) {}
         return model ;
     }
 
-    private static String chooseBaseURI(String baseURI)
-    {
+    private static String chooseBaseURI(String baseURI) {
         // Use IRILib.filenameToIRI
         String scheme = FileUtils.getScheme(baseURI) ;
-        
-        if ( scheme != null && ! scheme.equals("file") )
+
+        if ( scheme != null && !scheme.equals("file") )
             // Not file: - leave alone.
             return baseURI ;
-        
+
         return IRILib.filenameToIRI(baseURI) ;
     }
-    
-    /** Open a file using the locators of this FileManager 
-     *  Throws RiotNotFoundException if not found.*/ 
+
+    /**
+     * Open a file using the locators of this FileManager Throws
+     * RiotNotFoundException if not found.
+     */
     @Override
-    public InputStream open(String filenameOrURI)
-    { 
+    public InputStream open(String filenameOrURI) {
         return streamManager.open(filenameOrURI) ;
     }
-    
+
     /** Apply the mapping of a filename or URI */
     @Override
-    public String mapURI(String filenameOrURI)                  { return 
streamManager.mapURI(filenameOrURI) ; }
-    
-    /** Open a file using the locators of this FileManager 
-     *  but without location mapping.  Throws RiotNotFoundException if not 
found.*/ 
-    @Override
-    public InputStream openNoMap(String filenameOrURI)          { return 
streamManager.openNoMap(filenameOrURI) ; }
-
-    /** Open a file using the locators of this FileManager 
-     *  without location mapping. Return null if not found
-     */ 
+    public String mapURI(String filenameOrURI) {
+        return streamManager.mapURI(filenameOrURI) ;
+    }
+
+    /**
+     * Open a file using the locators of this FileManager but without location
+     * mapping. Throws RiotNotFoundException if not found.
+     */
+    @Override
+    public InputStream openNoMap(String filenameOrURI) {
+        return streamManager.openNoMap(filenameOrURI) ;
+    }
+
+    /**
+     * Open a file using the locators of this FileManager without location
+     * mapping. Return null if not found
+     */
     @Override
-    public TypedStream openNoMapOrNull(String filenameOrURI)    { return 
AdapterLib.convert(streamManager.openNoMapOrNull(filenameOrURI)) ; }
-    
+    public TypedStream openNoMapOrNull(String filenameOrURI) {
+        return 
AdapterLib.convert(streamManager.openNoMapOrNull(filenameOrURI)) ;
+    }
+
     /** @deprecated Use mapURI */
     @Deprecated
     @Override
-    public String remap(String filenameOrURI)
-    { return mapURI(filenameOrURI) ; }
+    public String remap(String filenameOrURI) {
+        return mapURI(filenameOrURI) ;
+    }
 }

Modified: 
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/LocationMapper.java
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/LocationMapper.java?rev=1518255&r1=1518254&r2=1518255&view=diff
==============================================================================
--- 
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/LocationMapper.java
 (original)
+++ 
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/LocationMapper.java
 Wed Aug 28 15:11:17 2013
@@ -51,162 +51,152 @@ public class LocationMapper
     /** Create a LocationMapper with no mapping yet */
     public LocationMapper() { }
     
-    /** Create a LocationMapper made like another one
-     * This is a deep copy of the location and prefix maps..*/
-    public LocationMapper(LocationMapper locMapper)
-    {
-        altLocations.putAll(locMapper.altLocations) ;
-        altPrefixes.putAll(locMapper.altPrefixes) ;
+    /** Deep copy of location and prefix maps */
+    @Override
+    public LocationMapper clone() {
+        return clone(this) ;
     }
-    
-    public void copyFrom(LocationMapper lmap2)
-    {
+
+    private static LocationMapper clone(LocationMapper other) {
+        LocationMapper mapper = new LocationMapper() ;
+        mapper.altLocations.putAll(other.altLocations) ;
+        mapper.altPrefixes.putAll(other.altPrefixes) ;
+        return mapper ;
+    }
+
+    public void copyFrom(LocationMapper lmap2) {
         this.altLocations.putAll(lmap2.altLocations) ;
         this.altPrefixes.putAll(lmap2.altPrefixes) ;
     }
-    
-    public String altMapping(String uri)
-    {
+
+    public String altMapping(String uri) {
         return altMapping(uri, uri) ;
     }
 
-    /** Apply mappings: first try for an exact alternative location, then
-     *  try to remap by prefix, finally, try the special case of filenames
-     *  in a specific base directory. 
+    /**
+     * Apply mappings: first try for an exact alternative location, then try to
+     * remap by prefix, finally, try the special case of filenames in a 
specific
+     * base directory.
+     * 
      * @param uri
      * @param otherwise
      * @return The alternative location choosen
      */
-    public String altMapping(String uri, String otherwise)
-    {
-        if ( altLocations.containsKey(uri)) 
+    public String altMapping(String uri, String otherwise) {
+        if ( altLocations.containsKey(uri) )
             return altLocations.get(uri) ;
         String newStart = null ;
         String oldStart = null ;
-        for ( Iterator<String> iter = altPrefixes.keySet().iterator() ; 
iter.hasNext() ;)
-        {
+        for (Iterator<String> iter = altPrefixes.keySet().iterator(); 
iter.hasNext();) {
             String prefix = iter.next() ;
-            if ( uri.startsWith(prefix) )
-            {
+            if ( uri.startsWith(prefix) ) {
                 String s = altPrefixes.get(prefix) ;
-                if ( newStart == null || newStart.length() < s.length() )
-                {
+                if ( newStart == null || newStart.length() < s.length() ) {
                     oldStart = prefix ;
                     newStart = s ;
                 }
             }
         }
-        
+
         if ( newStart != null )
-            return newStart+uri.substring(oldStart.length()) ;
-        
+            return newStart + uri.substring(oldStart.length()) ;
+
         return otherwise ;
     }
-    
 
-    public void addAltEntry(String uri, String alt)
-    {
+    public void addAltEntry(String uri, String alt) {
         altLocations.put(uri, alt) ;
     }
 
-    public void addAltPrefix(String uriPrefix, String altPrefix) 
-    {
+    public void addAltPrefix(String uriPrefix, String altPrefix) {
         altPrefixes.put(uriPrefix, altPrefix) ;
     }
 
-    /** Iterate over all the entries registered */ 
-    public Iterator<String> listAltEntries()  { return 
altLocations.keySet().iterator() ; } 
-    /** Iterate over all the prefixes registered */ 
-    public Iterator<String> listAltPrefixes() { return 
altPrefixes.keySet().iterator() ; } 
-    
-    public void removeAltEntry(String uri)
-    {
+    /** Iterate over all the entries registered */
+    public Iterator<String> listAltEntries() {
+        return altLocations.keySet().iterator() ;
+    }
+
+    /** Iterate over all the prefixes registered */
+    public Iterator<String> listAltPrefixes() {
+        return altPrefixes.keySet().iterator() ;
+    }
+
+    public void removeAltEntry(String uri) {
         altLocations.remove(uri) ;
     }
 
-    public void removeAltPrefix(String uriPrefix) 
-    {
+    public void removeAltPrefix(String uriPrefix) {
         altPrefixes.remove(uriPrefix) ;
     }
-    public String getAltEntry(String uri)
-    {
+
+    public String getAltEntry(String uri) {
         return altLocations.get(uri) ;
     }
 
-    public String getAltPrefix(String uriPrefix) 
-    {
+    public String getAltPrefix(String uriPrefix) {
         return altPrefixes.get(uriPrefix) ;
     }
-   
+
     @Override
-    public int hashCode()
-    {
+    public int hashCode() {
         int x = 0 ;
         x = x ^ altLocations.hashCode() ;
         x = x ^ altPrefixes.hashCode() ;
         return x ;
     }
-    
+
     @Override
-    public boolean equals(Object obj)
-    {
-        if ( ! ( obj instanceof LocationMapper ) )
+    public boolean equals(Object obj) {
+        if ( !(obj instanceof LocationMapper) )
             return false ;
         LocationMapper other = (LocationMapper)obj ;
-        
-        if ( ! this.altLocations.equals(other.altLocations) )
+
+        if ( !this.altLocations.equals(other.altLocations) )
             return false ;
-        
-        if ( ! this.altPrefixes.equals(other.altPrefixes) )
+
+        if ( !this.altPrefixes.equals(other.altPrefixes) )
             return false ;
-        return true ; 
+        return true ;
     }
-    
+
     @Override
-    public String toString()
-    {
+    public String toString() {
         String s = "" ;
-        for ( Iterator<String> iter = altLocations.keySet().iterator() ; 
iter.hasNext() ; )
-        {
+        for (Iterator<String> iter = altLocations.keySet().iterator(); 
iter.hasNext();) {
             String k = iter.next() ;
             String v = altLocations.get(k) ;
-            s = s+"(Loc:"+k+"=>"+v+") " ;
+            s = s + "(Loc:" + k + "=>" + v + ") " ;
         }
 
-        for ( Iterator<String> iter = altPrefixes.keySet().iterator() ; 
iter.hasNext() ; )
-        {
+        for (Iterator<String> iter = altPrefixes.keySet().iterator(); 
iter.hasNext();) {
             String k = iter.next() ;
             String v = altPrefixes.get(k) ;
-            s = s+"(Prefix:"+k+"=>"+v+") " ;
+            s = s + "(Prefix:" + k + "=>" + v + ") " ;
         }
         return s ;
     }
-    
-    public Model toModel()
-    {
+
+    public Model toModel() {
         Model m = ModelFactory.createDefaultModel() ;
         m.setNsPrefix("lmap", 
"http://jena.hpl.hp.com/2004/08/location-mapping#";) ;
         toModel(m) ;
         return m ;
     }
-    
-    public void toModel(Model model)
-    {
-        
-        for ( Iterator<String> iter = altLocations.keySet().iterator() ; 
iter.hasNext() ; )
-        {
+
+    public void toModel(Model model) {
+        for (Iterator<String> iter = altLocations.keySet().iterator(); 
iter.hasNext();) {
             Resource r = model.createResource() ;
             Resource e = model.createResource() ;
             model.add(r, LocationMappingVocab.mapping, e) ;
-            
+
             String k = iter.next() ;
             String v = altLocations.get(k) ;
             model.add(e, LocationMappingVocab.name, k) ;
             model.add(e, LocationMappingVocab.altName, v) ;
         }
 
-        for ( Iterator<String> iter = altPrefixes.keySet().iterator() ; 
iter.hasNext() ; )
-        {
+        for (Iterator<String> iter = altPrefixes.keySet().iterator(); 
iter.hasNext();) {
             Resource r = model.createResource() ;
             Resource e = model.createResource() ;
             model.add(r, LocationMappingVocab.mapping, e) ;

Modified: 
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/StreamManager.java
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/StreamManager.java?rev=1518255&r1=1518254&r2=1518255&view=diff
==============================================================================
--- 
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/StreamManager.java
 (original)
+++ 
jena/trunk/jena-arq/src/main/java/org/apache/jena/riot/stream/StreamManager.java
 Wed Aug 28 15:11:17 2013
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.jena.riot.stream;
+package org.apache.jena.riot.stream ;
 
 import java.util.ArrayList ;
 import java.util.Collections ;
@@ -27,38 +27,44 @@ import org.apache.jena.riot.RiotNotFound
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
-/** Management of stream opening, including redirecting through a location 
mapper
+/**
+ * Management of stream opening, including redirecting through a location 
mapper
  * whereby a name (e.g. URL) is redirected to another name (e.g. local file).
  * Includes filename to IRI, handling ".gz" and "-"
  */
 
-public class StreamManager
-{
+public class StreamManager {
     // Need to combine with IO to do the .gz and "-" things.
-    
-    private static Logger log = LoggerFactory.getLogger(StreamManager.class) ;
-    
-    public static boolean logAllLookups = true ; 
-    
-    private List<Locator> handlers = new ArrayList<Locator>() ;
-    private LocationMapper mapper = null ;
-    
+
+    private static Logger        log           = 
LoggerFactory.getLogger(StreamManager.class) ;
+
+    public static boolean        logAllLookups = true ;
+
+    private List<Locator>        handlers      = new ArrayList<Locator>() ;
+    private LocationMapper       mapper        = null ;
+
     private static StreamManager globalStreamManager ;
-    
+
     public StreamManager() {}
-    
-    public StreamManager(StreamManager other) {
-        handlers.addAll(other.handlers) ;
-        mapper = other.mapper ;
-    }
-    
-    /** Return a default configuration StreamManager 
-     *  with a {@link LocatorFile}, 
-     *  {@link LocatorURL},
-     *  and {@link LocatorClassLoader}
+
+    /** Create a deep copy of this StreamManager */
+    @Override
+    public StreamManager clone() {
+        return clone(this) ;
+    }
+
+    private static StreamManager clone(StreamManager other) {
+        StreamManager sm = new StreamManager() ;
+        sm.handlers.addAll(other.handlers) ;
+        sm.mapper = other.mapper == null ? null : other.mapper.clone() ;
+        return sm ;
+    }
+
+    /**
+     * Return a default configuration StreamManager with a {@link LocatorFile},
+     * {@link LocatorURL}, and {@link LocatorClassLoader}
      */
-    public static StreamManager makeDefaultStreamManager()
-    {
+    public static StreamManager makeDefaultStreamManager() {
         StreamManager streamManager = new StreamManager() ;
         streamManager.addLocator(new LocatorFile(null)) ;
         streamManager.addLocator(new LocatorURL()) ;
@@ -66,99 +72,106 @@ public class StreamManager
         streamManager.setLocationMapper(JenaIOEnvironment.getLocationMapper()) 
;
         return streamManager ;
     }
+
+    public static StreamManager get() {
+        return globalStreamManager ;
+    }
+
+    public static void setGlobal(StreamManager streamManager) {
+        globalStreamManager = streamManager ;
+    }
     
-    public static StreamManager get()                           { return 
globalStreamManager ; }
-    public static void setGlobal(StreamManager streamManager)   { 
globalStreamManager = streamManager; }
     static { setGlobal(makeDefaultStreamManager()) ; }
-    
-    /** Open a file using the locators of this FileManager.
-     *  Returns null if not found.
+
+    /**
+     * Open a file using the locators of this FileManager. Returns null if not
+     * found.
      */
-    public TypedInputStream open(String filenameOrURI)
-    {
-        if ( log.isDebugEnabled())
-            log.debug("open("+filenameOrURI+")") ;
-        
+    public TypedInputStream open(String filenameOrURI) {
+        if ( log.isDebugEnabled() )
+            log.debug("open(" + filenameOrURI + ")") ;
+
         String uri = mapURI(filenameOrURI) ;
-        
-        if ( log.isDebugEnabled() && ! uri.equals(filenameOrURI) )
-            log.debug("open: mapped to "+uri) ;
-        
+
+        if ( log.isDebugEnabled() && !uri.equals(filenameOrURI) )
+            log.debug("open: mapped to " + uri) ;
+
         return openNoMapOrNull(uri) ;
     }
 
     /** Apply the mapping of a filename or URI */
-    public String mapURI(String filenameOrURI)
-    {
+    public String mapURI(String filenameOrURI) {
         if ( mapper == null )
-            return filenameOrURI ; 
-        
+            return filenameOrURI ;
+
         String uri = mapper.altMapping(filenameOrURI, null) ;
-    
-        if ( uri == null )
-        {
+
+        if ( uri == null ) {
             if ( StreamManager.logAllLookups && log.isDebugEnabled() )
-                log.debug("Not mapped: "+filenameOrURI) ;
+                log.debug("Not mapped: " + filenameOrURI) ;
             uri = filenameOrURI ;
-        }
-        else
-        {
+        } else {
             if ( log.isDebugEnabled() )
-                log.debug("Mapped: "+filenameOrURI+" => "+uri) ;
+                log.debug("Mapped: " + filenameOrURI + " => " + uri) ;
         }
         return uri ;
     }
 
-    /** Open a file using the locators of this FileManager 
-     *  but without location mapping.  Throws RiotNotFoundException if not 
found.*/ 
-    public TypedInputStream openNoMap(String filenameOrURI)
-    {
+    /**
+     * Open a file using the locators of this FileManager but without location
+     * mapping. Throws RiotNotFoundException if not found.
+     */
+    public TypedInputStream openNoMap(String filenameOrURI) {
         TypedInputStream in = openNoMapOrNull(filenameOrURI) ;
         if ( in == null )
             throw new RiotNotFoundException(filenameOrURI) ;
         return in ;
     }
 
-    /** Open a file using the locators of this FileManager 
-     *  without location mapping. Return null if not found
-     */ 
-    
-    public TypedInputStream openNoMapOrNull(String filenameOrURI)
-    {
-        for (Locator loc : handlers)
-        {
+    /**
+     * Open a file using the locators of this FileManager without location
+     * mapping. Return null if not found
+     */
+
+    public TypedInputStream openNoMapOrNull(String filenameOrURI) {
+        for (Locator loc : handlers) {
             TypedInputStream in = loc.open(filenameOrURI) ;
-            if ( in != null )
-            {
+            if ( in != null ) {
                 if ( log.isDebugEnabled() )
-                    log.debug("Found: "+filenameOrURI+" ("+loc.getName()+")") ;
+                    log.debug("Found: " + filenameOrURI + " (" + loc.getName() 
+ ")") ;
                 return in ;
             }
         }
-        return null; 
+        return null ;
     }
 
     /** Set the location mapping */
-    public void setLocationMapper(LocationMapper _mapper) { mapper = _mapper ; 
}
-    
+    public void setLocationMapper(LocationMapper _mapper) {
+        mapper = _mapper ;
+    }
+
     /** Get the location mapping */
-    public LocationMapper getLocationMapper() { return mapper ; }
-    
+    public LocationMapper getLocationMapper() {
+        return mapper ;
+    }
+
     /** Return an immutable list of all the handlers */
-    public List<Locator> locators() { return 
Collections.unmodifiableList(handlers) ; }
+    public List<Locator> locators() {
+        return Collections.unmodifiableList(handlers) ;
+    }
 
-    /** Remove a locator */ 
-    public void remove(Locator loc) { handlers.remove(loc) ; }
+    /** Remove a locator */
+    public void remove(Locator loc) {
+        handlers.remove(loc) ;
+    }
 
-    /** Remove all locators */ 
-    public void clearLocators()
-    {
+    /** Remove all locators */
+    public void clearLocators() {
         handlers.clear() ;
     }
 
-    /** Add a locator to the end of the locators list */ 
-    public void addLocator(Locator loc)
-    {
+    /** Add a locator to the end of the locators list */
+    public void addLocator(Locator loc) {
         handlers.add(loc) ;
     }
 }

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=1518255&r1=1518254&r2=1518255&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
 Wed Aug 28 15:11:17 2013
@@ -132,7 +132,7 @@ public class TestFileManager extends Tes
     public void testFileManagerClone()
     {
         FileManager fileManager1 = new FileManager() ;
-        FileManager fileManager2 = new FileManager(fileManager1) ;
+        FileManager fileManager2 = fileManager1.clone() ;
         
         // Should not affect fileManager2
         fileManager1.addLocatorFile() ;


Reply via email to