/** * Create an URL suitable to download Spring Boot cli for the specified version and * extension. * @param extension the required extension * @return the download URL */ public String createCliDistributionURl(String extension) { String bootVersion = defaultId(this.bootVersions); return this.configuration.getEnv().getArtifactRepository() + "org/springframework/boot/spring-boot-cli/" + bootVersion + "/spring-boot-cli-" + bootVersion + "-bin." + extension; }
public InitializrMetadata() { this(new InitializrConfiguration()); }
@Test void generatePackageNameSimple() { assertThat(this.properties.cleanPackageName("com.foo", "com.example")) .isEqualTo("com.foo"); }
/** * Clean the specified package name if necessary. If the package name cannot be * transformed to a valid package name, the {@code defaultPackageName} is used * instead. * <p> * The package name cannot be cleaned if the specified {@code packageName} is * {@code null} or if it contains an invalid character for a class identifier. * @param packageName the package name * @param defaultPackageName the default package name * @return the cleaned package name * @see Env#getInvalidPackageNames() */ public String cleanPackageName(String packageName, String defaultPackageName) { if (!StringUtils.hasText(packageName)) { return defaultPackageName; } String candidate = cleanPackageName(packageName); if (hasInvalidChar(candidate.replace(".", "")) || this.env.invalidPackageNames.contains(candidate)) { return defaultPackageName; } else { return candidate; } }
return this.env.fallbackApplicationName; String text = splitCamelCase(name.trim()); String result = unsplitWords(text); if (!result.endsWith("Application")) { result = result + "Application"; if (hasInvalidChar(candidate) || this.env.invalidApplicationNames.contains(candidate)) { return this.env.fallbackApplicationName;
@Test void generateApplicationNameInvalidStartCharacter() { assertThat(this.properties.generateApplicationName("1MyDemo")) .isEqualTo(this.properties.getEnv().getFallbackApplicationName()); }
@Test void mergeSslConfiguration() { InitializrProperties config = load( new ClassPathResource("application-test-default.yml")); InitializrProperties forceSslConfig = load( new ClassPathResource("application-test-ssl.yml")); InitializrMetadata metadata = InitializrMetadataBuilder .fromInitializrProperties(config) .withInitializrProperties(forceSslConfig, true).build(); InitializrConfiguration.Env defaultEnv = new InitializrConfiguration().getEnv(); InitializrConfiguration.Env actualEnv = metadata.getConfiguration().getEnv(); assertThat(actualEnv.isForceSsl()).isEqualTo(true); }
String repositoryId = it.getRepository(); this.repositories.computeIfAbsent(repositoryId, (s) -> metadata .getConfiguration().getEnv().getRepositories().get(s)); metadata.getConfiguration().generateApplicationName(getName())); setPackageName(metadata.getConfiguration().cleanPackageName(getPackageName(), metadata.getPackageName().getContent()));
protected Map<String, Object> initializeCommandLineModel(InitializrMetadata metadata, String serviceUrl) { Map<String, Object> model = new LinkedHashMap<>(); model.put("logo", LOGO); model.put("serviceUrl", serviceUrl); model.put("dependencies", generateDependencyTable(metadata)); model.put("types", generateTypeTable(metadata, "Rel", false)); Map<String, Object> defaults = metadata.defaults(); defaults.put("applicationName", metadata.getConfiguration() .generateApplicationName(metadata.getName().getContent())); defaults.put("baseDir", "no base dir"); defaults.put("dependencies", "none"); Map<String, Object> parametersDescription = buildParametersDescription(metadata); String[][] parameterTable = new String[defaults.size() + 1][]; parameterTable[0] = new String[] { "Parameter", "Description", "Default value" }; int i = 1; for (String id : defaults.keySet().stream().sorted() .collect(Collectors.toList())) { String[] data = new String[3]; data[0] = id; data[1] = (String) parametersDescription.get(id); data[2] = (String) defaults.get(id); parameterTable[i++] = data; } model.put("parameters", TableGenerator.generate(parameterTable)); return model; }
this.configuration.validate(); this.dependencies.validate(); Map<String, Repository> repositories = this.configuration.getEnv() .getRepositories(); Map<String, BillOfMaterials> boms = this.configuration.getEnv().getBoms(); for (Dependency dependency : this.dependencies.getAll()) { if (dependency.getBom() != null && !boms.containsKey(dependency.getBom())) {
/** * Add a {@link InitializrProperties} to be merged with other content. * @param properties the settings to merge onto this instance * @param mergeConfiguration specify if service configuration should be merged as well * @return this instance */ public InitializrMetadataBuilder withInitializrProperties( InitializrProperties properties, boolean mergeConfiguration) { if (mergeConfiguration) { this.configuration.merge(properties); } return withCustomizer(new InitializerPropertiesCustomizer(properties)); }
@Test void generateApplicationNameInvalidPartCharacter() { assertThat(this.properties.generateApplicationName("MyDe|mo")) .isEqualTo(this.properties.getEnv().getFallbackApplicationName()); }
@Test void mergeConfiguration() { InitializrProperties config = load( new ClassPathResource("application-test-default.yml")); InitializrProperties customDefaultsConfig = load( new ClassPathResource("application-test-custom-env.yml")); InitializrMetadata metadata = InitializrMetadataBuilder .fromInitializrProperties(config) .withInitializrProperties(customDefaultsConfig, true).build(); InitializrConfiguration.Env defaultEnv = new InitializrConfiguration().getEnv(); InitializrConfiguration.Env actualEnv = metadata.getConfiguration().getEnv(); assertThat(actualEnv.getArtifactRepository()) .isEqualTo("https://repo.spring.io/lib-release/"); assertThat(actualEnv.getSpringBootMetadataUrl()) .isEqualTo(defaultEnv.getSpringBootMetadataUrl()); assertThat(actualEnv.getFallbackApplicationName()).isEqualTo("FooBarApplication"); assertThat(actualEnv.isForceSsl()).isEqualTo(false); assertThat(actualEnv.getKotlin().getDefaultVersion()) .isEqualTo("1.0.0-beta-2423"); }
@Test void generateApplicationNameSimpleApplication() { assertThat(this.properties.generateApplicationName("demoApplication")) .isEqualTo("DemoApplication"); }
/** * Merge this instance with the specified argument. * @param other the other instance */ public void merge(InitializrMetadata other) { this.configuration.merge(other.configuration); this.dependencies.merge(other.dependencies); this.types.merge(other.types); this.bootVersions.merge(other.bootVersions); this.packagings.merge(other.packagings); this.javaVersions.merge(other.javaVersions); this.languages.merge(other.languages); this.name.merge(other.name); this.description.merge(other.description); this.groupId.merge(other.groupId); this.artifactId.merge(other.artifactId); this.version.merge(other.version); this.packageName.merge(other.packageName); }
private void resolveBom(InitializrMetadata metadata, String bomId, Version requestedVersion) { if (!this.boms.containsKey(bomId)) { BillOfMaterials bom = metadata.getConfiguration().getEnv().getBoms() .get(bomId).resolve(requestedVersion); bom.getAdditionalBoms() .forEach((id) -> resolveBom(metadata, id, requestedVersion)); this.boms.put(bomId, bom); } }
@Test void generateApplicationNameNull() { assertThat(this.properties.generateApplicationName(null)) .isEqualTo(this.properties.getEnv().getFallbackApplicationName()); }
@Test void mergeConfigurationDisabledByDefault() { InitializrProperties config = load( new ClassPathResource("application-test-default.yml")); InitializrProperties customDefaultsConfig = load( new ClassPathResource("application-test-custom-env.yml")); InitializrMetadata metadata = InitializrMetadataBuilder .fromInitializrProperties(config) .withInitializrProperties(customDefaultsConfig).build(); InitializrConfiguration.Env defaultEnv = new InitializrConfiguration().getEnv(); InitializrConfiguration.Env actualEnv = metadata.getConfiguration().getEnv(); assertThat(actualEnv.getArtifactRepository()) .isEqualTo(defaultEnv.getArtifactRepository()); assertThat(actualEnv.getSpringBootMetadataUrl()) .isEqualTo(defaultEnv.getSpringBootMetadataUrl()); assertThat(actualEnv.getFallbackApplicationName()) .isEqualTo(defaultEnv.getFallbackApplicationName()); assertThat(actualEnv.isForceSsl()).isEqualTo(defaultEnv.isForceSsl()); }
@Test void generateApplicationNameSimpleDash() { assertThat(this.properties.generateApplicationName("my-demo")) .isEqualTo("MyDemoApplication"); }
@Test void generatePackageNameMultipleDashers() { assertThat(this.properties.cleanPackageName("com.foo--bar", "com.example")) .isEqualTo("com.foobar"); }