private static List<IInstallableUnit> toInstallableUnitList(
      Collection<DependencySeed> seeds,
      IMetadataRepository sourceRepository,
      RepositoryReferences sourceRepositoryNames)
      throws FacadeException {
    List<IInstallableUnit> result = new ArrayList<IInstallableUnit>(seeds.size());

    for (DependencySeed seed : seeds) {
      if (seed.getInstallableUnit() == null) {
        // TODO 372780 drop this when getInstallableUnit can no longer be null
        String unitId =
            seed.getId()
                + (ArtifactType.TYPE_ECLIPSE_FEATURE.equals(seed.getType())
                    ? ".feature.group"
                    : "");
        result.addAll(
            querySourceIus(
                Collections.singletonList(new IUDescription(unitId, null)),
                sourceRepository,
                sourceRepositoryNames));
      } else {
        result.add((IInstallableUnit) seed.getInstallableUnit());
      }
    }

    if (result.isEmpty()) {
      throw new IllegalArgumentException(
          "List of seed units for repository aggregation must not be empty");
    }
    return result;
  }
 /**
  * Returns the installable units from the given dependency seeds, indexed by the installable
  * units's IDs.
  */
 private static Map<String, IInstallableUnit> unitsById(Collection<DependencySeed> seeds) {
   Map<String, IInstallableUnit> result = new HashMap<String, IInstallableUnit>();
   for (DependencySeed seed : seeds) {
     IInstallableUnit iu = (IInstallableUnit) seed.getInstallableUnit();
     result.put(iu.getId(), iu);
   }
   return result;
 }
  @Test
  public void testCategoryPublishing() throws Exception {
    File categoryDefinition = resourceFile("publishers/category.xml");

    Collection<DependencySeed> seeds = subject.publishCategories(categoryDefinition);

    assertThat(seeds.size(), is(1));
    DependencySeed seed = seeds.iterator().next();

    Set<Object> publishedUnits = outputRepository.getInstallableUnits();
    assertThat(publishedUnits, hasItem(seed.getInstallableUnit()));
  }