private Iterable<Class<? extends ProvidedProjectFacet>> getMissingProvidedProjectFacets(ProjectProvider buildSystem, Iterable<Class<? extends ProvidedProjectFacet>> requiredFacets) { Set<Class<? extends ProvidedProjectFacet>> result = new HashSet<>(); Iterable<Class<? extends ProvidedProjectFacet>> providedFacetTypes = buildSystem.getProvidedFacetTypes(); if (requiredFacets != null && providedFacetTypes != null) { for (Class<? extends ProvidedProjectFacet> required : requiredFacets) { boolean found = false; for (Class<? extends ProvidedProjectFacet> provided : providedFacetTypes) { if (provided.isAssignableFrom(required)) found = true; } if (!found) result.add(required); } } return result; }
private boolean isProjectTypeBuildable(ProjectType type, ProjectProvider buildSystem) { boolean result = false; Iterable<Class<? extends ProvidedProjectFacet>> requiredFacets = getRequiredBuildSystemFacets(type); if (requiredFacets == null || !requiredFacets.iterator().hasNext()) { result = true; } else { for (Class<? extends ProvidedProjectFacet> required : requiredFacets) { result = false; for (Class<? extends ProvidedProjectFacet> provided : buildSystem.getProvidedFacetTypes()) { if (provided.isAssignableFrom(required)) result = true; } if (!result) break; } } return result; }