Skip to content

Commit d099dbc

Browse files
committed
Add ApplicationYamlPropertiesContributor
1 parent 1c4787a commit d099dbc

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/properties/ApplicationProperties.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ void writeTo(PrintWriter writer) {
7373
}
7474
}
7575

76+
void writeToYaml(PrintWriter writer) {
77+
// TODO: Impl
78+
}
79+
7680
private void add(String key, Object value) {
7781
Assert.state(!this.properties.containsKey(key), () -> "Property '%s' already exists".formatted(key));
7882
this.properties.put(key, value);

initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/properties/ApplicationPropertiesProjectGenerationConfiguration.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package io.spring.initializr.generator.spring.properties;
1818

19+
import io.spring.initializr.generator.condition.ConditionalOnConfigurationFileFormat;
20+
import io.spring.initializr.generator.configuration.format.properties.PropertiesFormat;
21+
import io.spring.initializr.generator.configuration.format.yaml.YamlFormat;
1922
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
2023

2124
import org.springframework.beans.factory.ObjectProvider;
@@ -37,8 +40,16 @@ ApplicationProperties applicationProperties(ObjectProvider<ApplicationProperties
3740
}
3841

3942
@Bean
43+
@ConditionalOnConfigurationFileFormat(PropertiesFormat.ID)
4044
ApplicationPropertiesContributor applicationPropertiesContributor(ApplicationProperties applicationProperties) {
4145
return new ApplicationPropertiesContributor(applicationProperties);
4246
}
4347

48+
@Bean
49+
@ConditionalOnConfigurationFileFormat(YamlFormat.ID)
50+
ApplicationYamlPropertiesContributor applicationYamlPropertiesContributor(
51+
ApplicationProperties applicationProperties) {
52+
return new ApplicationYamlPropertiesContributor(applicationProperties);
53+
}
54+
4455
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* Copyright 2012 - present the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.spring.initializr.generator.spring.properties;
18+
19+
import java.io.IOException;
20+
import java.io.PrintWriter;
21+
import java.nio.charset.StandardCharsets;
22+
import java.nio.file.Files;
23+
import java.nio.file.Path;
24+
import java.nio.file.StandardOpenOption;
25+
26+
import io.spring.initializr.generator.project.contributor.ProjectContributor;
27+
28+
/**
29+
* A {@link ProjectContributor} that contributes a {@code application.yml} file to a
30+
* project.
31+
*
32+
* @author Sijun Yang
33+
*/
34+
public class ApplicationYamlPropertiesContributor implements ProjectContributor {
35+
36+
private static final String FILE = "src/main/resources/application.yml";
37+
38+
private final ApplicationProperties properties;
39+
40+
public ApplicationYamlPropertiesContributor(ApplicationProperties properties) {
41+
this.properties = properties;
42+
}
43+
44+
@Override
45+
public void contribute(Path projectRoot) throws IOException {
46+
Path output = projectRoot.resolve(FILE);
47+
if (!Files.exists(output)) {
48+
Files.createDirectories(output.getParent());
49+
Files.createFile(output);
50+
}
51+
try (PrintWriter writer = new PrintWriter(Files.newOutputStream(output, StandardOpenOption.APPEND), false,
52+
StandardCharsets.UTF_8)) {
53+
this.properties.writeToYaml(writer);
54+
}
55+
}
56+
57+
}

0 commit comments

Comments
 (0)