Search in sources :

Example 1 with LanguageSpecificFeature

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()));
    }
}
Also used : Language(io.micronaut.starter.options.Language) LanguageSpecificFeature(io.micronaut.starter.feature.LanguageSpecificFeature) LanguageSpecificFeature(io.micronaut.starter.feature.LanguageSpecificFeature) Feature(io.micronaut.starter.feature.Feature)

Aggregations

Feature (io.micronaut.starter.feature.Feature)1 LanguageSpecificFeature (io.micronaut.starter.feature.LanguageSpecificFeature)1 Language (io.micronaut.starter.options.Language)1