JarFileStat.java

  1. package org.jruby.util;

  2. import jnr.posix.FileStat;

  3. // TODO needs a better name like ReadOnlyFileStat
  4. class JarFileStat implements FileStat {
  5.     private final FileResource resource;

  6.     public JarFileStat(FileResource resource) {
  7.         this.resource = resource;
  8.     }

  9.     @Override
  10.     public long atime() {
  11.         return resource.lastModified();
  12.     }

  13.     @Override
  14.     public long blocks() {
  15.         return resource.length();
  16.     }

  17.     @Override
  18.     public long blockSize() {
  19.         return 1L;
  20.     }

  21.     @Override
  22.     public long ctime() {
  23.         return resource.lastModified();
  24.     }

  25.     @Override
  26.     public long dev() {
  27.         return -1;
  28.     }

  29.     @Override
  30.     public String ftype() {
  31.         return "zip file entry";
  32.     }

  33.     @Override
  34.     public int gid() {
  35.         return -1;
  36.     }

  37.     @Override
  38.     public boolean groupMember(int i) {
  39.         return false;
  40.     }

  41.     @Override
  42.     public long ino() {
  43.         return -1;
  44.     }

  45.     @Override
  46.     public boolean isBlockDev() {
  47.         return false;
  48.     }

  49.     @Override
  50.     public boolean isCharDev() {
  51.         return false;
  52.     }

  53.     @Override
  54.     public boolean isDirectory() {
  55.         return resource.isDirectory();
  56.     }

  57.     @Override
  58.     public boolean isEmpty() {
  59.         return resource.length() == 0;
  60.     }

  61.     @Override
  62.     public boolean isExecutable() {
  63.         return false;
  64.     }

  65.     @Override
  66.     public boolean isExecutableReal() {
  67.         return false;
  68.     }

  69.     @Override
  70.     public boolean isFifo() {
  71.         return false;
  72.     }

  73.     @Override
  74.     public boolean isFile() {
  75.         return resource.isFile();
  76.     }

  77.     @Override
  78.     public boolean isGroupOwned() {
  79.         return false;
  80.     }

  81.     @Override
  82.     public boolean isIdentical(FileStat fs) {
  83.         return fs instanceof JarFileStat && ((JarFileStat)fs).resource.equals(resource);
  84.     }

  85.     @Override
  86.     public boolean isNamedPipe() {
  87.         return false;
  88.     }

  89.     @Override
  90.     public boolean isOwned() {
  91.         return false;
  92.     }

  93.     @Override
  94.     public boolean isROwned() {
  95.         return false;
  96.     }

  97.     @Override
  98.     public boolean isReadable() {
  99.             return resource.canRead();
  100.         }

  101.         @Override
  102.         public boolean isReadableReal() {
  103.             return resource.canRead();
  104.         }

  105.         @Override
  106.         public boolean isWritable() {
  107.             return false;
  108.         }

  109.         @Override
  110.         public boolean isWritableReal() {
  111.             return false;
  112.         }

  113.         @Override
  114.         public boolean isSetgid() {
  115.             return false;
  116.         }

  117.         @Override
  118.         public boolean isSetuid() {
  119.             return false;
  120.         }

  121.         @Override
  122.         public boolean isSocket() {
  123.             return false;
  124.         }

  125.         @Override
  126.         public boolean isSticky() {
  127.             return false;
  128.         }

  129.         @Override
  130.         public boolean isSymlink() {
  131.             return false;
  132.         }

  133.         @Override
  134.         public int major(long l) {
  135.             return -1;
  136.         }

  137.         @Override
  138.         public int minor(long l) {
  139.             return -1;
  140.         }

  141.         @Override
  142.         public int mode() {
  143.             return -1;
  144.         }

  145.         @Override
  146.         public long mtime() {
  147.             return resource.lastModified();
  148.         }

  149.         @Override
  150.         public int nlink() {
  151.             return -1;
  152.         }

  153.         @Override
  154.         public long rdev() {
  155.             return -1;
  156.         }

  157.         @Override
  158.         public long st_size() {
  159.             return resource.length();
  160.         }

  161.         @Override
  162.         public int uid() {
  163.             return 0;
  164.         }


  165. }