Class CAFS

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.lang.Iterable<SHA1>

    public class CAFS
    extends java.lang.Object
    implements java.io.Closeable, java.lang.Iterable<SHA1>
    CAFS implements a SHA-1 based file store. The basic idea is that every file in the universe has a unique SHA-1. Hard to believe but people smarter than me have come to that conclusion. This class maintains a compressed store of SHA-1 identified files. So if you have the SHA-1, you can get the contents. This makes it easy to store a SHA-1 instead of the whole file or maintain a naming scheme. An added advantage is that it is always easy to verify you get the right stuff. The SHA-1 Content Addressable File Store is the core underlying idea in Git.
    • Constructor Summary

      Constructors 
      Constructor Description
      CAFS​(java.io.File home, boolean create)
      Constructor for a Content Addressable File Store
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      boolean exists​(byte[] sha1)  
      boolean isEmpty()  
      java.util.Iterator<SHA1> iterator()  
      java.io.InputStream read​(SHA1 sha1)
      Read the contents of a sha 1 key.
      void reindex()  
      SHA1 write​(java.io.InputStream in)
      Store an input stream in the CAFS while calculating and returning the SHA-1 code.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • Constructor Detail

      • CAFS

        public CAFS​(java.io.File home,
                    boolean create)
             throws java.lang.Exception
        Constructor for a Content Addressable File Store
        Parameters:
        home -
        create -
        Throws:
        java.lang.Exception
    • Method Detail

      • write

        public SHA1 write​(java.io.InputStream in)
                   throws java.lang.Exception
        Store an input stream in the CAFS while calculating and returning the SHA-1 code.
        Parameters:
        in - The input stream to store.
        Returns:
        The SHA-1 code.
        Throws:
        java.lang.Exception - if anything goes wrong
      • read

        public java.io.InputStream read​(SHA1 sha1)
                                 throws java.lang.Exception
        Read the contents of a sha 1 key.
        Parameters:
        sha1 - The key
        Returns:
        An Input Stream on the content or null of key not found
        Throws:
        java.lang.Exception
      • exists

        public boolean exists​(byte[] sha1)
                       throws java.lang.Exception
        Throws:
        java.lang.Exception
      • reindex

        public void reindex()
                     throws java.lang.Exception
        Throws:
        java.lang.Exception
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • iterator

        public java.util.Iterator<SHA1> iterator()
        Specified by:
        iterator in interface java.lang.Iterable<SHA1>
      • isEmpty

        public boolean isEmpty()
                        throws java.io.IOException
        Throws:
        java.io.IOException