private void addFileToRepository(String fileName, List<String> repositoryClassList)
private void addFileToRepository(String fileName, List<String> archiveWorkList, List<String> repositoryClassList)
	private void addFileToRepository(String fileName, List<String> repositoryClassList)	        throws IOException, InterruptedException {		try {			ClassProducer classProducer;			// Create the ClassProducer			if (fileName.endsWith(".jar") || fileName.endsWith(".zip")			        || fileName.endsWith(".war") || fileName.endsWith(".ear")			        || fileName.endsWith(".sar"))				classProducer = new ZipClassProducer(fileName);			else if (fileName.endsWith(".class"))				classProducer = new SingleClassProducer(fileName);			else {				File dir = new File(fileName);				if (!dir.isDirectory())					throw new IOException("Path " + fileName + " is not an archive, class file, or directory");				classProducer = new DirectoryClassProducer(fileName);			}			// Load all referenced classes into the Repository			for (; ;) {				if (Thread.interrupted())					throw new InterruptedException();				try {					JavaClass jclass = classProducer.getNextClass();					if (jclass == null)						break;					if (DEBUG) System.out.println("Scanned " + jclass.getClassName());					Repository.addClass(jclass);					repositoryClassList.add(jclass.getClassName());				} catch (ClassFormatException e) {					e.printStackTrace();					bugReporter.logError(e.getMessage());				}			}			progressCallback.finishArchive();			// If the archive or directory scanned contained source files,			// add it to the end of the source path.			if (classProducer.containsSourceFiles())				project.addSourceDir(fileName);		} catch (IOException e) {			// You'd think that the message for a FileNotFoundException would include			// the filename, but you'd be wrong.  So, we'll add it explicitly.			throw new IOException("Could not analyze " + fileName + ": " + e.getMessage());		}	}