make/tools/classanalyzer/src/com/sun/classanalyzer/ResourceFile.java

Print this page




  59 
  60     void setModule(Module m) {
  61         if (module != null) {
  62             throw new RuntimeException("Module for " + this + " already set");
  63         }
  64         this.module = m;
  65     }
  66 
  67     String getName() {
  68         return name;
  69     }
  70 
  71     String getPathname() {
  72         return pathname;
  73     }
  74 
  75     long getFileSize() {
  76         return filesize;
  77     }
  78 




  79     @Override
  80     public String toString() {
  81         return name;
  82     }
  83 
  84     @Override
  85     public int compareTo(ResourceFile o) {
  86         return name.compareTo(o.name);
  87     }
  88 
  89     private static Set<ResourceFile> resources = new TreeSet<ResourceFile>();
  90 
  91     static boolean isResource(String pathname) {
  92         // skip these files
  93         String name = pathname.replace(File.separatorChar, '/');
  94         if (name.endsWith("META-INF/MANIFEST.MF")) {
  95             return false;
  96         }
  97         if (name.contains("META-INF/JCE_RSA.")) {
  98             return false;
  99         }
 100         if (name.contains("META-INF/") &&
 101                 (name.endsWith(".RSA") || name.endsWith(".SF"))) {
 102             return false;
 103         }
 104 
 105         return true;
 106     }
 107 
 108     static ResourceFile addResource(String fname, InputStream in, long size) {
 109         ResourceFile res;
 110         fname = fname.replace(File.separatorChar, '/');
 111         if (fname.startsWith("META-INF/services")) {
 112             res = new ServiceProviderConfigFile(fname, in, size);
 113         } else {
 114             res = new ResourceFile(fname, size);
 115         }





 116         resources.add(res);
 117         return res;
 118     }
 119 

 120     static Set<ResourceFile> getAllResources() {
 121         return Collections.unmodifiableSet(resources);
 122     }
 123 
 124     static class ServiceProviderConfigFile extends ResourceFile {
 125         final List<String> providers = new ArrayList<String>();
 126         final String service;
 127 
 128         ServiceProviderConfigFile(String fname, InputStream in) {
 129             this(fname, in, 0);
 130         }
 131 
 132         ServiceProviderConfigFile(String fname, InputStream in, long size) {
 133             super(fname, size);
 134             readServiceConfiguration(in, providers);
 135             this.service = name.substring("META-INF/services".length() + 1, name.length());
 136         }
 137 





 138         @Override
 139         String getName() {
 140             if (providers.isEmpty()) {
 141                 return service;
 142             } else {
 143                 // just use the first one for matching
 144                 return providers.get(0);
 145             }
 146         }
 147 
 148         @Override
 149         public boolean equals(Object o) {
 150             if (o instanceof ServiceProviderConfigFile) {
 151                 ServiceProviderConfigFile sp = (ServiceProviderConfigFile) o;
 152                 if (service.equals(sp.service) && providers.size() == sp.providers.size()) {
 153                     List<String> tmp = new ArrayList<String>(providers);
 154                     if (tmp.removeAll(sp.providers)) {
 155                         return tmp.size() == 0;
 156                     }
 157                 }




  59 
  60     void setModule(Module m) {
  61         if (module != null) {
  62             throw new RuntimeException("Module for " + this + " already set");
  63         }
  64         this.module = m;
  65     }
  66 
  67     String getName() {
  68         return name;
  69     }
  70 
  71     String getPathname() {
  72         return pathname;
  73     }
  74 
  75     long getFileSize() {
  76         return filesize;
  77     }
  78 
  79     boolean isService() {
  80         return pathname.startsWith("META-INF/services") ? true : false;
  81     }
  82 
  83     @Override
  84     public String toString() {
  85         return name;
  86     }
  87 
  88     @Override
  89     public int compareTo(ResourceFile o) {
  90         return name.compareTo(o.name);
  91     }
  92 
  93     private static Set<ResourceFile> resources = new TreeSet<ResourceFile>();
  94 
  95     static boolean isResource(String pathname) {
  96         // skip these files
  97         String name = pathname.replace(File.separatorChar, '/');
  98         if (name.endsWith("META-INF/MANIFEST.MF")) {
  99             return false;
 100         }
 101         if (name.contains("META-INF/JCE_RSA.")) {
 102             return false;
 103         }
 104         if (name.contains("META-INF/") &&
 105                 (name.endsWith(".RSA") || name.endsWith(".SF"))) {
 106             return false;
 107         }
 108 
 109         return true;
 110     }
 111 
 112     static ResourceFile getResource(String fname, InputStream in, long size) {
 113         ResourceFile res;
 114         fname = fname.replace(File.separatorChar, '/');
 115         if (fname.startsWith("META-INF/services")) {
 116             res = new ServiceProviderConfigFile(fname, in, size);
 117         } else {
 118             res = new ResourceFile(fname, size);
 119         }
 120         return res;
 121     }
 122 
 123     static ResourceFile addResource(String fname, InputStream in, long size) {
 124         ResourceFile res = getResource(fname, in, size);
 125         resources.add(res);
 126         return res;
 127     }
 128 
 129 
 130     static Set<ResourceFile> getAllResources() {
 131         return Collections.unmodifiableSet(resources);
 132     }
 133 
 134     static class ServiceProviderConfigFile extends ResourceFile {
 135         final List<String> providers = new ArrayList<String>();
 136         final String service;
 137 
 138         ServiceProviderConfigFile(String fname, InputStream in) {
 139             this(fname, in, 0);
 140         }
 141 
 142         ServiceProviderConfigFile(String fname, InputStream in, long size) {
 143             super(fname, size);
 144             readServiceConfiguration(in, providers);
 145             this.service = name.substring("META-INF/services".length() + 1, name.length());
 146         }
 147 
 148         @Override
 149         boolean isService() {
 150             return true;
 151         }
 152 
 153         @Override
 154         String getName() {
 155             if (providers.isEmpty()) {
 156                 return service;
 157             } else {
 158                 // just use the first one for matching
 159                 return providers.get(0);
 160             }
 161         }
 162 
 163         @Override
 164         public boolean equals(Object o) {
 165             if (o instanceof ServiceProviderConfigFile) {
 166                 ServiceProviderConfigFile sp = (ServiceProviderConfigFile) o;
 167                 if (service.equals(sp.service) && providers.size() == sp.providers.size()) {
 168                     List<String> tmp = new ArrayList<String>(providers);
 169                     if (tmp.removeAll(sp.providers)) {
 170                         return tmp.size() == 0;
 171                     }
 172                 }