@FFDCIgnore({ PrivilegedActionException.class })
    protected InputStream getInputStream(final File f, String fileSystemSelector,  String location, String classLoadingSelector ) throws IOException {      
        // check file system first like we used to do
        if (f != null) {
            InputStream is = null;
            try { 
                is = (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
                    @Override
                    public Object run() throws Exception {
                        if (f.exists()) {
                            return new FileInputStream(f);
                        } else {
                            return null;
                        }
                    }
                });
                
            } catch (PrivilegedActionException e1) {
            }
            if (is != null) { 
                locationUsed = fileSystemSelector;
                if (tc.isDebugEnabled()) {
                    Tr.debug(tc, "input stream obtained from file system and locationUsed set to: "+ locationUsed);
                }
                return is;
            }
        }        
        // do the expensive classpath search
        // performant: we're avoiding calling getResource if entry was previously cached.
        URL u = Thread.currentThread().getContextClassLoader().getResource(location);  
        locationUsed = classLoadingSelector;
        if (tc.isDebugEnabled()) {
            Tr.debug(tc, "input stream obtained from classloader and  locationUsed set to: "+ locationUsed);
        }
        if (u != null) {            
            return u.openStream();
        }
        return null;
    }
@ FFDCIgnore ( { PrivilegedActionException . class } ) protected InputStream getInputStream ( final File f , String fileSystemSelector , String location , String classLoadingSelector ) throws IOException { if ( f != null ) { InputStream is = null ; try { is = ( FileInputStream ) AccessController . doPrivileged ( new PrivilegedExceptionAction < Object > ( ) { @ Override public Object run ( ) throws Exception { if ( f . exists ( ) ) { return new FileInputStream ( f ) ; } else { return null ; } } } ) ; } catch ( PrivilegedActionException e1 ) { } if ( is != null ) { locationUsed = fileSystemSelector ; if ( tc . isDebugEnabled ( ) ) { Tr . debug ( tc , "input stream obtained from file system and locationUsed set to: " + locationUsed ) ; } return is ; } } URL u = Thread . currentThread ( ) . getContextClassLoader ( ) . getResource ( location ) ; locationUsed = classLoadingSelector ; if ( tc . isDebugEnabled ( ) ) { Tr . debug ( tc , "input stream obtained from classloader and  locationUsed set to: " + locationUsed ) ; } if ( u != null ) { return u . openStream ( ) ; } return null ; }
open an input stream to either a file on the file system or a url on the classpath.
Update the locationUsed class variable to note where we got the stream from so results of reading it can be cached properly