/*
  * Iterate over the sites in the given configuration and remove the one which
  * has a url matching the given location.
  */
 public boolean removeSite(Configuration configuration, String location)
     throws IOException, URISyntaxException {
   File left = new File(new URI(location)).getCanonicalFile();
   List sites = configuration.getSites();
   for (Iterator iter = sites.iterator(); iter.hasNext(); ) {
     Site tempSite = (Site) iter.next();
     String siteURL = tempSite.getUrl();
     File right = new File(new URI(siteURL)).getCanonicalFile();
     if (left.equals(right)) {
       return configuration.removeSite(tempSite);
     }
   }
   return false;
 }
 /*
  * Save the given configuration to disk.
  */
 public void save(String message, Configuration configuration) {
   File configLocation =
       new File(output, getRootFolder() + "configuration/org.eclipse.update/platform.xml");
   File installLocation = new File(output, getRootFolder());
   try {
     configuration.save(configLocation, installLocation.toURL());
   } catch (ProvisionException e) {
     fail(message, e);
   } catch (MalformedURLException e) {
     fail(message, e);
   }
 }
 public Configuration loadConfiguration(File configLocation, File installLocation) {
   try {
     return Configuration.load(configLocation, installLocation.toURL());
   } catch (ProvisionException e) {
     fail("Error while reading configuration from " + configLocation);
   } catch (MalformedURLException e) {
     fail("Unable to convert install location to URL " + installLocation);
   }
   assertTrue("Unable to read configuration from " + configLocation, false);
   // avoid compiler error
   return null;
 }
 /*
  * Assert that a feature with the given id exists in the configuration. If
  * a version is specified then match the version, otherwise any version will
  * do.
  */
 public void assertFeatureExists(
     String message, Configuration configuration, String id, String version) {
   List sites = configuration.getSites();
   assertNotNull(message, sites);
   boolean found = false;
   for (Iterator iter = sites.iterator(); iter.hasNext(); ) {
     Site site = (Site) iter.next();
     Feature[] features = site.getFeatures();
     for (int i = 0; features != null && i < features.length; i++) {
       if (id.equals(features[i].getId())) {
         if (version == null) found = true;
         else if (version.equals(features[i].getVersion())) found = true;
       }
     }
   }
   assertTrue(message, found);
 }