Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fixes
Browse files Browse the repository at this point in the history
mshima committed Aug 4, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 3899aeb commit f543b9f
Showing 1 changed file with 80 additions and 12 deletions.
92 changes: 80 additions & 12 deletions generators/spring-boot/generator.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { basename, join } from 'path';
import { basename, dirname, join } from 'path';
import { existsSync, mkdirSync, renameSync } from 'fs';
// Use spring-boot as parent due to this context in generators
import BaseApplicationGenerator from 'generator-jhipster/generators/base-application';
import { createNeedleCallback } from 'generator-jhipster/generators/base/support';
@@ -62,7 +63,6 @@ export default class extends BaseApplicationGenerator {
// Ignore files from generators
file =>
[
'jhipster:spring-boot',
'jhipster:spring-cloud:gateway',
'jhipster:spring-cloud-stream:kafka',
'jhipster:spring-cloud-stream:pulsar',
@@ -83,10 +83,60 @@ export default class extends BaseApplicationGenerator {
'_enumName_.java',
'_persistClass_.java.jhi.jackson_identity_info',
'_entityClass_GatlingTest.java',

'SpaWebFilter_imperative.java',
'SpaWebFilterIT_imperative.java',
'SecurityJwtConfiguration.java',
'AuthenticationIntegrationTest.java',
'JwtAuthenticationTestUtils.java',
'AuthenticationIntegrationTest.java',
'TokenAuthenticationSecurityMetersIT.java',
'TokenAuthenticationIT.java',
'AuthenticateController.java',
'AuthenticateControllerIT.java',
'CRLFLogConverterTest.java',
'SpaWebFilterIT_reactive.java',
'SpaWebFilterTestController_reactive.java',
'AccountResource_oauth2.java',
].includes(sourceBasename)
? undefined
: file;
},
// Prepare spring-boot v3 templates
file => {
if (file.namespace === 'jhipster-kotlin:spring-boot-v2' || !file.sourceFile.includes('.java')) return file;
const resolvedKotlinFile = this.templatePath(`${convertToKotlinFile(file.sourceFile)}.ejs`);
if (existsSync(resolvedKotlinFile)) return file;
let ktFile = convertToKotlinFile(file.sourceFile);
for (const fileMap of [
['/EntityMapper.', '/BaseEntityMapper.'],
['SecurityUtilsUnitTest_imperative.', 'SecurityUtilsUnitTest.'],
['SecurityConfiguration_imperative.', 'SecurityConfiguration.'],
['ExceptionTranslatorIT_imperative.', 'ExceptionTranslatorIT.'],
['SpaWebFilter_reactive.', 'SpaWebFilter.'],
['LogoutResource_imperative.', 'LogoutResource.'],
]) {
// Files renamed in v8
ktFile = ktFile.replace(...fileMap);
}
for (const resolvedSourceFile of [
this.templatePath('../../spring-boot-v2/templates', `${ktFile}.ejs`),
this.templatePath('../../spring-boot-v2/templates', `${ktFile.replace('/_entityPackage_', '')}.ejs`),
]) {
// Copy from v2 to v3 templates
if (existsSync(resolvedSourceFile)) {
mkdirSync(dirname(resolvedKotlinFile), { recursive: true });
renameSync(resolvedSourceFile, resolvedKotlinFile);
return file;
}
}
if (file.namespace === 'jhipster:spring-boot') {
// Print files that should be implemented for spring-boot v3
// console.log(`'${basename(file.sourceFile)}',`);
return undefined;
}
return file;
},
// Updated templates from v8
file => {
if (!['jhipster-kotlin:spring-boot-v2'].includes(file.namespace)) return file;
@@ -105,9 +155,9 @@ export default class extends BaseApplicationGenerator {
return file;
},
file => {
let { resolvedSourceFile, sourceFile, destinationFile, namespace } = file;
let { resolvedSourceFile, sourceFile, destinationFile, namespace: ns } = file;
// Already resolved kotlin files
if (resolvedSourceFile.endsWith('.kt') || resolvedSourceFile.includes('.kt.')) {
if (resolvedSourceFile && (resolvedSourceFile.endsWith('.kt') || resolvedSourceFile.includes('.kt.'))) {
return file;
}

@@ -123,7 +173,7 @@ export default class extends BaseApplicationGenerator {

const sourceBasename = basename(sourceFile);
if (
file.namespace === 'jhipster:spring-data-relational' &&
ns === 'jhipster:spring-data-relational' &&
['UserSqlHelper_reactive.java', 'ColumnConverter_reactive.java', 'EntityManager_reactive.java'].includes(
sourceBasename,
)
@@ -133,10 +183,10 @@ export default class extends BaseApplicationGenerator {

const isCommonFile = filename => {
const sourceBasename = basename(filename);
if (['_entityClass_Repository.java', '_entityClass_Repository_reactive.java'].includes(sourceBasename)) {
return file.namespace !== 'spring-data-couchbase';
if (['_entityClass_Repository.kt', '_entityClass_Repository_reactive.kt'].includes(sourceBasename)) {
return ns !== 'spring-data-couchbase';
}
return ['TestContainersSpringContextCustomizerFactory.java'].includes(sourceBasename);
return ['TestContainersSpringContextCustomizerFactory.kt'].includes(sourceBasename);
};

// TestContainersSpringContextCustomizerFactory uses a single template for modularized (dbs) and non-modularized (kafka, etc) templates
@@ -156,10 +206,28 @@ export default class extends BaseApplicationGenerator {
}

sourceFile = sourceFile.replace('/java/package/', '/java/_package_/');
sourceFile =
file.namespace === 'jhipster-kotlin:spring-boot-v2' || isCommonFile(sourceFile)
? convertToKotlinFile(sourceFile)
: join(namespace.split(':').pop(), convertToKotlinFile(sourceFile));
sourceFile = convertToKotlinFile(sourceFile);

if (ns === 'jhipster-kotlin:spring-boot-v2' && !isCommonFile(sourceFile)) {
let resolvedSourceFile = this.templatePath('../../spring-boot-v2/templates', sourceFile);
if (!existsSync(`${resolvedSourceFile}.ejs`)) {
// This condition can make the file to render twice, but fixes jhipster v7 files differences.
resolvedSourceFile = this.templatePath(sourceFile);
if (!existsSync(`${resolvedSourceFile}.ejs`)) {
return undefined;
}
}
return {
...file,
sourceFile,
javaResolvedSourceFile: resolvedSourceFile,
resolvedSourceFile,
destinationFile: convertToKotlinFile(destinationFile),
};
}

const prefix = ns === 'jhipster:spring-boot' || isCommonFile(sourceFile) ? '' : ns.split(':').pop();
sourceFile = join(prefix, sourceFile);

return {
...file,

0 comments on commit f543b9f

Please sign in to comment.