vgritsenko    2003/08/14 20:10:06

  Modified:    java/src/org/apache/xindice/util FileCache.java
  Log:
  Improve exception handling in Filers.
  Add fault code DBE_CANNOT_READ in addition to _DROP and _CREATE.
  Use these fault codes consistently in all filers.
  
  Revision  Changes    Path
  1.6       +23 -26    
xml-xindice/java/src/org/apache/xindice/util/FileCache.java
  
  Index: FileCache.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xindice/java/src/org/apache/xindice/util/FileCache.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FileCache.java    9 Aug 2003 05:01:55 -0000       1.5
  +++ FileCache.java    15 Aug 2003 03:10:06 -0000      1.6
  @@ -61,6 +61,7 @@
   
   import java.io.File;
   import java.io.FileInputStream;
  +import java.io.IOException;
   import java.util.Map;
   import java.util.WeakHashMap;
   
  @@ -70,7 +71,11 @@
    * @version CVS $Revision$, $Date$
    */
   public class FileCache {
  -    private Map cache = new WeakHashMap(); // of FileCacheInfo
  +
  +    /**
  +     * Caches FileCacheInfo objects. Keys are File objects.
  +     */
  +    private final Map cache = new WeakHashMap();
   
       public FileCache() {
       }
  @@ -94,36 +99,28 @@
                   || (file.lastModified() != finfo.lastModified);
       }
   
  -    public final byte[] getFile(String name) {
  +    public final byte[] getFile(String name) throws IOException {
           return getFile(new File(name));
       }
   
  -    public final byte[] getFile(File file) {
  -        boolean reload = true;
  -        FileCacheInfo finfo = (FileCacheInfo) cache.get(file);
  -        long lastmod = file.lastModified();
  +    public final byte[] getFile(File file) throws IOException {
           if (!file.exists()) {
               return null;
           }
  -        
  -        if (finfo != null) {
  -            reload = (lastmod != finfo.lastModified);
  -        }
  -        
  -        if (reload) {
  -            try {
  -                FileInputStream fis = new FileInputStream(file);
  -                byte[] content = new byte[fis.available()];
  -                fis.read(content);
  -                fis.close();
  -                finfo = new FileCacheInfo(file, lastmod, content);
  -                cache.put(file, finfo);
  -                return content;
  -            } catch (Exception e) {
  -                return null;
  -            }
  -        } else
  +
  +        FileCacheInfo finfo = (FileCacheInfo) cache.get(file);
  +        long lastmod = file.lastModified();
  +        if (finfo == null || finfo.lastModified != lastmod) {
  +            FileInputStream fis = new FileInputStream(file);
  +            byte[] content = new byte[fis.available()];
  +            fis.read(content);
  +            fis.close();
  +            finfo = new FileCacheInfo(file, lastmod, content);
  +            cache.put(file, finfo);
  +            return content;
  +        } else {
               return finfo.content;
  +        }
       }
   
       /**
  
  
  

Reply via email to