use of io.micronaut.starter.feature.LanguageSpecificFeature in project micronaut-starter by micronaut-projects.
the class RequiredLanguageFeatureValidator method validatePreProcessing.
@Override
public void validatePreProcessing(Options options, ApplicationType applicationType, Set<Feature> features) {
Map<Language, Set<String>> requiredLanguages = new HashMap<>();
for (Feature feature : features) {
if (feature instanceof LanguageSpecificFeature) {
Language lang = ((LanguageSpecificFeature) feature).getRequiredLanguage();
requiredLanguages.compute(lang, (key, value) -> {
if (value == null) {
value = new HashSet<>();
}
value.add(feature.getName());
return value;
});
}
}
Set<Language> languages = requiredLanguages.keySet();
Iterator<Language> languageIterator = languages.iterator();
if (languages.size() > 1) {
Language first = languageIterator.next();
Language second = languageIterator.next();
throw new IllegalArgumentException(String.format("The selected features are incompatible. %s requires %s and %s requires %s", requiredLanguages.get(first), first, requiredLanguages.get(second), second));
}
Language requiredLanguage = languageIterator.hasNext() ? languageIterator.next() : null;
if (options != null && requiredLanguage != null && requiredLanguage != options.getLanguage()) {
throw new IllegalArgumentException(String.format("The selected features are incompatible. %s requires %s but %s was the selected language.", requiredLanguages.get(requiredLanguage), requiredLanguage, options.getLanguage()));
}
}
Aggregations