Bug 243347 [Wizards] TarFile should not throw NPE in finalize()
I20080805-1307 TarFile#finalize() throws an NPE which is swallowed by the Finalizer thread. To reproduce, e.g. try to import a *.zip archive. Here, the constructor fails to initialize entryEnumerationStream, so it stays null: Thread [main] (Suspended (breakpoint at line 59 in TarFile)) TarFile.<init>(File) line: 59 TarFile.<init>(String) line: 84 ArchiveFileManipulations.isTarFile(String) line: 47 WizardArchiveFileResourceImportPage1.getFileSystemTree() line: 228 In the finalizer thread, the NPE is thrown: Daemon System Thread [Finalizer] (Suspended (exception NullPointerException)) TarFile.close() line: 71 TarFile.finalize() line: 158 Finalizer.invokeFinalizeMethod(Object) line: not available Finalizer.runFinalizer() line: 83 [local variables unavailable] Finalizer.access$100(Finalizer) line: 14 Finalizer$FinalizerThread.run() line: 160 [local variables unavailable]
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/TarFile.java
* 
	 * @throws IOException if the file cannot be successfully closed
	 */
	public void close() throws IOException {
		entryEnumerationStream.close();
		if (internalEntryStream != null)
			internalEntryStream.close();
	}
	/**
	 * Create a new TarFile for the given path name.
	 * 
	 * @param filename
	 * @throws TarException
	 * @throws IOException
	 */
	public TarFile(String filename) throws TarException, IOException {
		this(new File(filename));
	}
	/**
	 * Returns an enumeration cataloguing the tar archive.
	 * 
	 * @return enumeration of all files in the archive
	 */
	public Enumeration entries() {
		return new Enumeration() {
			public boolean hasMoreElements() {
				return (curEntry != null);
			}
			
			public Object nextElement() {