001 /* Copyright 2000, 2001, Compaq Computer Corporation */ 002 003 package javafe.filespace; 004 005 006 import java.util.Enumeration; 007 import javafe.genericfile.*; 008 009 010 /** 011 * This module defines a very simple query interface for use in 012 * locating Java files according to a classpath. 013 */ 014 015 public abstract class Query { 016 017 /*************************************************** 018 * * 019 * Locating files: * 020 * * 021 **************************************************/ 022 023 /** 024 * Return true iff the package P in the Java filespace is 025 * "accessible".<p> 026 * 027 * Warning: the definition of accessible is host system dependent 028 * and may in fact be defined as always true.<p> 029 */ 030 //@ requires P != null; 031 //@ requires \nonnullelements(P); 032 public boolean accessable(String[] P) { 033 return true; 034 } 035 036 037 /** 038 * Attempt to locate the file typename+"."+extension in the package 039 * P in the Java filespace.<p> 040 * 041 * If such a file is found, then a (non-null) GenericFile 042 * representing it is returned. Otherwise, null is returned.<p> 043 */ 044 //@ requires P != null; 045 //@ requires typename != null; 046 //@ requires extension != null; 047 //@ requires \nonnullelements(P); 048 public abstract GenericFile findFile(String[] P, String typename, 049 String extension); 050 051 //@ requires P != null; 052 //@ requires filename != null; 053 public abstract GenericFile findFile(String[] P, String filename); 054 055 /** Locates a file with given package, typename, and one of the given 056 * extensions; the first directory on the search path containing a 057 * candidate file is used - within that directory, extensions near the 058 * beginning of the extensions Vector take precedence. 059 */ 060 //@ requires P != null; 061 //@ requires typename != null; 062 //@ requires extensions != null; 063 public abstract GenericFile findFile(String[] P, String typename, 064 String[] extensions); 065 066 067 /** Returns an Enumeration containing GenericFile objects representing 068 all the files in the given package P. 069 */ 070 //@ requires P != null; 071 public abstract Enumeration findFiles(String[] P); 072 073 /*************************************************** 074 * * 075 * Checking class/interface existence: * 076 * * 077 **************************************************/ 078 079 /** 080 * Return true iff the fully-qualified outside type P.T exists in 081 * our Java file space. 082 */ 083 //@ requires P != null; 084 //@ requires \nonnullelements(P); 085 public boolean exists(String[] P, String T) { 086 return (findFile(P, T, "java") != null) 087 || (findFile(P, T, "class") != null); 088 } 089 }