standardize and cleanup
diff --git a/tests/org.eclipse.wtp.releng.tests/src/org/eclipse/wtp/layout/tests/TestLayout.java b/tests/org.eclipse.wtp.releng.tests/src/org/eclipse/wtp/layout/tests/TestLayout.java
index d14f46a..9af378b 100644
--- a/tests/org.eclipse.wtp.releng.tests/src/org/eclipse/wtp/layout/tests/TestLayout.java
+++ b/tests/org.eclipse.wtp.releng.tests/src/org/eclipse/wtp/layout/tests/TestLayout.java
@@ -47,414 +47,443 @@
  */
 public class TestLayout extends TestCase {
 
-	private static final String EXTENSION_JAR = ".jar";
-	private static final String EXTENSION_ZIP = ".zip";
-	private static final String PROPERTY_BUNDLE_ID = "Bundle-SymbolicName";
-	private static final String CONFIG = "config.properties";
-	private static final String KEY_DFT_BIN_JAR = "default.binary.jar";
-	private static final String KEY_DFT_SRC_JAR = "default.source.jar";
-	private static final String KEY_DFT_BIN_ZIP = "default.binary.zip";
-	private static final String KEY_DFT_SRC_ZIP = "default.source.zip";
-	private static final String EOL = System.getProperty("line.separator", "\n");
-	private Properties config;
-	private List errors = new ArrayList();
+    private static final String EXTENSION_JAR      = ".jar";
+    private static final String EXTENSION_ZIP      = ".zip";
+    private static final String PROPERTY_BUNDLE_ID = "Bundle-SymbolicName";
+    private static final String CONFIG             = "config.properties";
+    private static final String KEY_DFT_BIN_JAR    = "default.binary.jar";
+    private static final String KEY_DFT_SRC_JAR    = "default.source.jar";
+    private static final String KEY_DFT_BIN_ZIP    = "default.binary.zip";
+    private static final String KEY_DFT_SRC_ZIP    = "default.source.zip";
+    private static final String EOL                = System.getProperty("line.separator", "\n");
+    private Properties          config;
+    private List                errors             = new ArrayList();
 
-	public static Test suite() {
-		System.out.println("suite for layout");
-		return new TestSuite(TestLayout.class);
-	}
+    public static Test suite() {
+        System.out.println("suite for layout");
+        return new TestSuite(TestLayout.class);
+    }
 
-	public void addError(String message) {
-		errors.add(message);
-	}
+    public void addError(String message) {
+        errors.add(message);
+    }
 
-	public void testBundleLayout() throws Exception {
+    public void testBundleLayout() throws Exception {
 
-		dumpAllProperties();
+        dumpAllProperties();
 
-		String homeLocation = System.getProperty("org.eclipse.wtp.inputDir");
-		if (homeLocation == null) {
-			homeLocation = System.getProperty("eclipse.home.location");
-		}
-		if (!homeLocation.endsWith("/")) {
-			homeLocation = homeLocation + "/";
-		}
-		// given the nature of this test, we can just check all possible directories,
-		String dirLocation = homeLocation + "dropins/eclipse/plugins/";
-		checkDirectory(dirLocation);
+        String homeLocation = System.getProperty("org.eclipse.wtp.inputDir");
+        if (homeLocation == null) {
+            homeLocation = System.getProperty("eclipse.home.location");
+        }
+        if (!homeLocation.endsWith("/")) {
+            homeLocation = homeLocation + "/";
+        }
+        // given the nature of this test, we can just check all possible directories,
+        String dirLocation = homeLocation + "dropins/eclipse/plugins/";
+        checkDirectory(dirLocation);
 //		dirLocation = homeLocation + "dropins/eclipse/features/";
 //		checkDirectory(dirLocation);
-		dirLocation = homeLocation + "plugins/";
-		checkDirectory(dirLocation);
+        dirLocation = homeLocation + "plugins/";
+        checkDirectory(dirLocation);
 //		dirLocation = homeLocation + "features/";
 //		checkDirectory(dirLocation);
-		
-		if (errors.size() > 0) {
-			Collections.sort(errors);
-			FileWriter outfileWriter = null;
-			File outfile = null;
-			String testOutputDirName = System.getProperty("junit-report-output");
-			try {
-				outfile = new File(testOutputDirName, "layoutErrors.html");
-				outfileWriter = new FileWriter(outfile);
-				introduceLayoutErrors(outfileWriter);
-				listErrors(outfileWriter);
-			}
-			finally {
-				if (outfileWriter != null) {
-					outfileWriter.close();
-				}
-			}
-			fail("Errors in bundle layout. For list, see " + outfile.getAbsolutePath());
-		}
-	}
 
-	private void checkDirectory(String direcotoryPath) throws MalformedURLException {
-		URL url = new URL(direcotoryPath);
-		String directoryToCheck = url.getPath();
-		System.out.println("directory to check: " + directoryToCheck);
-		assertNotNull("Need to set inputDir for tests.", directoryToCheck);
-		File inputdir = new File(directoryToCheck);
-		assertTrue("inputDir (" + directoryToCheck + ") must exist.", inputdir.exists());
-		assertTrue("inputDir (" + directoryToCheck + ") must be an existing directory.", inputdir.exists() && inputdir.isDirectory());
-		File[] children = inputdir.listFiles();
-		for (int i = 0; i < children.length; i++) {
-			File child = children[i];
-			String id = getBundleId(child);
-			if (id != null) {
-				if (id.endsWith(".source") || id.endsWith(".infopop") || id.endsWith(".doc.user") || id.endsWith(".doc") || id.endsWith(".doc.isv") || id.endsWith(".doc.dev") || id.endsWith(".doc.api") || id.endsWith("standard.schemas") || id.endsWith(".branding"))
-					processBundle(child, getExpected(id, true, child.getName().endsWith(EXTENSION_ZIP)));
-				else
-					processBundle(child, getExpected(id, false, child.getName().endsWith(EXTENSION_ZIP)));
-			}
-		}
-	}
+        if (errors.size() > 0) {
+            Collections.sort(errors);
+            FileWriter outfileWriter = null;
+            File outfile = null;
+            String testOutputDirName = System.getProperty("junit-report-output");
+            try {
+                outfile = new File(testOutputDirName, "layoutErrors.html");
+                outfileWriter = new FileWriter(outfile);
+                introduceLayoutErrors(outfileWriter);
+                listErrors(outfileWriter);
+            }
+            finally {
+                if (outfileWriter != null) {
+                    outfileWriter.close();
+                }
+            }
+            fail("Errors in bundle layout. For list, see " + outfile.getAbsolutePath());
+        }
+    }
 
-	private void listErrors(FileWriter outfileWriter) throws IOException {
-		outfileWriter.write("<ol>" + EOL);
-		for (Iterator iter = errors.iterator(); iter.hasNext();) {
-			outfileWriter.write("<li>" + (String) iter.next() + "</li>" + EOL);
-		}
-		outfileWriter.write("</ol>" + EOL);
-	}
+    private void checkDirectory(String direcotoryPath) throws MalformedURLException {
+        URL url = new URL(direcotoryPath);
+        String directoryToCheck = url.getPath();
+        System.out.println("directory to check: " + directoryToCheck);
+        assertNotNull("Need to set inputDir for tests.", directoryToCheck);
+        File inputdir = new File(directoryToCheck);
 
-	private void introduceLayoutErrors(FileWriter outfileWriter) throws IOException {
-		outfileWriter.write("<p>" + EOL);
-		outfileWriter.write("The layout test looks for files which are required, " + EOL);
-		outfileWriter.write("or common. Missing about.html files are considered blocking " + EOL);
-		outfileWriter.write("defects (for a release). Missing properties files indicates " + EOL);
-		outfileWriter.write("that strings are not externalized. Or, either of these may indicate a mistake " + EOL);
-		outfileWriter.write("in the build.properties file. The test for class or jar files is meant as a " + EOL);
-		outfileWriter.write("sanity check that the build worked as expected. There are many cases, though, " + EOL);
-		outfileWriter.write("where it is expected to have no class or jar files, in which case the " + EOL);
-		outfileWriter.write("bundle needs to be added to an explicit list of exceptions" + EOL);
-		outfileWriter.write("</p>" + EOL);
-	}
+        // since we "blindly" check several possible directories, some may not exist in some cases, 
+        // so don't assert if they don't exist. 
+        //assertTrue("inputDir (" + directoryToCheck + ") must exist.", inputdir.exists());
+        //assertTrue("inputDir (" + directoryToCheck + ") must be an existing directory.", inputdir.exists() && inputdir.isDirectory());
 
-	/*
-	 * Check the configuration file and return a set of regular expressions
-	 * which match the list of files that are expected to be in the bundle.
-	 */
-	private Set getExpected(String id, boolean source, boolean zip) {
-		// is the config cached?
-		if (config == null) {
-			config = new Properties();
-			InputStream input = null;
-			try {
-				input = this.getClass().getResourceAsStream(CONFIG);
-				assertNotNull("Unable to load configuration file.", input);
-				config.load(input);
-			}
-			catch (IOException e) {
-				e.printStackTrace();
-				fail(e.getMessage());
-			}
-			finally {
-				try {
-					if (input != null)
-						input.close();
-				}
-				catch (IOException e) {
-					// ignore
-				}
-			}
-		}
-		String line = config.getProperty(id);
-		if (line == null) {
-			if (source)
-				line = zip ? config.getProperty(KEY_DFT_SRC_ZIP) : config.getProperty(KEY_DFT_SRC_JAR);
-			else
-				line = zip ? config.getProperty(KEY_DFT_BIN_ZIP) : config.getProperty(KEY_DFT_BIN_JAR);
-		}
-		if (line == null)
-			fail("Unable to load settings for: " + id);
-		Set result = new HashSet();
-		for (StringTokenizer tokenizer = new StringTokenizer(line, ","); tokenizer.hasMoreTokens();)
-			result.add(tokenizer.nextToken().trim());
-		return result;
-	}
+        if (inputdir.exists() && inputdir.isDirectory()) {
+            File[] children = inputdir.listFiles();
+            for (int i = 0; i < children.length; i++) {
+                File child = children[i];
+                String id = getBundleId(child);
+                if (id != null) {
+                    if (id.endsWith(".source") || id.endsWith(".infopop") || id.endsWith(".doc.user") || id.endsWith(".doc") || id.endsWith(".doc.isv") || id.endsWith(".doc.dev") || id.endsWith(".doc.api") || id.endsWith("standard.schemas") || id.endsWith(".branding")) {
+                        processBundle(child, getExpected(id, true, child.getName().endsWith(EXTENSION_ZIP)));
+                    }
+                    else {
+                        processBundle(child, getExpected(id, false, child.getName().endsWith(EXTENSION_ZIP)));
+                    }
+                }
+            }
+        }
+    }
 
-	/*
-	 * Process the bundle at the specified location, with the given set of
-	 * expected results.
-	 */
-	private void processBundle(File file, Set expected) {
-		if (file.isDirectory()) {
-			String[] array = (String[]) expected.toArray(new String[expected.size()]);
-			processDir("", file, array);
-			for (int i = 0; i < array.length; i++)
-				if (array[i] != null)
-					addError("Missing pattern or file: " + array[i] + " in dir: " + file.getName());
-		}
-		else
-			processArchive(file, (String[]) expected.toArray(new String[expected.size()]));
-	}
+    private void listErrors(FileWriter outfileWriter) throws IOException {
+        outfileWriter.write("<ol>" + EOL);
+        for (Iterator iter = errors.iterator(); iter.hasNext();) {
+            outfileWriter.write("<li>" + (String) iter.next() + "</li>" + EOL);
+        }
+        outfileWriter.write("</ol>" + EOL);
+    }
 
-	/*
-	 * The bundle is an archive. Make sure it has the right contents.
-	 */
-	private void processArchive(File file, String[] expected) {
-		ZipFile zip = null;
-		try {
-			zip = new ZipFile(file, ZipFile.OPEN_READ);
-			for (Enumeration e = zip.entries(); e.hasMoreElements();) {
-				ZipEntry entry = (ZipEntry) e.nextElement();
-				String name = entry.getName();
-				for (int i = 0; i < expected.length; i++) {
-					String pattern = expected[i];
-					if (pattern == null)
-						continue;
-					try {
-						if (name.matches(pattern))
-							expected[i] = null;
-					}
-					catch (PatternSyntaxException ex) {
-						ex.printStackTrace();
-						fail(ex.getMessage());
-					}
-				}
-			}
-			for (int i = 0; i < expected.length; i++) {
-				if (expected[i] != null)
-					addError("Missing pattern or file: " + expected[i] + " in file: " + file.getName());
-			}
-		}
-		catch (IOException e) {
-			e.printStackTrace();
-			fail(e.getMessage());
-		}
-		finally {
-			if (zip != null)
-				try {
-					zip.close();
-				}
-				catch (IOException e) {
-					// ignore
-				}
-		}
-	}
+    private void introduceLayoutErrors(FileWriter outfileWriter) throws IOException {
+        outfileWriter.write("<p>" + EOL);
+        outfileWriter.write("The layout test looks for files which are required, " + EOL);
+        outfileWriter.write("or common. Missing about.html files are considered blocking " + EOL);
+        outfileWriter.write("defects (for a release). Missing properties files indicates " + EOL);
+        outfileWriter.write("that strings are not externalized. Or, either of these may indicate a mistake " + EOL);
+        outfileWriter.write("in the build.properties file. The test for class or jar files is meant as a " + EOL);
+        outfileWriter.write("sanity check that the build worked as expected. There are many cases, though, " + EOL);
+        outfileWriter.write("where it is expected to have no class or jar files, in which case the " + EOL);
+        outfileWriter.write("bundle needs to be added to an explicit list of exceptions" + EOL);
+        outfileWriter.write("</p>" + EOL);
+    }
 
-	/*
-	 * The bundle is in a directory.
-	 */
-	private void processDir(String root, File dir, String[] expected) {
-		File[] children = dir.listFiles();
-		for (int index = 0; index < children.length; index++) {
-			File child = children[index];
-			String name = root.length() == 0 ? child.getName() : root + '/' + child.getName();
-			if (child.isDirectory()) {
-				processDir(name, child, expected);
-				continue;
-			}
-			for (int i = 0; i < expected.length; i++) {
-				String pattern = expected[i];
-				if (pattern == null)
-					continue;
-				try {
-					if (name.matches(pattern))
-						expected[i] = null;
-				}
-				catch (PatternSyntaxException ex) {
-					ex.printStackTrace();
-					addError(ex.getMessage());
-					continue;
-				}
-			}
-		}
-	}
+    /*
+     * Check the configuration file and return a set of regular expressions
+     * which match the list of files that are expected to be in the bundle.
+     */
+    private Set getExpected(String id, boolean source, boolean zip) {
+        // is the config cached?
+        if (config == null) {
+            config = new Properties();
+            InputStream input = null;
+            try {
+                input = this.getClass().getResourceAsStream(CONFIG);
+                assertNotNull("Unable to load configuration file.", input);
+                config.load(input);
+            }
+            catch (IOException e) {
+                e.printStackTrace();
+                fail(e.getMessage());
+            }
+            finally {
+                try {
+                    if (input != null) {
+                        input.close();
+                    }
+                }
+                catch (IOException e) {
+                    // ignore
+                }
+            }
+        }
+        String line = config.getProperty(id);
+        if (line == null) {
+            if (source) {
+                line = zip ? config.getProperty(KEY_DFT_SRC_ZIP) : config.getProperty(KEY_DFT_SRC_JAR);
+            }
+            else {
+                line = zip ? config.getProperty(KEY_DFT_BIN_ZIP) : config.getProperty(KEY_DFT_BIN_JAR);
+            }
+        }
+        if (line == null) {
+            fail("Unable to load settings for: " + id);
+        }
+        Set result = new HashSet();
+        for (StringTokenizer tokenizer = new StringTokenizer(line, ","); tokenizer.hasMoreTokens();) {
+            result.add(tokenizer.nextToken().trim());
+        }
+        return result;
+    }
 
-	/*
-	 * Return the bundle id from the manifest pointed to by the given input
-	 * stream.
-	 */
-	private String getBundleIdFromManifest(InputStream input, String path) {
-		String id = null;
-		try {
-			Map attributes = ManifestElement.parseBundleManifest(input, null);
-			id = (String) attributes.get(PROPERTY_BUNDLE_ID);
-			if (id == null || id.length() == 0) {
-				addError("BundleSymbolicName header not set in manifest for bundle: " + path);
-			}
-			else {
-				int pos = id.indexOf(';');
-				if (pos > 0) {
-					id = id.substring(0, pos);
-				}
-			}
+    /*
+     * Process the bundle at the specified location, with the given set of
+     * expected results.
+     */
+    private void processBundle(File file, Set expected) {
+        if (file.isDirectory()) {
+            String[] array = (String[]) expected.toArray(new String[expected.size()]);
+            processDir("", file, array);
+            for (int i = 0; i < array.length; i++) {
+                if (array[i] != null) {
+                    addError("Missing pattern or file: " + array[i] + " in dir: " + file.getName());
+                }
+            }
+        }
+        else {
+            processArchive(file, (String[]) expected.toArray(new String[expected.size()]));
+        }
+    }
 
-		}
-		catch (BundleException e) {
-			e.printStackTrace();
-			addError(e.getMessage());
-		}
-		catch (IOException e) {
-			e.printStackTrace();
-			addError(e.getMessage());
-		}
-		finally {
-			if (input != null)
-				try {
-					input.close();
-				}
-				catch (IOException e) {
-					// ignore
-				}
-		}
+    /*
+     * The bundle is an archive. Make sure it has the right contents.
+     */
+    private void processArchive(File file, String[] expected) {
+        ZipFile zip = null;
+        try {
+            zip = new ZipFile(file, ZipFile.OPEN_READ);
+            for (Enumeration e = zip.entries(); e.hasMoreElements();) {
+                ZipEntry entry = (ZipEntry) e.nextElement();
+                String name = entry.getName();
+                for (int i = 0; i < expected.length; i++) {
+                    String pattern = expected[i];
+                    if (pattern == null) {
+                        continue;
+                    }
+                    try {
+                        if (name.matches(pattern)) {
+                            expected[i] = null;
+                        }
+                    }
+                    catch (PatternSyntaxException ex) {
+                        ex.printStackTrace();
+                        fail(ex.getMessage());
+                    }
+                }
+            }
+            for (int i = 0; i < expected.length; i++) {
+                if (expected[i] != null) {
+                    addError("Missing pattern or file: " + expected[i] + " in file: " + file.getName());
+                }
+            }
+        }
+        catch (IOException e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+        finally {
+            if (zip != null) {
+                try {
+                    zip.close();
+                }
+                catch (IOException e) {
+                    // ignore
+                }
+            }
+        }
+    }
 
-		return id;
-	}
+    /*
+     * The bundle is in a directory.
+     */
+    private void processDir(String root, File dir, String[] expected) {
+        File[] children = dir.listFiles();
+        for (int index = 0; index < children.length; index++) {
+            File child = children[index];
+            String name = root.length() == 0 ? child.getName() : root + '/' + child.getName();
+            if (child.isDirectory()) {
+                processDir(name, child, expected);
+                continue;
+            }
+            for (int i = 0; i < expected.length; i++) {
+                String pattern = expected[i];
+                if (pattern == null) {
+                    continue;
+                }
+                try {
+                    if (name.matches(pattern)) {
+                        expected[i] = null;
+                    }
+                }
+                catch (PatternSyntaxException ex) {
+                    ex.printStackTrace();
+                    addError(ex.getMessage());
+                    continue;
+                }
+            }
+        }
+    }
 
-	/*
-	 * Return the bundle identifier for the bundle contained in the given
-	 * archive/directory.
-	 */
-	private String getBundleId(File file) {
-		String id = null;
-		if (file.isDirectory())
-			id = getBundleIdFromDir(file);
-		else if (file.getName().toLowerCase().endsWith(EXTENSION_ZIP))
-			id = getBundleIdFromZIP(file);
-		else if (file.getName().toLowerCase().endsWith(EXTENSION_JAR))
-			id = getBundleIdFromJAR(file);
-		return id;
-	}
+    /*
+     * Return the bundle id from the manifest pointed to by the given input
+     * stream.
+     */
+    private String getBundleIdFromManifest(InputStream input, String path) {
+        String id = null;
+        try {
+            Map attributes = ManifestElement.parseBundleManifest(input, null);
+            id = (String) attributes.get(PROPERTY_BUNDLE_ID);
+            if ((id == null) || (id.length() == 0)) {
+                addError("BundleSymbolicName header not set in manifest for bundle: " + path);
+            }
+            else {
+                int pos = id.indexOf(';');
+                if (pos > 0) {
+                    id = id.substring(0, pos);
+                }
+            }
 
-	private String getBundleIdFromZIP(File file) {
-		ZipFile zip = null;
-		try {
-			zip = new ZipFile(file);
-			for (Enumeration e = zip.entries(); e.hasMoreElements();) {
-				ZipEntry entry = (ZipEntry) e.nextElement();
-				if (entry.getName().matches("^.*/" + JarFile.MANIFEST_NAME)) {
-					InputStream input = zip.getInputStream(entry);
-					try {
-						return getBundleIdFromManifest(input, file.getAbsolutePath());
-					}
-					finally {
-						try {
-							input.close();
-						}
-						catch (IOException ex) {
-							// ignore
-						}
-					}
-				}
-			}
-		}
-		catch (IOException ex) {
-			ex.printStackTrace();
-			addError(ex.getMessage());
-			// ignore
-		}
-		finally {
-			try {
-				zip.close();
-			}
-			catch (IOException ex) {
-				// ignore
-			}
-		}
-		addError("Bundle manifest (MANIFEST.MF) not found in bundle: " + file.getAbsolutePath());
-		return null;
-	}
+        }
+        catch (BundleException e) {
+            e.printStackTrace();
+            addError(e.getMessage());
+        }
+        catch (IOException e) {
+            e.printStackTrace();
+            addError(e.getMessage());
+        }
+        finally {
+            if (input != null) {
+                try {
+                    input.close();
+                }
+                catch (IOException e) {
+                    // ignore
+                }
+            }
+        }
 
-	/*
-	 * The given file points to an expanded bundle on disc. Look into the
-	 * bundle manifest file to find the bundle identifier.
-	 */
-	private String getBundleIdFromDir(File dir) {
-		String id = null;
-		File manifestFile = new File(dir, JarFile.MANIFEST_NAME);
-		if (!manifestFile.exists() || !manifestFile.isFile()) {
-			addError("Bundle manifest (MANIFEST.MF) not found at: " + manifestFile.getAbsolutePath());
-		}
-		else {
-			try {
-				id = getBundleIdFromManifest(new FileInputStream(manifestFile), manifestFile.getAbsolutePath());
-			}
-			catch (FileNotFoundException e) {
-				e.printStackTrace();
-				addError(e.getMessage());
-			}
-		}
-		return id;
-	}
+        return id;
+    }
 
-	/*
-	 * The given file points to a bundle contained in an archive. Look into
-	 * the bundle manifest file to find the bundle identifier.
-	 */
-	private String getBundleIdFromJAR(File file) {
-		InputStream input = null;
-		JarFile jar = null;
-		try {
-			jar = new JarFile(file, false, ZipFile.OPEN_READ);
-			JarEntry entry = jar.getJarEntry(JarFile.MANIFEST_NAME);
-			if (entry == null) {
-				addError("Bundle does not contain a MANIFEST.MF file: " + file.getAbsolutePath());
-				return null;
-			}
-			input = jar.getInputStream(entry);
-			return getBundleIdFromManifest(input, file.getAbsolutePath());
-		}
-		catch (IOException e) {
-			e.printStackTrace();
-			addError(e.getMessage());
-			return null;
-		}
-		finally {
-			if (input != null)
-				try {
-					input.close();
-				}
-				catch (IOException e) {
-					// ignore
-				}
-			if (jar != null)
-				try {
-					jar.close();
-				}
-				catch (IOException e) {
-					// ignore
-				}
-		}
-	}
+    /*
+     * Return the bundle identifier for the bundle contained in the given
+     * archive/directory.
+     */
+    private String getBundleId(File file) {
+        String id = null;
+        if (file.isDirectory()) {
+            id = getBundleIdFromDir(file);
+        }
+        else if (file.getName().toLowerCase().endsWith(EXTENSION_ZIP)) {
+            id = getBundleIdFromZIP(file);
+        }
+        else if (file.getName().toLowerCase().endsWith(EXTENSION_JAR)) {
+            id = getBundleIdFromJAR(file);
+        }
+        return id;
+    }
 
-	void dumpAllProperties() {
-		System.out.println();
-		System.out.println(" = = = Dump All Properties = = = ");
-		System.out.println();
-		java.util.Enumeration enumeration = System.getProperties().keys();
-		String key = null;
-		while (enumeration.hasMoreElements()) {
-			key = (String) enumeration.nextElement();
-			System.out.print(key);
-			for (int i = 0; i < (30 - key.length()); i++)
-				System.out.print(" ");
-			System.out.println("->" + System.getProperty(key));
-		}
-		System.out.println();
-		System.out.println("= = = Dump All Properties = = = ");
-		System.out.println();
-	}
+    private String getBundleIdFromZIP(File file) {
+        ZipFile zip = null;
+        try {
+            zip = new ZipFile(file);
+            for (Enumeration e = zip.entries(); e.hasMoreElements();) {
+                ZipEntry entry = (ZipEntry) e.nextElement();
+                if (entry.getName().matches("^.*/" + JarFile.MANIFEST_NAME)) {
+                    InputStream input = zip.getInputStream(entry);
+                    try {
+                        return getBundleIdFromManifest(input, file.getAbsolutePath());
+                    }
+                    finally {
+                        try {
+                            input.close();
+                        }
+                        catch (IOException ex) {
+                            // ignore
+                        }
+                    }
+                }
+            }
+        }
+        catch (IOException ex) {
+            ex.printStackTrace();
+            addError(ex.getMessage());
+            // ignore
+        }
+        finally {
+            try {
+                zip.close();
+            }
+            catch (IOException ex) {
+                // ignore
+            }
+        }
+        addError("Bundle manifest (MANIFEST.MF) not found in bundle: " + file.getAbsolutePath());
+        return null;
+    }
+
+    /*
+     * The given file points to an expanded bundle on disc. Look into the
+     * bundle manifest file to find the bundle identifier.
+     */
+    private String getBundleIdFromDir(File dir) {
+        String id = null;
+        File manifestFile = new File(dir, JarFile.MANIFEST_NAME);
+        if (!manifestFile.exists() || !manifestFile.isFile()) {
+            addError("Bundle manifest (MANIFEST.MF) not found at: " + manifestFile.getAbsolutePath());
+        }
+        else {
+            try {
+                id = getBundleIdFromManifest(new FileInputStream(manifestFile), manifestFile.getAbsolutePath());
+            }
+            catch (FileNotFoundException e) {
+                e.printStackTrace();
+                addError(e.getMessage());
+            }
+        }
+        return id;
+    }
+
+    /*
+     * The given file points to a bundle contained in an archive. Look into
+     * the bundle manifest file to find the bundle identifier.
+     */
+    private String getBundleIdFromJAR(File file) {
+        InputStream input = null;
+        JarFile jar = null;
+        try {
+            jar = new JarFile(file, false, ZipFile.OPEN_READ);
+            JarEntry entry = jar.getJarEntry(JarFile.MANIFEST_NAME);
+            if (entry == null) {
+                addError("Bundle does not contain a MANIFEST.MF file: " + file.getAbsolutePath());
+                return null;
+            }
+            input = jar.getInputStream(entry);
+            return getBundleIdFromManifest(input, file.getAbsolutePath());
+        }
+        catch (IOException e) {
+            e.printStackTrace();
+            addError(e.getMessage());
+            return null;
+        }
+        finally {
+            if (input != null) {
+                try {
+                    input.close();
+                }
+                catch (IOException e) {
+                    // ignore
+                }
+            }
+            if (jar != null) {
+                try {
+                    jar.close();
+                }
+                catch (IOException e) {
+                    // ignore
+                }
+            }
+        }
+    }
+
+    void dumpAllProperties() {
+        System.out.println();
+        System.out.println(" = = = Dump All Properties = = = ");
+        System.out.println();
+        java.util.Enumeration enumeration = System.getProperties().keys();
+        String key = null;
+        while (enumeration.hasMoreElements()) {
+            key = (String) enumeration.nextElement();
+            System.out.print(key);
+            for (int i = 0; i < (30 - key.length()); i++) {
+                System.out.print(" ");
+            }
+            System.out.println("->" + System.getProperty(key));
+        }
+        System.out.println();
+        System.out.println("= = = Dump All Properties = = = ");
+        System.out.println();
+    }
 }