Search in sources :

Example 1 with Feature

use of io.micronaut.starter.feature.Feature in project micronaut-starter by micronaut-projects.

the class Springloaded method processSelectedFeatures.

@Override
public void processSelectedFeatures(FeatureContext featureContext) {
    int jdkVersion = featureContext.getJavaVersion().majorVersion();
    if (jdkVersion >= 9) {
        Springloaded springloaded = this;
        featureContext.exclude(new FeaturePredicate() {

            @Override
            public boolean test(Feature feature) {
                return feature == springloaded;
            }

            @Override
            public Optional<String> getWarning() {
                return Optional.of("Springloaded was excluded because it does not support JDK " + jdkVersion);
            }
        });
    }
}
Also used : Optional(java.util.Optional) FeaturePredicate(io.micronaut.starter.feature.FeaturePredicate) Feature(io.micronaut.starter.feature.Feature)

Example 2 with Feature

use of io.micronaut.starter.feature.Feature in project micronaut-starter by micronaut-projects.

the class ListFeatures method listFeatures.

private void listFeatures(ConsoleOutput consoleOutput, Set<Feature> defaultFeatures, List<Feature> allFeatures, int width) {
    for (Feature feature : allFeatures) {
        String name = feature.getName();
        if (feature.isPreview()) {
            name += " [PREVIEW]";
        }
        if (defaultFeatures.contains(feature)) {
            name += " (+)";
            consoleOutput.out("@|blue   " + String.format("%1$-" + width + "s", name) + feature.getDescription() + "|@");
        } else {
            consoleOutput.out("  " + String.format("%1$-" + width + "s", name) + feature.getDescription());
        }
    }
}
Also used : Feature(io.micronaut.starter.feature.Feature)

Example 3 with Feature

use of io.micronaut.starter.feature.Feature 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);
}
Also used : FeatureValidator(io.micronaut.starter.feature.validation.FeatureValidator) Options(io.micronaut.starter.options.Options) FeatureContext(io.micronaut.starter.feature.FeatureContext) java.util(java.util) ConsoleOutput(io.micronaut.starter.io.ConsoleOutput) DefaultFeature(io.micronaut.starter.feature.DefaultFeature) Feature(io.micronaut.starter.feature.Feature) Nullable(edu.umd.cs.findbugs.annotations.Nullable) AvailableFeatures(io.micronaut.starter.feature.AvailableFeatures) GeneratorContext(io.micronaut.starter.application.generator.GeneratorContext) Language(io.micronaut.starter.options.Language) Singleton(javax.inject.Singleton) Options(io.micronaut.starter.options.Options) Language(io.micronaut.starter.options.Language) DefaultFeature(io.micronaut.starter.feature.DefaultFeature) DefaultFeature(io.micronaut.starter.feature.DefaultFeature) Feature(io.micronaut.starter.feature.Feature) FeatureContext(io.micronaut.starter.feature.FeatureContext)

Example 4 with Feature

use of io.micronaut.starter.feature.Feature 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("");
    });
}
Also used : GeneratorContext(io.micronaut.starter.application.generator.GeneratorContext) Feature(io.micronaut.starter.feature.Feature) FeatureContext(io.micronaut.starter.feature.FeatureContext)

Example 5 with Feature

use of io.micronaut.starter.feature.Feature in project micronaut-starter by micronaut-projects.

the class GeneratorContext method applyFeatures.

public void applyFeatures() {
    List<Feature> features = new ArrayList<>(this.features.getFeatures());
    features.sort(Comparator.comparingInt(Feature::getOrder));
    for (Feature feature : features) {
        feature.apply(this);
    }
}
Also used : Feature(io.micronaut.starter.feature.Feature)

Aggregations

Feature (io.micronaut.starter.feature.Feature)7 GeneratorContext (io.micronaut.starter.application.generator.GeneratorContext)3 DefaultFeature (io.micronaut.starter.feature.DefaultFeature)2 FeatureContext (io.micronaut.starter.feature.FeatureContext)2 Language (io.micronaut.starter.options.Language)2 Options (io.micronaut.starter.options.Options)2 Singleton (javax.inject.Singleton)2 NonNull (edu.umd.cs.findbugs.annotations.NonNull)1 Nullable (edu.umd.cs.findbugs.annotations.Nullable)1 ApplicationType (io.micronaut.starter.application.ApplicationType)1 AvailableFeatures (io.micronaut.starter.feature.AvailableFeatures)1 FeaturePhase (io.micronaut.starter.feature.FeaturePhase)1 FeaturePredicate (io.micronaut.starter.feature.FeaturePredicate)1 LanguageSpecificFeature (io.micronaut.starter.feature.LanguageSpecificFeature)1 io.micronaut.starter.feature.other.template.readme (io.micronaut.starter.feature.other.template.readme)1 FeatureValidator (io.micronaut.starter.feature.validation.FeatureValidator)1 ConsoleOutput (io.micronaut.starter.io.ConsoleOutput)1 RockerWritable (io.micronaut.starter.template.RockerWritable)1 Template (io.micronaut.starter.template.Template)1 Writable (io.micronaut.starter.template.Writable)1