use of io.micronaut.starter.feature.FeatureContext in project micronaut-starter by micronaut-projects.
the class DefaultProjectGenerator method createGeneratorContext.
@Override
public GeneratorContext createGeneratorContext(ApplicationType applicationType, Project project, Options options, @Nullable OperatingSystem operatingSystem, List<String> selectedFeatures, ConsoleOutput consoleOutput) {
AvailableFeatures availableFeatures = beanContext.getBean(AvailableFeatures.class, Qualifiers.byName(applicationType.getName()));
FeatureContext featureContext = contextFactory.createFeatureContext(availableFeatures, selectedFeatures, applicationType, options, operatingSystem);
return contextFactory.createGeneratorContext(project, featureContext, consoleOutput);
}
use of io.micronaut.starter.feature.FeatureContext in project micronaut-starter by micronaut-projects.
the class ContextFactory method createFeatureContext.
public FeatureContext createFeatureContext(AvailableFeatures availableFeatures, List<String> selectedFeatures, ApplicationType applicationType, Options options, @Nullable OperatingSystem operatingSystem) {
final Set<Feature> features = Collections.newSetFromMap(new IdentityHashMap<>(8));
for (String name : selectedFeatures) {
Feature feature = availableFeatures.findFeature(name).orElse(null);
if (feature != null) {
features.add(feature);
} else {
throw new IllegalArgumentException("The requested feature does not exist: " + name);
}
}
Language language = determineLanguage(options.getLanguage(), features);
Options newOptions = options.withLanguage(language);
availableFeatures.getAllFeatures().filter(f -> f instanceof DefaultFeature).filter(f -> ((DefaultFeature) f).shouldApply(applicationType, newOptions, features)).forEach(features::add);
featureValidator.validatePreProcessing(newOptions, applicationType, features);
return new FeatureContext(newOptions, applicationType, operatingSystem, features);
}
use of io.micronaut.starter.feature.FeatureContext in project micronaut-starter by micronaut-projects.
the class ListFeatures method output.
void output(ConsoleOutput consoleOutput) {
FeatureContext featureContext = contextFactory.createFeatureContext(availableFeatures, Collections.emptyList(), applicationType, options, operatingSystem);
GeneratorContext generatorContext = contextFactory.createGeneratorContext(null, featureContext, ConsoleOutput.NOOP);
Set<Feature> defaultFeatures = generatorContext.getFeatures().getFeatures();
List<Feature> allFeatures = availableFeatures.getFeatures().collect(Collectors.toList());
int width = allFeatures.stream().map(Feature::getName).max(Comparator.comparingInt(String::length)).map(String::length).get() + 8;
Map<String, List<Feature>> featuresByCategory = allFeatures.stream().sorted(Comparator.comparing(Feature::getName)).collect(Collectors.groupingBy(Feature::getCategory));
featuresByCategory = new TreeMap<>(featuresByCategory);
consoleOutput.out("Available Features");
consoleOutput.out("@|blue (+)|@ denotes the feature is included by default");
consoleOutput.out(" " + String.format("%1$-" + width + "s", "Name") + "Description");
consoleOutput.out(" " + new String(new char[width - 2]).replace("\0", "-") + " ---------------");
featuresByCategory.forEach((category, features) -> {
consoleOutput.out(" @|bold,underline,magenta " + category + "|@");
listFeatures(consoleOutput, defaultFeatures, features, width);
consoleOutput.out("");
});
}
Aggregations