Skip to content

Commit 6434243

Browse files
authored
spring-boot: migrate elasticsearch to Spring Boot 4 (#31849)
1 parent 01a0667 commit 6434243

File tree

18 files changed

+64
-32
lines changed

18 files changed

+64
-32
lines changed

generators/base-workspaces/internal/docker-dependencies.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
import { mutateData } from '../../../lib/utils/object.ts';
2020
import type BaseCoreGenerator from '../../base-core/generator.ts';
2121
import { getDockerfileContainers } from '../../docker/utils.ts';
22-
import springBootDependencies from '../../spring-boot/resources/spring-boot-dependencies.ts';
22+
import springBoot4Dependencies from '../../spring-boot/resources/spring-boot-dependencies-4.ts';
23+
import springBoot3Dependencies from '../../spring-boot/resources/spring-boot-dependencies.ts';
2324

2425
const ELASTICSEARCH_IMAGE = 'docker.elastic.co/elasticsearch/elasticsearch';
2526

@@ -29,15 +30,23 @@ export function loadDockerDependenciesTask<const G extends BaseCoreGenerator>(
2930
) {
3031
context.dockerContainers ??= {};
3132
const dockerfile = this.readTemplate(this.fetchFromInstalledJHipster('server/resources/Dockerfile')) as string;
32-
const elasticsearchClientVersion = springBootDependencies.properties['elasticsearch-client.version'];
33+
mutateData(context.dockerContainers, this.prepareDependencies(getDockerfileContainers(dockerfile), 'docker'));
34+
}
35+
36+
export function loadDockerElasticsearchVersion<const G extends BaseCoreGenerator>(
37+
this: G,
38+
{ springBoot4, dockerContainers }: { springBoot4?: boolean; dockerContainers: Record<string, string> },
39+
) {
40+
const elasticsearchClientVersion = (springBoot4 ? springBoot4Dependencies : springBoot3Dependencies).properties[
41+
'elasticsearch-client.version'
42+
];
3343
mutateData(
34-
context.dockerContainers,
44+
dockerContainers,
3545
this.prepareDependencies(
3646
{
3747
elasticsearchTag: elasticsearchClientVersion,
3848
elasticsearchImage: ELASTICSEARCH_IMAGE,
3949
elasticsearch: `${ELASTICSEARCH_IMAGE}:${elasticsearchClientVersion}`,
40-
...getDockerfileContainers(dockerfile),
4150
},
4251
'docker',
4352
),

generators/ci-cd/__snapshots__/generator.spec.ts.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ exports[`generator - ci-cd cli with multiples values should match context snapsh
148148
],
149149
"dtoSuffix": "DTO",
150150
"dynamic": undefined,
151+
"emptyOrReactive": "",
151152
"enableGradleDevelocity": undefined,
152153
"enableHibernateCache": true,
153154
"enableI18nRTL": false,

generators/docker-compose/generator.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import {
3939
askForMonitoring,
4040
askForServiceDiscoveryWorkspace,
4141
} from '../base-workspaces/internal/docker-prompts.ts';
42-
import { loadDockerDependenciesTask } from '../base-workspaces/internal/index.ts';
42+
import { loadDockerDependenciesTask, loadDockerElasticsearchVersion } from '../base-workspaces/internal/index.ts';
4343
import { askForDirectoryPath } from '../base-workspaces/prompts.ts';
4444

4545
import cleanupOldFilesTask from './cleanup.ts';
@@ -134,10 +134,14 @@ export default class DockerComposeGenerator extends BaseWorkspacesGenerator<Base
134134

135135
get loadingWorkspaces() {
136136
return this.asLoadingWorkspacesTaskGroup({
137-
loadBaseDeployment({ deployment }) {
137+
loadBaseDeployment({ deployment, applications }) {
138138
deployment.jwtSecretKey = this.jhipsterConfig.jwtSecretKey;
139139

140140
loadDockerDependenciesTask.call(this, { context: deployment });
141+
loadDockerElasticsearchVersion.call(this, {
142+
springBoot4: applications.some(app => app.springBoot4),
143+
dockerContainers: deployment.dockerContainers!,
144+
});
141145
},
142146
});
143147
}

generators/heroku/__snapshots__/heroku.spec.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1446,7 +1446,7 @@ exports[`generator - Heroku monolith application with elasticsearch should match
14461446
<defaultSchemaName/>
14471447
<username>\${env.JDBC_DATABASE_USERNAME}</username>
14481448
<password>\${env.JDBC_DATABASE_PASSWORD}</password>
1449-
<referenceUrl>hibernate:spring:com.mycompany.myapp.domain?dialect=org.hibernate.dialect.PostgreSQLDialect&amp;hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy&amp;hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy</referenceUrl>
1449+
<referenceUrl>hibernate:spring:com.mycompany.myapp.domain?dialect=org.hibernate.dialect.PostgreSQLDialect&amp;hibernate.physical_naming_strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy&amp;hibernate.implicit_naming_strategy=org.springframework.boot.hibernate.SpringImplicitNamingStrategy</referenceUrl>
14501450
<verbose>true</verbose>
14511451
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
14521452
</configuration>

generators/java-simple-application/__snapshots__/application.spec.ts.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ exports[`application mutation test expects mutateApplication to match snapshot 1
44
{
55
"addOpenapiGeneratorPlugin": true,
66
"domains": [],
7+
"emptyOrReactive": "",
78
"entityPackages": [],
89
"graalvmReachabilityMetadata": Any<String>,
910
"imperativeOrReactive": "imperative",

generators/java-simple-application/application.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export type JavaSimpleApplicationAddedApplicationProperties = {
7070
addOpenapiGeneratorPlugin: boolean;
7171
graalvmReachabilityMetadata: string;
7272

73+
emptyOrReactive: string;
7374
imperativeOrReactive: string;
7475
optionalOrMono: string;
7576
optionalOrMonoOfNullable: string;
@@ -126,6 +127,7 @@ export const mutateApplication = {
126127

127128
addOpenapiGeneratorPlugin: true,
128129

130+
emptyOrReactive: ({ reactive }) => (reactive ? 'Reactive' : ''),
129131
imperativeOrReactive: ({ reactive }) => (reactive ? 'reactive' : 'imperative'),
130132
optionalOrMono: ({ reactive }) => (reactive ? 'Mono' : 'Optional'),
131133
optionalOrMonoOfNullable: ({ reactive }) => (reactive ? 'Mono.justOrEmpty' : 'Optional.ofNullable'),

generators/java/generators/bootstrap/__snapshots__/generator.spec.ts.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ exports[`generator - java:bootstrap bootstrapping default config should prepare
119119
"domains": Any<Array>,
120120
"dtoSuffix": "DTO",
121121
"dynamic": undefined,
122+
"emptyOrReactive": "",
122123
"enableGradleDevelocity": undefined,
123124
"enableHibernateCache": true,
124125
"enableI18nRTL": false,

generators/kubernetes/generators/bootstrap/generator.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import { defaults } from 'lodash-es';
2424

2525
import { convertSecretToBase64, createBase64Secret } from '../../../../lib/utils/secret.ts';
2626
import BaseWorkspacesGenerator from '../../../base-workspaces/index.ts';
27-
import { loadDockerDependenciesTask } from '../../../base-workspaces/internal/docker-dependencies.ts';
27+
import { loadDockerDependenciesTask, loadDockerElasticsearchVersion } from '../../../base-workspaces/internal/docker-dependencies.ts';
2828
import { checkDocker } from '../../../docker/support/index.ts';
2929
import { BaseKubernetesGenerator } from '../../generator.ts';
3030
import { helmConstants, kubernetesConstants } from '../../support/constants.ts';
@@ -98,8 +98,12 @@ export default class KubernetesBootstrapGenerator extends BaseKubernetesGenerato
9898
loadConstants({ deployment }) {
9999
defaults(deployment, kubernetesConstants, helmConstants);
100100
},
101-
async loadDockerDependenciesTask({ deployment }) {
101+
async loadDockerDependenciesTask({ deployment, applications }) {
102102
loadDockerDependenciesTask.call(this, { context: deployment });
103+
loadDockerElasticsearchVersion.call(this, {
104+
springBoot4: applications.some(app => app.springBoot4),
105+
dockerContainers: deployment.dockerContainers!,
106+
});
103107
},
104108
appsConfigs({ deployment, applications }) {
105109
deployment.appConfigs = applications;

generators/server/generators/bootstrap/__snapshots__/generator.spec.ts.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ exports[`generator - server:bootstrap bootstrapping default config should prepar
119119
"domains": Any<Array>,
120120
"dtoSuffix": "DTO",
121121
"dynamic": undefined,
122+
"emptyOrReactive": "",
122123
"enableGradleDevelocity": undefined,
123124
"enableHibernateCache": true,
124125
"enableI18nRTL": false,

generators/server/generators/bootstrap/generator.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { mutateData } from '../../../../lib/utils/index.ts';
2323
import BaseApplicationGenerator from '../../../base-application/index.ts';
2424
import { loadRequiredConfigIntoEntity } from '../../../base-application/support/index.ts';
2525
import type { Application as BaseApplicationApplication, Entity as BaseApplicationEntity } from '../../../base-application/types.d.ts';
26-
import { loadDockerDependenciesTask } from '../../../base-workspaces/internal/docker-dependencies.ts';
26+
import { loadDockerDependenciesTask, loadDockerElasticsearchVersion } from '../../../base-workspaces/internal/docker-dependencies.ts';
2727
import type { Application as SpringDataRelationalApplication } from '../../../spring-data/generators/relational/types.d.ts';
2828
import serverCommand from '../../command.ts';
2929
import {
@@ -121,6 +121,22 @@ export default class ServerBootstrapGenerator extends BaseApplicationGenerator<S
121121
return this.preparing;
122122
}
123123

124+
get postPreparing() {
125+
return this.asPostPreparingTaskGroup({
126+
async loadDockerDependencies({ application }) {
127+
// springBoot4 is prepared in preparing phase of spring-boot generator
128+
loadDockerElasticsearchVersion.call(this, {
129+
springBoot4: application.springBoot4,
130+
dockerContainers: application.dockerContainers!,
131+
});
132+
},
133+
});
134+
}
135+
136+
get [BaseApplicationGenerator.POST_PREPARING]() {
137+
return this.postPreparing;
138+
}
139+
124140
get loadingEntities() {
125141
return this.asLoadingEntitiesTaskGroup({
126142
loadingEntities({ entitiesToLoad }) {

0 commit comments

Comments
 (0)