You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by do...@apache.org on 2001/02/26 14:57:45 UTC

cvs commit: jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/masterstore ResettableFileInputStream.java File_Persistent_Stream_Repository.java AbstractFileRepository.java

donaldp     01/02/26 05:57:45

  Modified:    src/java/org/apache/cornerstone/blocks/masterstore
                        File_Persistent_Stream_Repository.java
                        AbstractFileRepository.java
  Added:       src/java/org/apache/cornerstone/blocks/masterstore
                        ResettableFileInputStream.java
  Log:
  Moved ResettableFileInputStream to masterstore from avalon CVS.
  
  Revision  Changes    Path
  1.2       +0 -1      jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/masterstore/File_Persistent_Stream_Repository.java
  
  Index: File_Persistent_Stream_Repository.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/masterstore/File_Persistent_Stream_Repository.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- File_Persistent_Stream_Repository.java	2001/02/22 07:52:16	1.1
  +++ File_Persistent_Stream_Repository.java	2001/02/26 13:57:44	1.2
  @@ -14,7 +14,6 @@
   import java.util.ArrayList;
   import java.util.HashMap;
   import org.apache.cornerstone.services.Store;
  -import org.apache.avalon.util.io.ResettableFileInputStream;
   import org.apache.avalon.util.io.IOUtil;
   
   /**
  
  
  
  1.2       +0 -1      jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/masterstore/AbstractFileRepository.java
  
  Index: AbstractFileRepository.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/masterstore/AbstractFileRepository.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractFileRepository.java	2001/02/22 07:52:16	1.1
  +++ AbstractFileRepository.java	2001/02/26 13:57:44	1.2
  @@ -31,7 +31,6 @@
   import org.apache.phoenix.BlockContext;
   import org.apache.cornerstone.services.Store;
   import org.apache.avalon.util.io.ExtensionFileFilter;
  -import org.apache.avalon.util.io.ResettableFileInputStream;
   
   /**
    * This an abstract class implementing functionality for creating a file-store.
  
  
  
  1.1                  jakarta-avalon-cornerstone/src/java/org/apache/cornerstone/blocks/masterstore/ResettableFileInputStream.java
  
  Index: ResettableFileInputStream.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE file.
   */
  package org.apache.cornerstone.blocks.masterstore;
  
  import java.io.BufferedInputStream;
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  
  /**
   * @author  Federico Barbieri <fe...@apache.org>
   */
  public class ResettableFileInputStream 
      extends InputStream
  {
      protected static final int         DEFAULT_BUFFER_SIZE          = 1024;
  
      protected final String             m_filename;
      protected int                      m_bufferSize;
      protected InputStream              m_inputStream;
      protected long                     m_position;
      protected long                     m_mark;
      protected boolean                  m_isMarkSet;
  
      public ResettableFileInputStream( final File file )
          throws IOException 
      {
          this( file.getCanonicalPath() );
      }
      
      public ResettableFileInputStream( final String filename )
          throws IOException 
      {
          this( filename, DEFAULT_BUFFER_SIZE );
      }
      
      public ResettableFileInputStream( final String filename, final int bufferSize )
          throws IOException 
      {
          m_bufferSize = bufferSize;
          m_filename = filename;
          m_position = 0;
  
          m_inputStream = newStream();
      }
      
      public void mark( final int readLimit )
      {
          m_isMarkSet = true;
          m_mark = m_position;
          m_inputStream.mark( readLimit );
      }
      
      public boolean markSupported()
      {
          return true;
      }
      
      public void reset()
          throws IOException 
      {
          if( !m_isMarkSet )
          {
              throw new IOException( "Unmarked Stream" );
          }
          try 
          {
              m_inputStream.reset();
          } 
          catch( final IOException ioe )
          {
              try
              {
                  m_inputStream.close();
                  m_inputStream = newStream();
                  m_inputStream.skip( m_mark );
                  m_position = m_mark;
              } 
              catch( final Exception e )
              {
                  throw new IOException( "Cannot reset current Stream: " + e.getMessage() );
              }
          }
      }
  
      protected InputStream newStream()
          throws IOException
      {
          return new BufferedInputStream( new FileInputStream( m_filename ), m_bufferSize );
      }
  
      public int available()
          throws IOException
      {
          return m_inputStream.available();
      }
      
      public void close() throws IOException
      {
          m_inputStream.close();
      }
      
      public int read() throws IOException
      {
          m_position++;
          return m_inputStream.read();
      }
      
      public int read( final byte[] bytes, final int offset, final int length )
          throws IOException 
      {
          final int count = m_inputStream.read( bytes, offset, length );
          m_position += count;
          return count;
      }
      
      public long skip( final long count )
          throws IOException 
      {
          m_position += count;
          return m_inputStream.skip( count );
      }
  }