private Map<File, ProductConfiguration> getProductConfigurations(ProjectMetadata project) {
    ProductConfigurations products = project.getMetadata(ProductConfigurations.class);
    if (products == null) {
      products = new ProductConfigurations();
      File[] productFiles =
          project
              .getBasedir()
              .listFiles(
                  new FileFilter() {

                    @Override
                    public boolean accept(File file) {
                      return file.isFile() && file.getName().endsWith(".product");
                    }
                  });
      if (productFiles != null) {
        for (File productFile : productFiles) {
          try {
            products.addProductConfiguration(productFile, ProductConfiguration.read(productFile));
          } catch (IOException e) {
            throw new IllegalArgumentException(
                "Could not read product configuration file " + productFile, e);
          }
        }
      }
      project.putMetadata(products);
    }
    return products.getProductConfigurations();
  }
 private MutableBundleManifest getBundleManifest(ProjectMetadata project) {
   MutableBundleManifest mf = project.getMetadata(MutableBundleManifest.class);
   if (mf == null) {
     File file = getManifestFile(project);
     try {
       mf = MutableBundleManifest.read(file);
     } catch (IOException e) {
       throw new IllegalArgumentException("Could not parse bundle manifest " + file, e);
     }
     project.putMetadata(mf);
   }
   return mf;
 }