Skip to content

Commit cdf7365

Browse files
authored
kafka: adjusts (#32079)
1 parent 70306d4 commit cdf7365

File tree

9 files changed

+95
-249
lines changed

9 files changed

+95
-249
lines changed

generators/spring-cloud/generators/kafka/__snapshots__/generator.spec.ts.snap

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,7 @@ exports[`generator - spring-cloud:kafka jdl support should match files snapshot
1919

2020
exports[`generator - spring-cloud:kafka with defaults options should call source snapshot 1`] = `
2121
{
22-
"addIntegrationTestAnnotation": [
23-
{
24-
"annotation": "EmbeddedKafka",
25-
"package": "com.mycompany.myapp.config",
26-
},
27-
],
28-
"addMainLog": [
29-
{
30-
"level": "INFO",
31-
"name": "org.apache.kafka",
32-
},
33-
{
34-
"level": "WARN",
35-
"name": "org.apache.kafka",
36-
},
37-
],
38-
"addMavenDependency": [
22+
"addJavaDependencies": [
3923
[
4024
{
4125
"artifactId": "spring-cloud-stream",
@@ -67,6 +51,12 @@ exports[`generator - spring-cloud:kafka with defaults options should call source
6751
},
6852
],
6953
],
54+
"addMainLog": [
55+
{
56+
"level": "WARN",
57+
"name": "org.apache.kafka",
58+
},
59+
],
7060
"addTestLog": [
7161
{
7262
"level": "WARN",
@@ -77,11 +67,22 @@ exports[`generator - spring-cloud:kafka with defaults options should call source
7767
"name": "org.I0Itec",
7868
},
7969
],
80-
"addTestSpringFactory": [
81-
{
82-
"key": "org.springframework.test.context.ContextCustomizerFactory",
83-
"value": "com.mycompany.myapp.config.KafkaTestContainersSpringContextCustomizerFactory",
84-
},
70+
"editJavaFile": [
71+
[
72+
"src/test/java/com/mycompany/myapp/IntegrationTest.java",
73+
{
74+
"annotations": [
75+
{
76+
"annotation": "ImportTestcontainers",
77+
"package": "org.springframework.boot.testcontainers.context",
78+
"parameters": [Function],
79+
},
80+
],
81+
"imports": [
82+
"com.mycompany.myapp.config.KafkaTestContainer",
83+
],
84+
},
85+
],
8586
],
8687
}
8788
`;
@@ -100,15 +101,9 @@ exports[`generator - spring-cloud:kafka with defaults options should match files
100101
"src/main/java/com/mycompany/myapp/web/rest/JhipsterKafkaResource.java": {
101102
"stateCleared": "modified",
102103
},
103-
"src/test/java/com/mycompany/myapp/config/EmbeddedKafka.java": {
104-
"stateCleared": "modified",
105-
},
106104
"src/test/java/com/mycompany/myapp/config/KafkaTestContainer.java": {
107105
"stateCleared": "modified",
108106
},
109-
"src/test/java/com/mycompany/myapp/config/KafkaTestContainersSpringContextCustomizerFactory.java": {
110-
"stateCleared": "modified",
111-
},
112107
"src/test/java/com/mycompany/myapp/web/rest/JhipsterKafkaResourceIT.java": {
113108
"stateCleared": "modified",
114109
},

generators/spring-cloud/generators/kafka/files.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,11 @@
1717
* limitations under the License.
1818
*/
1919
import { asWriteFilesSection } from '../../../base-application/support/task-type-inference.ts';
20-
import { GRADLE_BUILD_SRC_MAIN_DIR, SERVER_MAIN_SRC_DIR, SERVER_TEST_SRC_DIR } from '../../../generator-constants.ts';
20+
import { SERVER_MAIN_SRC_DIR, SERVER_TEST_SRC_DIR } from '../../../generator-constants.ts';
2121
import { moveToJavaPackageSrcDir, moveToJavaPackageTestDir } from '../../../java/support/index.ts';
2222

2323
export const kafkaFiles = asWriteFilesSection({
2424
config: [
25-
{
26-
condition: data => data.buildToolGradle,
27-
path: GRADLE_BUILD_SRC_MAIN_DIR,
28-
templates: ['jhipster.kafka-conventions.gradle'],
29-
},
3025
{
3126
path: `${SERVER_MAIN_SRC_DIR}_package_/`,
3227
renameTo: moveToJavaPackageSrcDir,
@@ -49,11 +44,7 @@ export const kafkaFiles = asWriteFilesSection({
4944
{
5045
path: `${SERVER_TEST_SRC_DIR}_package_/`,
5146
renameTo: moveToJavaPackageTestDir,
52-
templates: [
53-
'config/KafkaTestContainer.java',
54-
'config/EmbeddedKafka.java',
55-
'config/KafkaTestContainersSpringContextCustomizerFactory.java',
56-
],
47+
templates: ['config/KafkaTestContainer.java'],
5748
},
5849
{
5950
path: `${SERVER_TEST_SRC_DIR}_package_/`,

generators/spring-cloud/generators/kafka/generator.ts

Lines changed: 53 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
* limitations under the License.
1818
*/
1919

20+
import { GRADLE_BUILD_SRC_MAIN_DIR } from '../../../generator-constants.ts';
2021
import { SpringBootApplicationGenerator } from '../../../spring-boot/generator.ts';
2122

2223
import cleanupKafkaFilesTask from './cleanup.ts';
@@ -35,6 +36,16 @@ export default class KafkaGenerator extends SpringBootApplicationGenerator {
3536

3637
get writing() {
3738
return this.asWritingTaskGroup({
39+
async cleanup({ application, control }) {
40+
await control.cleanupFiles({
41+
'9.0.0-beta.1': [
42+
[application.buildToolGradle, `${GRADLE_BUILD_SRC_MAIN_DIR}jhipster.kafka-conventions.gradle`],
43+
`${application.javaPackageSrcDir}config/KafkaTestContainersSpringContextCustomizerFactory.java`,
44+
`${application.javaPackageSrcDir}config/EmbeddedKafka.java`,
45+
`${application.srcTestResources}META-INF/spring.factories`,
46+
],
47+
});
48+
},
3849
cleanupKafkaFilesTask,
3950
async writing({ application }) {
4051
await this.writeFiles({
@@ -51,58 +62,54 @@ export default class KafkaGenerator extends SpringBootApplicationGenerator {
5162

5263
get postWriting() {
5364
return this.asPostWritingTaskGroup({
54-
customizeApplicationForKafka({ source, application }) {
55-
source.addMainLog?.({ name: 'org.apache.kafka', level: 'INFO' });
65+
customizeLog({ source }) {
66+
source.addMainLog?.({ name: 'org.apache.kafka', level: 'WARN' });
5667
source.addTestLog?.({ name: 'kafka', level: 'WARN' });
5768
source.addTestLog?.({ name: 'org.I0Itec', level: 'WARN' });
58-
source.addIntegrationTestAnnotation?.({ package: `${application.packageName}.config`, annotation: 'EmbeddedKafka' });
59-
60-
source.addTestSpringFactory?.({
61-
key: 'org.springframework.test.context.ContextCustomizerFactory',
62-
value: `${application.packageName}.config.KafkaTestContainersSpringContextCustomizerFactory`,
63-
});
6469
},
65-
applyKafkaGradleConventionPlugin({ source, application }) {
66-
if (application.buildToolGradle) {
67-
source.addGradlePlugin?.({ id: 'jhipster.kafka-conventions' });
68-
}
69-
},
70-
addKafkaMavenDependencies({ application, source }) {
71-
if (application.buildToolMaven) {
72-
source.addMavenDependency?.([
73-
{
74-
groupId: 'org.springframework.cloud',
75-
artifactId: 'spring-cloud-stream',
76-
},
77-
{
78-
groupId: 'org.springframework.cloud',
79-
artifactId: 'spring-cloud-starter-stream-kafka',
80-
},
81-
{
82-
groupId: 'org.springframework.cloud',
83-
artifactId: 'spring-cloud-stream-test-binder',
84-
scope: 'test',
85-
},
86-
{
87-
groupId: 'org.testcontainers',
88-
artifactId: 'testcontainers-junit-jupiter',
89-
scope: 'test',
90-
},
91-
{
92-
groupId: 'org.testcontainers',
93-
artifactId: 'testcontainers',
94-
scope: 'test',
95-
},
70+
integrationTest({ application, source }) {
71+
source.editJavaFile!(`${application.javaPackageTestDir}IntegrationTest.java`, {
72+
imports: [`${application.packageName}.config.KafkaTestContainer`],
73+
annotations: [
9674
{
97-
groupId: 'org.testcontainers',
98-
artifactId: 'testcontainers-kafka',
99-
scope: 'test',
75+
package: 'org.springframework.boot.testcontainers.context',
76+
annotation: 'ImportTestcontainers',
77+
parameters: (_, cb) => cb.addKeyValue('value', 'KafkaTestContainer.class'),
10078
},
101-
]);
102-
}
79+
],
80+
});
10381
},
104-
addLog({ source }) {
105-
source.addMainLog!({ name: 'org.apache.kafka', level: 'WARN' });
82+
addDependencies({ source }) {
83+
source.addJavaDependencies?.([
84+
{
85+
groupId: 'org.springframework.cloud',
86+
artifactId: 'spring-cloud-stream',
87+
},
88+
{
89+
groupId: 'org.springframework.cloud',
90+
artifactId: 'spring-cloud-starter-stream-kafka',
91+
},
92+
{
93+
groupId: 'org.springframework.cloud',
94+
artifactId: 'spring-cloud-stream-test-binder',
95+
scope: 'test',
96+
},
97+
{
98+
groupId: 'org.testcontainers',
99+
artifactId: 'testcontainers-junit-jupiter',
100+
scope: 'test',
101+
},
102+
{
103+
groupId: 'org.testcontainers',
104+
artifactId: 'testcontainers',
105+
scope: 'test',
106+
},
107+
{
108+
groupId: 'org.testcontainers',
109+
artifactId: 'testcontainers-kafka',
110+
scope: 'test',
111+
},
112+
]);
106113
},
107114
});
108115
}

generators/spring-cloud/generators/kafka/templates/buildSrc/src/main/groovy/jhipster.kafka-conventions.gradle.ejs

Lines changed: 0 additions & 26 deletions
This file was deleted.

generators/spring-cloud/generators/kafka/templates/src/test/java/_package_/config/EmbeddedKafka.java.ejs

Lines changed: 0 additions & 29 deletions
This file was deleted.

generators/spring-cloud/generators/kafka/templates/src/test/java/_package_/config/KafkaTestContainer.java.ejs

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,41 +19,25 @@
1919
package <%= packageName %>.config;
2020

2121
import java.time.Duration;
22-
import org.springframework.beans.factory.DisposableBean;
23-
import org.springframework.beans.factory.InitializingBean;
22+
23+
import org.springframework.test.context.DynamicPropertyRegistry;
24+
import org.springframework.test.context.DynamicPropertySource;
2425
import org.slf4j.Logger;
2526
import org.slf4j.LoggerFactory;
26-
import org.testcontainers.kafka.KafkaContainer;
2727
import org.testcontainers.containers.output.Slf4jLogConsumer;
28-
import org.testcontainers.utility.DockerImageName;
29-
30-
public class KafkaTestContainer implements InitializingBean, DisposableBean {
31-
32-
private KafkaContainer kafkaContainer;
33-
private static final Logger LOG = LoggerFactory.getLogger(KafkaTestContainer.class);
34-
35-
@Override
36-
public void destroy() {
37-
if (null != kafkaContainer && kafkaContainer.isRunning()) {
38-
kafkaContainer.close();
39-
}
40-
}
41-
42-
@Override
43-
public void afterPropertiesSet() {
44-
if (null == kafkaContainer) {
45-
kafkaContainer = new KafkaContainer(DockerImageName.parse("<%- dockerContainers.kafka %>"))
46-
.withLogConsumer(new Slf4jLogConsumer(LOG))
47-
.withStartupTimeout(Duration.ofMinutes(3))
48-
.withEnv("KAFKA_LISTENERS", "PLAINTEXT://:9092,BROKER://:9093,CONTROLLER://:9094")
49-
.withReuse(true);
50-
}
51-
if (!kafkaContainer.isRunning()) {
52-
kafkaContainer.start();
53-
}
54-
}
55-
56-
public KafkaContainer getKafkaContainer() {
57-
return kafkaContainer;
28+
import org.testcontainers.kafka.KafkaContainer;
29+
import org.testcontainers.junit.jupiter.Container;
30+
31+
public interface KafkaTestContainer {
32+
@Container
33+
KafkaContainer kafkaContainer = new KafkaContainer("<%- dockerContainers.kafka %>")
34+
.withStartupTimeout(Duration.ofMinutes(4))
35+
.withEnv("KAFKA_LISTENERS", "PLAINTEXT://:9092,BROKER://:9093,CONTROLLER://:9094")
36+
.withLogConsumer(new Slf4jLogConsumer(LoggerFactory.getLogger(KafkaTestContainer.class)))
37+
.withReuse(true);
38+
39+
@DynamicPropertySource
40+
static void registerProperties(DynamicPropertyRegistry registry) {
41+
registry.add("spring.cloud.stream.kafka.binder.brokers", () -> kafkaContainer.getHost() + ':' + kafkaContainer.getFirstMappedPort());
5842
}
5943
}

0 commit comments

Comments
 (0)