Logo
Distributed Genetic Programming Framework
print print

File org.sfc.io.IO.java

Here you can find all the information about the file org.sfc.io.IO.java. You may explore it here or download it onto your local disk.
/*
 * Copyright (c) 2005 Thomas Weise
 * 
 * E-Mail           : tweise@gmx.de
 * Creation Date    : 2005-06-22 16:09:28
 * Original Filename: org.sfc.io.IO.java
 * Version          : 1.0.6
 * Last modification: 2006-06-16
 *                by: Thomas Weise
 * 
 * License          : GNU LESSER GENERAL PUBLIC LICENSE
 *                    Version 2.1, February 1999
 *                    You should have received a copy of this license along
 *                    with this library; if not, write to the Free Software
 *                    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *                    MA 02111-1307, USA or download the license under
 *                    http://www.gnu.org/copyleft/lesser.html.
 *                    
 * Warranty         : This software is provided "as is" without any
 *                    warranty; without even the implied warranty of
 *                    merchantability or fitness for a particular purpose.
 *                    See the Gnu Lesser General Public License for more
 *                    details.
 */

 
package org.sfc.io;

import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.URI;
import java.net.URL;

import org.sfc.parallel.IAbortable;
import org.sfc.scoped.ICloseable;
import org.sfc.scoped.IReferenceCounted;
import org.sfc.utils.ClassContext;
import org.sfc.utils.Typesafe;



/**
 * The singleton class <code>IO</code> comes with easy-to-use methods to
 * access files and streams.
 * 
 * @author Thomas Weise 
 */

public final  class IO
  {

/**
 * The trial constant for files
 */

  private static  final int TRY_FILE            = 1;
/**
 * The trial constant for byte streams, such as <code>InputStream</code>
 * and <code>OutputStream</code>.
 */

  private static  final int TRY_BYTE_STREAM     = TRY_FILE          << 1;
/**
 * The trial constant for character streams, such as <code>Reader</code>
 * and <code>Writer</code>.
 */

  private static  final int TRY_CHAR_STREAM     = TRY_BYTE_STREAM   << 1;
/**
 * The trial constant for urls.
 */

  private static  final int TRY_URL             = TRY_CHAR_STREAM   << 1;
/**
 * The trial constant for uris.
 */

  private static  final int TRY_URI             = TRY_URL           << 1;
/**
 * The trial constant for stream sources.
 */

  private static  final int TRY_STREAM_SOURCE   = TRY_URI           << 1;
/**
 * The trial constant for stream results.
 */

  private static  final int TRY_STREAM_RESULT   = TRY_STREAM_SOURCE << 1;
/**
 * The trial constant for input sources.
 */

  private static  final int TRY_INPUT_SOURCE    = TRY_STREAM_RESULT << 1;
/**
 * The trial constant for resource urls.
 */

  private static  final int TRY_RESOURCE_URL    = TRY_INPUT_SOURCE  << 1;
/**
 * The trial constant for resource streams.
 */

  private static  final int TRY_RESOURCE_STREAM = TRY_RESOURCE_URL  << 1;

/**
 * The class relay count when requesting resources:
 * org.sfc.io.IO
 * org.sfc.io.IO
 */

  static          final int CLASS_RELAY_COUNT   = 2;
  
  
/**
 * Create a new <code>IO</code> instance. You can do this - i can.
 */

  private IO()
    {
    Typesafe.do_not_call();
    }
  
/**
 * Returns the file representation of an object.
 * 
 * @param p_object  The object to get the file representation of.

 * @return  The file representation of the object or null, if
 *          none could be found.
 */

  public  static final File    get_file  (final Object p_object)
    {
    return do_get_file(p_object, -1);
    }
  
/**
 * Close an io-object denoted by.
 * @param p_object  The object to be closed.
 * @return  An IOException that occured when closing the object.
 */

  public  static  final IOException close (final Object p_object)
    {
    try
      {
      if(p_object instanceof InputStream)
        {
        ((InputStream)p_object).close();
        }
      else
        {      
        if(p_object instanceof OutputStream)
          {
          ((OutputStream)p_object).close();
          }
        else
          {
          if(p_object instanceof Reader)
            {
            ((Reader)p_object).close();
            }
          else
            {          
            if(p_object instanceof Writer)
              {
              ((Writer)p_object).close();
              }
            else
              {            
              if(p_object instanceof ICloseable)
                {
                ((ICloseable)p_object).close();
                }
              else
                {
                if(p_object instanceof IReferenceCounted)
                  {
                  ((IReferenceCounted)p_object).release();
                  }
                else
                  {
                  if(p_object instanceof Closeable)
                    {
                    ((Closeable)p_object).close();
                    }
                  else
                    {
                    if(p_object instanceof IAbortable)
                      {
                      ((IAbortable)p_object).abort();                      
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    catch(IOException l_ioe)
      {
      return l_ioe;
      }
    return null;
    }

  
/**
 * Returns the input stream representation of an object.
 * The return value is an instance of <code>IReferenceCounted</code>.
 * You must close it using the <code>relase()</code>-method. The initial
 * reference count is always <code>1</code>, so calling
 * <code>release()</code> on the return value will always lead to the
 * the stream being closed. 
 * @see org.sfc.scoped.IReferenceCounted
 * @see org.sfc.scoped.IReferenceCounted#release()
 * 
 * @param p_object  The object to get the input stream representation of.

 * @return  The input stream representation of the object or null, if
 *          none could be found.
 */

  public static   final ReferenceCountedInputStream get_input_stream
                                                (final Object p_object)
    {
    return do_get_input_stream(p_object, -1);
    }
  
/**
 * Returns the output stream representation of an object.
 * The return value is an instance of <code>IReferenceCounted</code>.
 * You must close it using the <code>relase()</code>-method. The initial
 * reference count is always <code>1</code>, so calling
 * <code>release()</code> on the return value will always lead to the
 * the stream being closed.  * 
 * @see org.sfc.scoped.IReferenceCounted
 * @see org.sfc.scoped.IReferenceCounted#release()
 * 
 * @param p_object  The object to get the output stream representation of.

 * @return  The output stream representation of the object or null, if
 *          none could be found.
 */

  public static   final ReferenceCountedOutputStream  get_output_stream
                                                   (final Object p_object)
    {
    return do_get_output_stream(p_object, -1);
    }
  
/**
 * Returns the reader representation of an object.
 * The return value is an instance of <code>IReferenceCounted</code>.
 * You must close it using the <code>relase()</code>-method. The initial
 * reference count is always <code>1</code>, so calling
 * <code>release()</code> on the return value will always lead to the
 * the stream being closed.  * 
 * @see org.sfc.scoped.IReferenceCounted
 * @see org.sfc.scoped.IReferenceCounted#release()
 * 
 * @param p_object  The object to get the reader representation of.

 * @return  The reader representation of the object or null, if
 *          none could be found.
 */

  public static final ReferenceCountedReader  get_reader(final Object p_object)
    {
    return do_get_reader(p_object, -1);
    }

/**
 * Returns the writer representation of an object.
 * The return value is an instance of <code>IReferenceCounted</code>.
 * You must close it using the <code>relase()</code>-method. The initial
 * reference count is always <code>1</code>, so calling
 * <code>release()</code> on the return value will always lead to the
 * the stream being closed.  * 
 * @see org.sfc.scoped.IReferenceCounted
 * @see org.sfc.scoped.IReferenceCounted#release()
 * 
 * @param p_object  The object to get the writer representation of.
 * @param p_prefered_encoding The prefered encoding, UTF-8, for example,
 *                            or <code>null</code> if it plays no role.
 * @return  The writer representation of the object or null, if
 *          none could be found.          
 * @see #get_writer(Object)
 */

  public static   final ReferenceCountedWriter  get_writer(
                                        final Object p_object,
                                        final String p_prefered_encoding)
    {
    return do_get_writer(p_object, -1, p_prefered_encoding);
    }
  
/**
 * Returns the writer representation of an object.
 * The return value is an instance of <code>IReferenceCounted</code>.
 * You must close it using the <code>relase()</code>-method. The initial
 * reference count is always <code>1</code>, so calling
 * <code>release()</code> on the return value will always lead to the
 * the stream being closed.  * 
 * @see org.sfc.scoped.IReferenceCounted
 * @see org.sfc.scoped.IReferenceCounted#release()
 * 
 * @param p_object  The object to get the writer representation of.
 * @return  The writer representation of the object or null, if
 *          none could be found.
 * @see #get_writer(Object, String)
 */

  public static   final ReferenceCountedWriter  get_writer(
                                                    final Object p_object)
    {
    return do_get_writer(p_object, -1, null);
    }

  
/**
 * Returns the uri representation of an object.
 * 
 * @param p_object  The object to get the uri representation of.

 * @return  The uri representation of the object or null, if
 *          none could be found.
 */

  public static   final URI     get_uri   (final Object p_object)
    {
    return do_get_uri(p_object, -1);
    }
  
  
/**
 * Returns the url representation of an object.
 * 
 * @param p_object  The object to get the url representation of.

 * @return  The url representation of the object or null, if
 *          none could be found.
 */

  public static   final URL get_url (final Object p_object)
    {
    return do_get_url(p_object, -1);
    }
  
/**
 * Returns the resource url representation of an object.
 * 
 * @param p_object      The object to get the resource url representation
 *                      of.
 * @param p_additional  The additional non-resource related classes.
 * 
 * @return  The resource url representation of the object or null, if
 *          none could be found.
 */

  public static   final URL  get_resource_url (final Object p_object,
                                               final int    p_additional)
    {
    return do_get_resource_url(p_object, -1, p_additional);
    }
  
/**
 * Returns the resource url representation of an object.
 * 
 * @param p_object      The object to get the resource url representation
 *                      of.
 * 
 * @return  The resource url representation of the object or null, if
 *          none could be found.
 */

  public static   final URL  get_resource_url (final Object p_object)
    {
    return get_resource_url(p_object, 1);
    }


/**
 * Returns the resource stream representation of an object.
 * The return value is an instance of <code>IReferenceCounted</code>.
 * You must close it using the <code>relase()</code>-method. The initial
 * reference count is always <code>1</code>, so calling
 * <code>release()</code> on the return value will always lead to the
 * the stream being closed.  * 
 * @see org.sfc.scoped.IReferenceCounted
 * @see org.sfc.scoped.IReferenceCounted#release()
 * 
 * @param p_object      The object to get the resource stream representation
 *                      of.
 * @param p_additional  The additional non-resource related classes.
 * 
 * @return  The resource stream representation of the object or null, if
 *          none could be found.
 */

  public static final ReferenceCountedInputStream get_resource_input_stream (
                                         final Object  p_object,
                                         final int     p_additional)
    {    
    return do_get_resource_input_stream(p_object, -1, p_additional);
    }
  
/**
 * Returns the resource stream representation of an object.
 * The return value is an instance of <code>IReferenceCounted</code>.
 * You must close it using the <code>relase()</code>-method. The initial
 * reference count is always <code>1</code>, so calling
 * <code>release()</code> on the return value will always lead to the
 * the stream being closed.  * 
 * @see org.sfc.scoped.IReferenceCounted
 * @see org.sfc.scoped.IReferenceCounted#release()
 * 
 * @param p_object      The object to get the resource stream representation
 *                      of.
 * 
 * @return  The resource stream representation of the object or null, if
 *          none could be found.
 */

  public static final ReferenceCountedInputStream get_resource_input_stream (
                                         final Object  p_object)
    { 
    return get_resource_input_stream(p_object, 1);
    }
  
/**
 * Returns the file representation of an object.
 * 
 * @param p_object  The object to get the file representation of.
 * @param p_trials  The transformations that still can be tried out.
 * 
 * @return  The file representation of the object or null, if
 *          none could be found.
 */

  static  final File    do_get_file  (final Object p_object,
                                            int    p_trials)
    {    
    String  l_s;
    File    l_f;
    URI     l_u;
    URL     l_u2;
    
    if((p_object != null) && ((p_trials & TRY_FILE) != 0))
      {
      p_trials ^= TRY_FILE;
      
abc:
        {
        if(p_object instanceof File)
          {
          l_f = ((File)p_object);
          break abc;
          }
        
        l_u = do_get_uri(p_object, p_trials);
        if(l_u != null) 
          {
          try
            {
            l_f = new File(l_u);
            break abc;
            }
          catch(Throwable l_t)
            {
            //
            }
          }      
        
        l_u2 = do_get_url(p_object, p_trials);
        if((l_u2 != null) &&
           (Files.FILE_PROTOCOL.equals(l_u2.getProtocol()))) 
          {
          l_s = l_u2.getPath();
          if(l_s != null)
            {
            try
              {
              l_f = new File(normalize(l_s));
              break abc;
              }
            catch(Throwable l_t)
              {
              //
              }
            }
          }
      
        
        if(p_object instanceof String)
          {
          try
            {
            l_f = new File((String)p_object);
            break abc;
            }
          catch(Throwable l_t)
            {
            //
            }
          }
        
        return null;
        }
      
      if(l_f != null)
        {
        try        
          {
          return Files.canonicalize(l_f);
          }
        catch(Throwable l_t)
          {
          return null;
          }
        }
      }
      
    return null;
    }
  


/**
 * Returns the input stream representation of an object.
 * 
 * @param p_object  The object to get the input stream representation
 *                  of.
 * @param p_trials  The transformations that still can be tried out.
 * 
 * @return  The input stream representation of the object or null, if
 *          none could be found.
 */

  static  final ReferenceCountedInputStream do_get_input_stream
                                                 (final Object p_object,
                                                        int    p_trials)
    {
    InputStream                 l_is;
    File                        l_file;
    URL                         l_url;
//    DefaultInputStream l_x;
    
    if((p_object != null) && ((p_trials & TRY_BYTE_STREAM) != 0))
      {
      p_trials ^= TRY_BYTE_STREAM;
    
abc:
        {
        if(p_object instanceof InputStream)
          {
          if(p_object instanceof ReferenceCountedInputStream)
            {
//            l_x = ((DefaultInputStream)p_object);
//            l_x.add_ref();
//            return l_x;
            return  ((ReferenceCountedInputStream)p_object);
            }
          l_is = ((InputStream)p_object);          
          break abc;
          }
                    
        l_file = do_get_file(p_object, p_trials);
        if(l_file != null)
          {
          try
            {
            l_is = new FileInputStream(l_file);
            if(l_is != null) break abc;
            }
          catch(Throwable l_t)
            {
            //
            }            
          }
      
        l_url = do_get_url(p_object, p_trials);
        if(l_url != null)
          {
          try
            {
            l_is = l_url.openStream();
            if(l_is != null) break abc;
            }
          catch(Throwable l_t)
            {          
          //
            }
        
          try
            {
            l_is = l_url.openConnection().getInputStream();
            if(l_is != null) break abc;
            }
          catch(Throwable l_t)
            {       
            //
            }        
          }
             
        if(p_object instanceof String)
          {
          try
            {
            l_is = new FileInputStream((String)p_object);
            if(l_is != null) break abc;
            }
          catch(Throwable l_t)
            {          
          //
            }
          }
            
        return null;
        }
      
      return new DefaultInputStream(l_is);
      }
    
    return null;
    }
  
/**
 * Returns the output stream representation of an object.
 * 
 * @param p_object  The object to get the output stream representation
 *                  of.
 * @param p_trials  The transformations that still can be tried out.
 * 
 * @return  The output stream representation of the object or null, if
 *          none could be found.
 */

  static  final ReferenceCountedOutputStream  do_get_output_stream
                                                  (final Object p_object,
                                                         int    p_trials)
    {
    OutputStream                  l_os;
    File                          l_file;
    URL                           l_url;
//    DefaultOutputStream  l_x;
    
    if((p_object != null) && ((p_trials & TRY_BYTE_STREAM) != 0))
      {
      p_trials ^= TRY_BYTE_STREAM;
      
abc:
        {
        if(p_object instanceof OutputStream)
          {
          if(p_object instanceof ReferenceCountedOutputStream)
            {
//            l_x = ((DefaultOutputStream)p_object);
//            l_x.add_ref();
//            return l_x;
            return ((ReferenceCountedOutputStream)p_object);
            }
          l_os = ((OutputStream)p_object);
          break abc;
          }
           
        l_file = do_get_file(p_object, p_trials);
        if(l_file != null)
          {
          try
            {
            l_os = new FileOutputStream(l_file);
            if(l_os != null) break abc;
            }
          catch(Throwable l_t)
            {
            //            
            }
          }
      
        l_url = do_get_url(p_object, p_trials);
        if(l_url != null)
          {        
          try
            {
            l_os = l_url.openConnection().getOutputStream();
            if(l_os != null) break abc;
            }
          catch(Throwable l_t)
            {          
            //
            }        
          }
              
        if(p_object instanceof String)
          {
          try
            {
            l_os = new FileOutputStream((String)p_object);
            if(l_os != null) break abc;
            }
          catch(Throwable l_t)
            {          
          //
            }
          }
        
        return null;
        }
      
      return new DefaultOutputStream(l_os);
      }
    
    return null;
    }
  
/**
 * Returns the reader representation of an object.
 * 
 * @param p_object  The object to get the reader representation of.
 * @param p_trials  The transformations that still can be tried out.
 * 
 * @return  The reader representation of the object or null, if
 *          none could be found.
 */

  static  final ReferenceCountedReader  do_get_reader(final Object p_object,
                                                            int    p_trials)
    {
    File                    l_file;
    Reader                  l_r;
    InputStream             l_is2;
//    ReferenceCountedReader  l_x;
    
    if((p_object != null) && ((p_trials & TRY_CHAR_STREAM) != 0))
      {
      p_trials ^= TRY_CHAR_STREAM;
      
abc:
        {
        if(p_object instanceof Reader)
          {
          if(p_object instanceof ReferenceCountedReader)
            {
//            l_x = ((ReferenceCountedReader)p_object);
//            l_x.add_ref();
//            return l_x;
            return ((ReferenceCountedReader)p_object);
            }
          l_r = ((Reader)p_object);
          break abc;
          }      
      
        l_file = do_get_file(p_object, p_trials);
        if(l_file != null)
          {
          try
            {
            l_r = new FileReader(l_file);
            if(l_r != null) break abc;
            }
          catch(Throwable l_t)
            {
            //
            }
          }
              
        l_is2 = do_get_input_stream(p_object, p_trials);
        if(l_is2 != null)
          {
          l_r = new InputStreamReader(l_is2);
          if(l_r != null) break abc;
          }
        
        return null;
        }
      
      return new DefaultReader(l_r);
      }
    
    return null;
    }
  
/**
 * Returns the writer representation of an object.
 * 
 * @param p_object  The object to get the writer representation of.
 * @param p_trials  The transformations that still can be tried out.
 * @param p_prefered_encoding The prefered encoding, UTF-8, for example,
 *                            or <code>null</code> if it plays no role.
 *                            
 * @return  The writer representation of the object or null, if
 *          none could be found.
 */

  static  final ReferenceCountedWriter  do_get_writer(final Object p_object,
                                                            int    p_trials,
                                             final String p_prefered_encoding)
    {
    File                    l_file;
    Writer                  l_w;
    OutputStream            l_os;
    
    if((p_object != null) && ((p_trials & TRY_CHAR_STREAM) != 0))
      {
      p_trials ^= TRY_CHAR_STREAM;
      l_w       = null;
      
abc:
        {
        if(p_object instanceof Writer)
          {
          if(p_object instanceof ReferenceCountedWriter)
            {
            return ((ReferenceCountedWriter)p_object);
            }
          
          l_w = ((Writer)p_object);
          break abc;
          }                       
                
        l_os = do_get_output_stream(p_object, p_trials);
        if(l_os != null)
          {
          if(p_prefered_encoding != null)
            {
            try
              {
              l_w = new OutputStreamWriter(l_os, p_prefered_encoding);
              }
            catch(UnsupportedEncodingException l_e)
              {
              //
              }
            }
          
          if(l_w == null) l_w = new OutputStreamWriter(l_os);
          if(l_w != null) break abc;
          }
        
        l_file = do_get_file(p_object, p_trials);
        if(l_file != null)
          {          
          try
            {
            l_w = new FileWriter(l_file);
            if(l_w != null) break abc;
            }
          catch(Throwable l_t)
            {          
            //
            }
          }
        
        return null;
        }
      
      return new DefaultWriter(l_w);
      }
    
    return null;
    }
  
/**
 * Returns the url representation of an object.
 * 
 * @param p_object  The object to get the url representation of.
 * @param p_trials  The transformations that still can be tried out.
 * 
 * @return  The url representation of the object or null, if
 *          none could be found.
 */

  static  final URL   do_get_url(final Object p_object,
                                       int    p_trials)
    {
    File    l_f;
    URL     l_u;
    URI     l_u2;
    
    if((p_object != null) && ((p_trials & TRY_URL) != 0))
      {
      p_trials ^= TRY_URL;
      
      if(p_object instanceof URL)
        {
        return ((URL)p_object);
        }
      
      l_f = do_get_file(p_object, p_trials);
      if(l_f != null)
        {
        try
          {
          l_u = l_f.toURL();
          if(l_u != null) return l_u;
          }
        catch(Throwable l_t)
          {    
          //
          }
        }
      l_u2 = do_get_uri(p_object, p_trials);
      if(l_u2 != null)
        {
        try
          {
          l_u = l_u2.toURL();
          if(l_u != null) return l_u;
          }
        catch(Throwable l_t)
          {     
          //
          }
        }
      
      if(p_object instanceof String)
        {
        try
          {
          l_u = new URL((String)p_object);
          if(l_u != null) return l_u;
          }
        catch(Throwable l_t)
          {    
          //
          }
        }        
      }
    return null;
    }
  
/**
 * Returns the uri representation of an object.
 * 
 * @param p_object  The object to get the uri representation of.
 * @param p_trials  The transformations that still can be tried out.
 * 
 * @return  The uri representation of the object or null, if
 *          none could be found.
 */

  static  final URI  do_get_uri(final Object p_object,
                                      int    p_trials)
    {
    File  l_f;
    URI   l_u;
    URL   l_u2;
    
    if((p_object != null) && ((p_trials & TRY_URI) != 0))
      {
      p_trials ^= TRY_URI;
      
      if(p_object instanceof URI)
        {
        return ((URI)p_object);
        }
      
      l_f = do_get_file(p_object, p_trials);
      if(l_f != null)
        {
        l_u = l_f.toURI();
        if(l_u != null) return l_u;
        }
      
      l_u2 = do_get_url(p_object, p_trials);
      if(l_u2 != null)
        {
        try
          {
          l_u = new URI(l_u2.toExternalForm());
          if(l_u != null) return l_u;
          }
        catch(Throwable l_t)
          {     
          //
          }
        }
      }
    return null;
    }
  
/**
 * Returns the url representation of an object.
 * 
 * @param p_object      The object to get the url representation of.
 * @param p_trials      The transformations that still can be tried out.
 * @param p_additional  The additional non-resource related classes.
 * 
 * @return  The url representation of the object or null, if
 *          none could be found.
 */

  static  final URL   do_get_resource_url( final Object p_object,
                                                 int    p_trials,
                                                 int    p_additional)
    {
    String        l_s;
    ClassContext  l_cx;
    URL           l_u;
    int           l_i, l_j;
    
    if((p_object != null) && ((p_trials & TRY_RESOURCE_URL) != 0))
      {
      p_trials ^= TRY_RESOURCE_URL; 
                  
      if(p_object instanceof String)
        {
        l_s  = ((String)p_object);
        l_cx = Typesafe.get_class_context();
        if(l_cx != null)
          {
          l_j = l_cx.size();
          for(l_i = (CLASS_RELAY_COUNT+p_additional); l_i < l_j; l_i++)
            {
            try
              {
              l_u = l_cx.get(l_i).getResource(l_s);
              if(l_u != null) return l_u;
              }
            catch(Throwable l_t)
              {          
              //
              }  
            }                   
          }
        }
      
      l_u = do_get_url(p_object, p_trials);
      if(l_u != null) return l_u;
      }   
    
    return null;
    }
  
  
/**
 * Returns the resource input stream representation of an object.
 * 
 * @param p_object      The object to get the input stream representation
 *                      of.
 * @param p_trials      The transformations that still can be tried out.
 * @param p_additional  The additional non-resource related classes.
 * 
 * @return  The input stream representation of the object or null, if
 *          none could be found.
 */

  static  final ReferenceCountedInputStream do_get_resource_input_stream
                                          (final Object p_object,
                                                 int    p_trials,
                                                 int    p_additional)
    {
    String                      l_s;
    InputStream                 l_is;
    int                         l_i, l_j;
    ClassContext                l_cx;
    ReferenceCountedInputStream l_x;
    
    
    if((p_object != null) && ((p_trials & TRY_RESOURCE_STREAM) != 0))
      {
      p_trials ^= TRY_RESOURCE_STREAM; 
      
        
abc:
        {  
        l_is = null;
        if(p_object instanceof String)
          {
          l_s  = ((String)p_object);
          l_cx = Typesafe.get_class_context();
          if(l_cx != null)
            {
            l_j = l_cx.size();
            for(l_i = (CLASS_RELAY_COUNT+p_additional); l_i < l_j; l_i++)
              {
              try
                {
//System.out.println(l_cx.get_class(l_i));
                l_is = l_cx.get(l_i).getResourceAsStream(l_s);
                if(l_is != null) break abc;
                }
              catch(Throwable l_t)
                {          
                //
                }
              }
            }                   
          }
        }
      
      if(l_is != null) return new DefaultInputStream(l_is);
    
      l_x = do_get_input_stream(p_object, p_trials);
      if(l_x != null) return l_x;
      }    
    
    return null;
    }
  
  

  
/**
 * This method normalizes / and \ that occure inside a string that
 * could be a file name.
 * 
 * @param p_string The string to work on.
 * 
 * @return  The normalized string.
 */

   private static final String normalize (final String p_string)
     {
     if(File.separatorChar != '/')
       {
       return p_string.replace('/', File.separatorChar);
       }
     
     if((File.separatorChar != '\\') &&
        (p_string.indexOf(":\\") > 0))
       {
       return p_string.replace('
\\', File.separatorChar);
       }
     
     return p_string;
     }
                                         
  }

File Information:

file name:IO.java
package:org.sfc.io
qualified name:org.sfc.io.IO.java
file type:Java Source File
download location:download http://dgpf.sourceforge.net/source/org/sfc/io/IO.java
size:31.527 KB (32284 B)
uploaded: 2015-07-22 04:11:12 GMT+0000
last update: 2006-06-16 05:28:45 GMT+0000
last access: 2018-01-20 18:33:16 GMT+0000

statistics online since 2006-01-02.   RSS Feed
Contact us by sending an email to tweise@gmx.de to receive further information, to report errors, or to join our project.
All content on this site (http://dgpf.sourceforge.net/) is LGPL-licensed.
http://dgpf.sourceforge.net/scripts/source/source.php last modified at 2015-07-22 04:10:53 GMT+0000 served at 2018-01-20 18:33:16 GMT+0000.
Valid CSS Valid XHTML 1.1
Valid RSS SourceForge.net Logo