/** * "Flattens" the given collection of {@link EPackage}s by iterating recursively over their sub-packages and * throwing all encountered packages into a set. * * @param ePackages * The EPackages to flatten. Must not be <code>null</code>. May be empty. * @return A set containing the given EPackage, plus all of its sub-EPackages (recursively). Never <code>null</code> * , may be empty. */ public static Set<EPackage> flattenEPackages(final Iterable<? extends EPackage> ePackages) { checkNotNull(ePackages, "Precondition violation - argument 'ePackages' must not be NULL!"); Set<EPackage> flattenedEPackages = Sets.newHashSet(); for (EPackage rootEPackage : ePackages) { flattenedEPackages.add(rootEPackage); TreeIterator<EObject> eAllContents = rootEPackage.eAllContents(); eAllContents.forEachRemaining(eObject -> { if (eObject instanceof EPackage) { flattenedEPackages.add((EPackage) eObject); } }); } return flattenedEPackages; }
/** * "Flattens" the given collection of {@link EPackage}s by iterating recursively over their sub-packages and * throwing all encountered packages into a set. * * @param ePackages * The EPackages to flatten. Must not be <code>null</code>. May be empty. * @return A set containing the given EPackage, plus all of its sub-EPackages (recursively). Never <code>null</code> * , may be empty. */ public static Set<EPackage> flattenEPackages(final Iterator<? extends EPackage> ePackages) { checkNotNull(ePackages, "Precondition violation - argument 'ePackages' must not be NULL!"); Set<EPackage> flattenedEPackages = Sets.newHashSet(); while (ePackages.hasNext()) { EPackage rootEPackage = ePackages.next(); flattenedEPackages.add(rootEPackage); TreeIterator<EObject> eAllContents = rootEPackage.eAllContents(); eAllContents.forEachRemaining(eObject -> { if (eObject instanceof EPackage) { flattenedEPackages.add((EPackage) eObject); } }); } return flattenedEPackages; }