home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / misc / MetaIndex.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.3 KB  |  111 lines

  1. package sun.misc;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.List;
  10. import java.util.Map;
  11.  
  12. public class MetaIndex {
  13.    private static volatile Map<File, MetaIndex> jarMap;
  14.    private String[] contents;
  15.    private boolean isClassOnlyJar;
  16.  
  17.    public static MetaIndex forJar(File var0) {
  18.       return (MetaIndex)getJarMap().get(var0);
  19.    }
  20.  
  21.    public static synchronized void registerDirectory(File var0) {
  22.       File var1 = new File(var0, "meta-index");
  23.       if (var1.exists()) {
  24.          try {
  25.             BufferedReader var2 = new BufferedReader(new FileReader(var1));
  26.             Object var3 = null;
  27.             String var4 = null;
  28.             boolean var5 = false;
  29.             ArrayList var6 = new ArrayList();
  30.             Map var7 = getJarMap();
  31.             var0 = var0.getCanonicalFile();
  32.             String var10 = var2.readLine();
  33.             if (var10 == null || !var10.equals("% VERSION 2")) {
  34.                var2.close();
  35.                return;
  36.             }
  37.  
  38.             while((var10 = var2.readLine()) != null) {
  39.                switch (var10.charAt(0)) {
  40.                   case '!':
  41.                   case '#':
  42.                   case '@':
  43.                      if (var4 != null && var6.size() > 0) {
  44.                         var7.put(new File(var0, var4), new MetaIndex(var6, var5));
  45.                         var6.clear();
  46.                      }
  47.  
  48.                      var4 = var10.substring(2);
  49.                      if (var10.charAt(0) == '!') {
  50.                         var5 = true;
  51.                      } else if (var5) {
  52.                         var5 = false;
  53.                      }
  54.                   case '%':
  55.                      break;
  56.                   default:
  57.                      var6.add(var10);
  58.                }
  59.             }
  60.  
  61.             if (var4 != null && var6.size() > 0) {
  62.                var7.put(new File(var0, var4), new MetaIndex(var6, var5));
  63.             }
  64.  
  65.             var2.close();
  66.          } catch (IOException var8) {
  67.          }
  68.       }
  69.  
  70.    }
  71.  
  72.    public boolean mayContain(String var1) {
  73.       if (this.isClassOnlyJar && !var1.endsWith(".class")) {
  74.          return false;
  75.       } else {
  76.          String[] var2 = this.contents;
  77.  
  78.          for(int var3 = 0; var3 < var2.length; ++var3) {
  79.             if (var1.startsWith(var2[var3])) {
  80.                return true;
  81.             }
  82.          }
  83.  
  84.          return false;
  85.       }
  86.    }
  87.  
  88.    private MetaIndex(List<String> var1, boolean var2) throws IllegalArgumentException {
  89.       if (var1 == null) {
  90.          throw new IllegalArgumentException();
  91.       } else {
  92.          this.contents = (String[])var1.toArray(new String[0]);
  93.          this.isClassOnlyJar = var2;
  94.       }
  95.    }
  96.  
  97.    private static Map<File, MetaIndex> getJarMap() {
  98.       if (jarMap == null) {
  99.          synchronized(MetaIndex.class) {
  100.             if (jarMap == null) {
  101.                jarMap = new HashMap();
  102.             }
  103.          }
  104.       }
  105.  
  106.       assert jarMap != null;
  107.  
  108.       return jarMap;
  109.    }
  110. }
  111.