UNPKG

generator-fedhipster

Version:

Spring Boot + Angular/React in one handy generator

1,119 lines (1,116 loc) 77.4 kB
/** * Copyright 2013-2019 the original author or authors from the JHipster project. * * This file is part of the JHipster project, see https://www.jhipster.tech/ * for more information. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ const mkdirp = require('mkdirp'); const cleanup = require('../cleanup'); const constants = require('../generator-constants'); /* Constants use throughout */ const INTERPOLATE_REGEX = constants.INTERPOLATE_REGEX; const DOCKER_DIR = constants.DOCKER_DIR; const TEST_DIR = constants.TEST_DIR; const SERVER_MAIN_SRC_DIR = constants.SERVER_MAIN_SRC_DIR; const SERVER_MAIN_RES_DIR = constants.SERVER_MAIN_RES_DIR; const SERVER_TEST_SRC_DIR = constants.SERVER_TEST_SRC_DIR; const SERVER_TEST_RES_DIR = constants.SERVER_TEST_RES_DIR; const shouldSkipUserManagement = generator => generator.skipUserManagement && (generator.applicationType !== 'monolith' || generator.authenticationType !== 'oauth2'); /** * The default is to use a file path string. It implies use of the template method. * For any other config an object { file:.., method:.., template:.. } can be used */ const serverFiles = { jib: [ { path: 'src/main/jib/', templates: ['entrypoint.sh'] } ], packageJson: [ { condition: generator => generator.skipClient, templates: ['package.json'] } ], docker: [ { path: DOCKER_DIR, templates: [ 'Dockerfile', 'entrypoint.sh', '.dockerignore', 'app.yml', 'sonar.yml', 'monitoring.yml', 'prometheus/prometheus.yml', 'grafana/provisioning/dashboards/dashboard.yml', 'grafana/provisioning/dashboards/JVM.json', 'grafana/provisioning/datasources/datasource.yml' ] }, { condition: generator => generator.prodDatabaseType !== 'no' && generator.prodDatabaseType !== 'oracle', path: DOCKER_DIR, templates: [{ file: generator => `${generator.prodDatabaseType}.yml` }] }, { condition: generator => generator.prodDatabaseType === 'mongodb', path: DOCKER_DIR, templates: ['mongodb-cluster.yml', 'mongodb/MongoDB.Dockerfile', 'mongodb/scripts/init_replicaset.js'] }, { condition: generator => generator.prodDatabaseType === 'mongodb', path: DOCKER_DIR, templates: ['mongodb-cluster.yml', 'mongodb/MongoDB.Dockerfile', 'mongodb/scripts/init_replicaset.js'] }, { condition: generator => generator.prodDatabaseType === 'couchbase', path: DOCKER_DIR, templates: ['couchbase-cluster.yml', 'couchbase/Couchbase.Dockerfile', 'couchbase/scripts/configure-node.sh'] }, { condition: generator => generator.prodDatabaseType === 'cassandra', path: DOCKER_DIR, templates: [ // docker-compose files 'cassandra-cluster.yml', 'cassandra-migration.yml', // dockerfiles 'cassandra/Cassandra-Migration.Dockerfile', // scripts 'cassandra/scripts/autoMigrate.sh', 'cassandra/scripts/execute-cql.sh' ] }, { condition: generator => generator.cacheProvider === 'hazelcast', path: DOCKER_DIR, templates: ['hazelcast-management-center.yml'] }, { condition: generator => generator.cacheProvider === 'memcached', path: DOCKER_DIR, templates: ['memcached.yml'] }, { condition: generator => generator.searchEngine === 'elasticsearch', path: DOCKER_DIR, templates: ['elasticsearch.yml'] }, { condition: generator => generator.messageBroker === 'kafka', path: DOCKER_DIR, templates: ['kafka.yml'] }, { condition: generator => !!generator.serviceDiscoveryType, path: DOCKER_DIR, templates: [{ file: 'config/README.md', renameTo: () => 'central-server-config/README.md' }] }, { condition: generator => generator.serviceDiscoveryType && generator.serviceDiscoveryType === 'consul', path: DOCKER_DIR, templates: [ 'consul.yml', { file: 'config/git2consul.json', method: 'copy' }, { file: 'config/consul-config/application.yml', method: 'copy', renameTo: () => 'central-server-config/application.yml' } ] }, { condition: generator => generator.serviceDiscoveryType && generator.serviceDiscoveryType === 'eureka', path: DOCKER_DIR, templates: [ 'jhipster-registry.yml', { file: 'config/docker-config/application.yml', method: 'copy', renameTo: () => 'central-server-config/docker-config/application.yml' }, { file: 'config/localhost-config/application.yml', method: 'copy', renameTo: () => 'central-server-config/localhost-config/application.yml' } ] }, { condition: generator => !!generator.enableSwaggerCodegen, path: DOCKER_DIR, templates: ['swagger-editor.yml'] }, { condition: generator => generator.authenticationType === 'oauth2' && generator.applicationType !== 'microservice', path: DOCKER_DIR, templates: [ 'keycloak.yml', { file: 'config/realm-config/jhipster-realm.json', renameTo: () => 'realm-config/jhipster-realm.json' }, { file: 'config/realm-config/jhipster-users-0.json', method: 'copy', renameTo: () => 'realm-config/jhipster-users-0.json' } ] } ], serverBuild: [ { condition: generator => generator.buildTool === 'gradle', templates: [ 'build.gradle', 'settings.gradle', 'gradle.properties', 'gradle/sonar.gradle', 'gradle/docker.gradle', { file: 'gradle/profile_dev.gradle', options: { interpolate: INTERPOLATE_REGEX } }, { file: 'gradle/profile_prod.gradle', options: { interpolate: INTERPOLATE_REGEX } }, 'gradle/zipkin.gradle', { file: 'gradlew', method: 'copy', noEjs: true }, { file: 'gradlew.bat', method: 'copy', noEjs: true }, { file: 'gradle/wrapper/gradle-wrapper.jar', method: 'copy', noEjs: true }, { file: 'gradle/wrapper/gradle-wrapper.properties', method: 'copy', noEjs: true } ] }, { condition: generator => generator.buildTool === 'gradle' && !!generator.enableSwaggerCodegen, templates: ['gradle/swagger.gradle'] }, { condition: generator => generator.buildTool === 'maven', templates: [ { file: 'mvnw', method: 'copy', noEjs: true }, { file: 'mvnw.cmd', method: 'copy', noEjs: true }, { file: '.mvn/wrapper/maven-wrapper.jar', method: 'copy', noEjs: true }, { file: '.mvn/wrapper/maven-wrapper.properties', method: 'copy', noEjs: true }, { file: '.mvn/wrapper/MavenWrapperDownloader.java', method: 'copy', noEjs: true }, { file: 'pom.xml', options: { interpolate: INTERPOLATE_REGEX } } ] } ], serverResource: [ { condition: generator => generator.clientFramework === 'react', path: SERVER_MAIN_RES_DIR, templates: [ { file: 'banner-react.txt', method: 'copy', noEjs: true, renameTo: () => 'banner.txt' } ] }, { condition: generator => generator.clientFramework !== 'react', path: SERVER_MAIN_RES_DIR, templates: [{ file: 'banner.txt', method: 'copy', noEjs: true }] }, { condition: generator => generator.devDatabaseType === 'h2Disk' || generator.devDatabaseType === 'h2Memory', path: SERVER_MAIN_RES_DIR, templates: [{ file: 'h2.server.properties', renameTo: () => '.h2.server.properties' }] }, { condition: generator => !!generator.enableSwaggerCodegen, path: SERVER_MAIN_RES_DIR, templates: ['swagger/api.yml'] }, { path: SERVER_MAIN_RES_DIR, templates: [ // Thymeleaf templates { file: 'templates/error.html', method: 'copy' }, 'logback-spring.xml', 'config/application.yml', 'config/application-dev.yml', 'config/application-tls.yml', 'config/application-prod.yml', 'i18n/messages.properties' ] }, { condition: generator => generator.databaseType === 'sql', path: SERVER_MAIN_RES_DIR, templates: [ { file: 'config/liquibase/changelog/initial_schema.xml', renameTo: () => 'config/liquibase/changelog/00000000000000_initial_schema.xml', options: { interpolate: INTERPOLATE_REGEX } }, { file: 'config/liquibase/master.xml', method: 'copy' } ] }, { condition: generator => generator.databaseType === 'mongodb', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/dbmigrations/package-info.java', renameTo: generator => `${generator.javaDir}config/dbmigrations/package-info.java` } ] }, { condition: generator => generator.databaseType === 'mongodb' && (!generator.skipUserManagement || (generator.skipUserManagement && generator.authenticationType === 'oauth2')), path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/dbmigrations/InitialSetupMigration.java', renameTo: generator => `${generator.javaDir}config/dbmigrations/InitialSetupMigration.java` } ] }, { condition: generator => generator.databaseType === 'couchbase', path: SERVER_MAIN_RES_DIR, templates: ['config/couchmove/changelog/V0__create_indexes.n1ql'] }, { condition: generator => generator.databaseType === 'couchbase' && (!generator.skipUserManagement || generator.authenticationType === 'oauth2'), path: SERVER_MAIN_RES_DIR, templates: [ 'config/couchmove/changelog/V0.1__initial_setup/ROLE_ADMIN.json', 'config/couchmove/changelog/V0.1__initial_setup/ROLE_USER.json', 'config/couchmove/changelog/V0.1__initial_setup/user__admin.json', 'config/couchmove/changelog/V0.1__initial_setup/user__anonymoususer.json', 'config/couchmove/changelog/V0.1__initial_setup/user__system.json', 'config/couchmove/changelog/V0.1__initial_setup/user__user.json' ] }, { condition: generator => generator.databaseType === 'cassandra', path: SERVER_MAIN_RES_DIR, templates: [ 'config/cql/create-keyspace-prod.cql', 'config/cql/create-keyspace.cql', 'config/cql/drop-keyspace.cql', { file: 'config/cql/changelog/README.md', method: 'copy' } ] }, { condition: generator => generator.databaseType === 'cassandra' && generator.applicationType !== 'microservice' && (!generator.skipUserManagement || generator.authenticationType === 'oauth2'), path: SERVER_MAIN_RES_DIR, templates: [ { file: 'config/cql/changelog/create-tables.cql', renameTo: () => 'config/cql/changelog/00000000000000_create-tables.cql' }, { file: 'config/cql/changelog/insert_default_users.cql', renameTo: () => 'config/cql/changelog/00000000000001_insert_default_users.cql' } ] } ], serverJavaAuthConfig: [ { condition: generator => generator.databaseType === 'sql' || generator.databaseType === 'mongodb' || generator.databaseType === 'couchbase', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/security/SpringSecurityAuditorAware.java', renameTo: generator => `${generator.javaDir}security/SpringSecurityAuditorAware.java` } ] }, { path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/security/SecurityUtils.java', renameTo: generator => `${generator.javaDir}security/SecurityUtils.java` }, { file: 'package/security/AuthoritiesConstants.java', renameTo: generator => `${generator.javaDir}security/AuthoritiesConstants.java` }, { file: 'package/security/package-info.java', renameTo: generator => `${generator.javaDir}security/package-info.java` } ] }, { path: SERVER_TEST_SRC_DIR, templates: [ { file: 'package/security/SecurityUtilsUnitTest.java', renameTo: generator => `${generator.testDir}security/SecurityUtilsUnitTest.java` } ] }, { condition: generator => generator.authenticationType === 'jwt', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/security/jwt/TokenProvider.java', renameTo: generator => `${generator.javaDir}security/jwt/TokenProvider.java` }, { file: 'package/security/jwt/JWTFilter.java', renameTo: generator => `${generator.javaDir}security/jwt/JWTFilter.java` } ] }, { condition: generator => generator.authenticationType === 'jwt' && !generator.reactive, path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/security/jwt/JWTConfigurer.java', renameTo: generator => `${generator.javaDir}security/jwt/JWTConfigurer.java` } ] }, { condition: generator => !generator.reactive && generator.applicationType !== 'uaa', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/SecurityConfiguration.java', renameTo: generator => `${generator.javaDir}config/SecurityConfiguration.java` } ] }, { condition: generator => generator.reactive && generator.applicationType !== 'uaa', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/ReactiveSecurityConfiguration.java', renameTo: generator => `${generator.javaDir}config/SecurityConfiguration.java` } ] }, { condition: generator => !shouldSkipUserManagement(generator) && generator.applicationType === 'uaa', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/UaaWebSecurityConfiguration.java', renameTo: generator => `${generator.javaDir}config/UaaWebSecurityConfiguration.java` }, { file: 'package/config/UaaConfiguration.java', renameTo: generator => `${generator.javaDir}config/UaaConfiguration.java` }, { file: 'package/config/UaaProperties.java', renameTo: generator => `${generator.javaDir}config/UaaProperties.java` }, { file: 'package/security/IatTokenEnhancer.java', renameTo: generator => `${generator.javaDir}security/IatTokenEnhancer.java` } ] }, { condition: generator => !shouldSkipUserManagement(generator) && generator.authenticationType === 'session' && !generator.reactive, path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/security/PersistentTokenRememberMeServices.java', renameTo: generator => `${generator.javaDir}security/PersistentTokenRememberMeServices.java` }, { file: 'package/domain/PersistentToken.java', renameTo: generator => `${generator.javaDir}domain/PersistentToken.java` }, { file: 'package/repository/PersistentTokenRepository.java', renameTo: generator => `${generator.javaDir}repository/PersistentTokenRepository.java` } ] }, { condition: generator => generator.authenticationType === 'oauth2', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/security/oauth2/AudienceValidator.java', renameTo: generator => `${generator.javaDir}security/oauth2/AudienceValidator.java` } ] }, { condition: generator => generator.authenticationType === 'oauth2', path: SERVER_TEST_SRC_DIR, templates: [ { file: 'package/security/oauth2/AudienceValidatorTest.java', renameTo: generator => `${generator.javaDir}security/oauth2/AudienceValidatorTest.java` }, { file: 'package/config/TestSecurityConfiguration.java', renameTo: generator => `${generator.testDir}config/TestSecurityConfiguration.java` } ] }, { condition: generator => !shouldSkipUserManagement(generator) && generator.authenticationType !== 'oauth2', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/security/DomainUserDetailsService.java', renameTo: generator => `${generator.javaDir}security/DomainUserDetailsService.java` }, { file: 'package/security/UserNotActivatedException.java', renameTo: generator => `${generator.javaDir}security/UserNotActivatedException.java` } ] }, { condition: generator => generator.applicationType !== 'microservice' && generator.authenticationType === 'jwt', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/web/rest/vm/LoginVM.java', renameTo: generator => `${generator.javaDir}web/rest/vm/LoginVM.java` }, { file: 'package/web/rest/UserJWTController.java', renameTo: generator => `${generator.javaDir}web/rest/UserJWTController.java` } ] } ], serverJavaGateway: [ { condition: generator => generator.applicationType === 'gateway' && generator.serviceDiscoveryType, path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/GatewayConfiguration.java', renameTo: generator => `${generator.javaDir}config/GatewayConfiguration.java` }, { file: 'package/config/apidoc/GatewaySwaggerResourcesProvider.java', renameTo: generator => `${generator.javaDir}config/apidoc/GatewaySwaggerResourcesProvider.java` }, { file: 'package/gateway/ratelimiting/RateLimitingFilter.java', renameTo: generator => `${generator.javaDir}gateway/ratelimiting/RateLimitingFilter.java` }, { file: 'package/gateway/accesscontrol/AccessControlFilter.java', renameTo: generator => `${generator.javaDir}gateway/accesscontrol/AccessControlFilter.java` }, { file: 'package/gateway/responserewriting/SwaggerBasePathRewritingFilter.java', renameTo: generator => `${generator.javaDir}gateway/responserewriting/SwaggerBasePathRewritingFilter.java` }, { file: 'package/web/rest/vm/RouteVM.java', renameTo: generator => `${generator.javaDir}web/rest/vm/RouteVM.java` }, { file: 'package/web/rest/GatewayResource.java', renameTo: generator => `${generator.javaDir}web/rest/GatewayResource.java` } ] }, { condition: generator => generator.applicationType === 'gateway' && generator.authenticationType === 'jwt' && generator.serviceDiscoveryType, path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/gateway/TokenRelayFilter.java', renameTo: generator => `${generator.javaDir}gateway/TokenRelayFilter.java` } ] }, { condition: generator => generator.applicationType === 'gateway' && generator.authenticationType === 'uaa', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/web/rest/AuthResource.java', renameTo: generator => `${generator.javaDir}web/rest/AuthResource.java` }, { file: 'package/web/filter/RefreshTokenFilter.java', renameTo: generator => `${generator.javaDir}web/filter/RefreshTokenFilter.java` }, { file: 'package/web/filter/RefreshTokenFilterConfigurer.java', renameTo: generator => `${generator.javaDir}web/filter/RefreshTokenFilterConfigurer.java` }, { file: 'package/config/oauth2/OAuth2AuthenticationConfiguration.java', renameTo: generator => `${generator.javaDir}config/oauth2/OAuth2AuthenticationConfiguration.java` }, { file: 'package/security/oauth2/CookieCollection.java', renameTo: generator => `${generator.javaDir}security/oauth2/CookieCollection.java` }, { file: 'package/security/oauth2/CookiesHttpServletRequestWrapper.java', renameTo: generator => `${generator.javaDir}security/oauth2/CookiesHttpServletRequestWrapper.java` }, { file: 'package/security/oauth2/CookieTokenExtractor.java', renameTo: generator => `${generator.javaDir}security/oauth2/CookieTokenExtractor.java` }, { file: 'package/security/oauth2/OAuth2AuthenticationService.java', renameTo: generator => `${generator.javaDir}security/oauth2/OAuth2AuthenticationService.java` }, { file: 'package/security/oauth2/OAuth2CookieHelper.java', renameTo: generator => `${generator.javaDir}security/oauth2/OAuth2CookieHelper.java` }, { file: 'package/security/oauth2/OAuth2Cookies.java', renameTo: generator => `${generator.javaDir}security/oauth2/OAuth2Cookies.java` }, { file: 'package/security/oauth2/OAuth2TokenEndpointClient.java', renameTo: generator => `${generator.javaDir}security/oauth2/OAuth2TokenEndpointClient.java` }, { file: 'package/security/oauth2/OAuth2TokenEndpointClientAdapter.java', renameTo: generator => `${generator.javaDir}security/oauth2/OAuth2TokenEndpointClientAdapter.java` }, { file: 'package/security/oauth2/UaaTokenEndpointClient.java', renameTo: generator => `${generator.javaDir}security/oauth2/UaaTokenEndpointClient.java` } ] }, { condition: generator => generator.authenticationType === 'oauth2' && (generator.applicationType === 'monolith' || generator.applicationType === 'gateway'), path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/web/rest/LogoutResource.java', renameTo: generator => `${generator.javaDir}web/rest/LogoutResource.java` } ] } ], serverMicroservice: [ { condition: generator => generator.authenticationType === 'uaa' && (generator.applicationType === 'microservice' || generator.applicationType === 'gateway'), path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/oauth2/OAuth2Properties.java', renameTo: generator => `${generator.javaDir}config/oauth2/OAuth2Properties.java` }, { file: 'package/config/oauth2/OAuth2JwtAccessTokenConverter.java', renameTo: generator => `${generator.javaDir}config/oauth2/OAuth2JwtAccessTokenConverter.java` }, { file: 'package/security/oauth2/OAuth2SignatureVerifierClient.java', renameTo: generator => `${generator.javaDir}security/oauth2/OAuth2SignatureVerifierClient.java` }, { file: 'package/security/oauth2/UaaSignatureVerifierClient.java', renameTo: generator => `${generator.javaDir}security/oauth2/UaaSignatureVerifierClient.java` } ] }, { condition: generator => !generator.reactive && generator.applicationType === 'microservice' && generator.authenticationType === 'uaa', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/FeignConfiguration.java', renameTo: generator => `${generator.javaDir}config/FeignConfiguration.java` }, { file: 'package/client/AuthorizedFeignClient.java', renameTo: generator => `${generator.javaDir}client/AuthorizedFeignClient.java` }, { file: 'package/client/OAuth2InterceptedFeignConfiguration.java', renameTo: generator => `${generator.javaDir}client/OAuth2InterceptedFeignConfiguration.java` }, { file: 'package/client/AuthorizedUserFeignClient.java', renameTo: generator => `${generator.javaDir}client/AuthorizedUserFeignClient.java` }, { file: 'package/client/OAuth2_UserFeignClientInterceptor.java', renameTo: generator => `${generator.javaDir}client/UserFeignClientInterceptor.java` }, { file: 'package/client/OAuth2UserClientFeignConfiguration.java', renameTo: generator => `${generator.javaDir}client/OAuth2UserClientFeignConfiguration.java` } ] }, { condition: generator => !generator.reactive && (generator.applicationType === 'microservice' || generator.applicationType === 'gateway') && generator.authenticationType === 'jwt', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/FeignConfiguration.java', renameTo: generator => `${generator.javaDir}config/FeignConfiguration.java` }, { file: 'package/client/JWT_UserFeignClientInterceptor.java', renameTo: generator => `${generator.javaDir}client/UserFeignClientInterceptor.java` } ] }, { condition: generator => generator.authenticationType === 'oauth2' && generator.applicationType === 'gateway', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/security/oauth2/AuthorizationHeaderFilter.java', renameTo: generator => `${generator.javaDir}security/oauth2/AuthorizationHeaderFilter.java` } ] }, { condition: generator => generator.authenticationType === 'oauth2' && (generator.applicationType === 'microservice' || generator.applicationType === 'gateway'), path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/security/oauth2/AuthorizationHeaderUtil.java', renameTo: generator => `${generator.javaDir}security/oauth2/AuthorizationHeaderUtil.java` }, { file: 'package/config/FeignConfiguration.java', renameTo: generator => `${generator.javaDir}config/FeignConfiguration.java` }, { file: 'package/client/AuthorizedFeignClient.java', renameTo: generator => `${generator.javaDir}client/AuthorizedFeignClient.java` }, { file: 'package/client/OAuth2InterceptedFeignConfiguration.java', renameTo: generator => `${generator.javaDir}client/OAuth2InterceptedFeignConfiguration.java` }, { file: 'package/client/TokenRelayRequestInterceptor.java', renameTo: generator => `${generator.javaDir}client/TokenRelayRequestInterceptor.java` } ] }, { condition: generator => generator.authenticationType === 'oauth2', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/SecurityConfiguration.java', renameTo: generator => `${generator.javaDir}config/SecurityConfiguration.java` } ] }, { condition: generator => !( generator.applicationType !== 'microservice' && !( generator.applicationType === 'gateway' && (generator.authenticationType === 'uaa' || generator.authenticationType === 'oauth2') ) ) && generator.applicationType === 'microservice', path: SERVER_MAIN_RES_DIR, templates: [{ file: 'static/microservices_index.html', method: 'copy', renameTo: () => 'static/index.html' }] } ], serverMicroserviceAndGateway: [ { condition: generator => generator.serviceDiscoveryType, path: SERVER_MAIN_RES_DIR, templates: ['config/bootstrap.yml', 'config/bootstrap-prod.yml'] } ], serverJavaApp: [ { path: SERVER_MAIN_SRC_DIR, templates: [{ file: 'package/Application.java', renameTo: generator => `${generator.javaDir}${generator.mainClass}.java` }] }, { condition: generator => !generator.reactive, path: SERVER_MAIN_SRC_DIR, templates: [{ file: 'package/ApplicationWebXml.java', renameTo: generator => `${generator.javaDir}ApplicationWebXml.java` }] } ], serverJavaConfig: [ { path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/aop/logging/LoggingAspect.java', renameTo: generator => `${generator.javaDir}aop/logging/LoggingAspect.java` }, { file: 'package/config/DefaultProfileUtil.java', renameTo: generator => `${generator.javaDir}config/DefaultProfileUtil.java` }, { file: 'package/config/package-info.java', renameTo: generator => `${generator.javaDir}config/package-info.java` }, { file: 'package/config/AsyncConfiguration.java', renameTo: generator => `${generator.javaDir}config/AsyncConfiguration.java` }, { file: 'package/config/DateTimeFormatConfiguration.java', renameTo: generator => `${generator.javaDir}config/DateTimeFormatConfiguration.java` }, { file: 'package/config/LoggingConfiguration.java', renameTo: generator => `${generator.javaDir}config/LoggingConfiguration.java` }, { file: 'package/config/ApplicationProperties.java', renameTo: generator => `${generator.javaDir}config/ApplicationProperties.java` }, { file: 'package/config/JacksonConfiguration.java', renameTo: generator => `${generator.javaDir}config/JacksonConfiguration.java` }, { file: 'package/config/LocaleConfiguration.java', renameTo: generator => `${generator.javaDir}config/LocaleConfiguration.java` }, { file: 'package/config/LoggingAspectConfiguration.java', renameTo: generator => `${generator.javaDir}config/LoggingAspectConfiguration.java` }, { file: 'package/config/WebConfigurer.java', renameTo: generator => `${generator.javaDir}config/WebConfigurer.java` } ] }, { condition: generator => !generator.skipUserManagement || ['sql', 'mongodb', 'couchbase'].includes(generator.databaseType), path: SERVER_MAIN_SRC_DIR, templates: [{ file: 'package/config/Constants.java', renameTo: generator => `${generator.javaDir}config/Constants.java` }] }, { // TODO: remove when supported by spring-data condition: generator => generator.reactive, path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/ReactivePageableHandlerMethodArgumentResolver.java', renameTo: generator => `${generator.javaDir}config/ReactivePageableHandlerMethodArgumentResolver.java` }, { file: 'package/config/ReactiveSortHandlerMethodArgumentResolver.java', renameTo: generator => `${generator.javaDir}config/ReactiveSortHandlerMethodArgumentResolver.java` } ] }, { condition: generator => ['ehcache', 'hazelcast', 'infinispan', 'memcached'].includes(generator.cacheProvider) || generator.applicationType === 'gateway', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/CacheConfiguration.java', renameTo: generator => `${generator.javaDir}config/CacheConfiguration.java` } ] }, { condition: generator => generator.cacheProvider === 'infinispan', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/CacheFactoryConfiguration.java', renameTo: generator => `${generator.javaDir}config/CacheFactoryConfiguration.java` } ] }, { condition: generator => generator.databaseType === 'sql' || generator.databaseType === 'mongodb' || generator.databaseType === 'couchbase', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/CloudDatabaseConfiguration.java', renameTo: generator => `${generator.javaDir}config/CloudDatabaseConfiguration.java` }, { file: 'package/config/DatabaseConfiguration.java', renameTo: generator => `${generator.javaDir}config/DatabaseConfiguration.java` }, { file: 'package/config/audit/package-info.java', renameTo: generator => `${generator.javaDir}config/audit/package-info.java` }, { file: 'package/config/audit/AuditEventConverter.java', renameTo: generator => `${generator.javaDir}config/audit/AuditEventConverter.java` } ] }, { condition: generator => generator.databaseType === 'sql', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/LiquibaseConfiguration.java', renameTo: generator => `${generator.javaDir}config/LiquibaseConfiguration.java` } ] }, { condition: generator => generator.databaseType === 'couchbase', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/repository/N1qlCouchbaseRepository.java', renameTo: generator => `${generator.javaDir}repository/N1qlCouchbaseRepository.java` }, { file: 'package/repository/CustomN1qlCouchbaseRepository.java', renameTo: generator => `${generator.javaDir}repository/CustomN1qlCouchbaseRepository.java` } ] }, { condition: generator => generator.reactive && generator.databaseType === 'couchbase', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/repository/reactive/ReactiveN1qlCouchbaseRepository.java', renameTo: generator => `${generator.javaDir}repository/${generator.reactiveRepository}ReactiveN1qlCouchbaseRepository.java` }, { file: 'package/repository/reactive/CustomReactiveN1qlCouchbaseRepository.java', renameTo: generator => `${generator.javaDir}repository/${generator.reactiveRepository}CustomReactiveN1qlCouchbaseRepository.java` } ] }, { condition: generator => generator.websocket === 'spring-websocket', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/WebsocketConfiguration.java', renameTo: generator => `${generator.javaDir}config/WebsocketConfiguration.java` }, { file: 'package/config/WebsocketSecurityConfiguration.java', renameTo: generator => `${generator.javaDir}config/WebsocketSecurityConfiguration.java` } ] }, { condition: generator => generator.databaseType === 'cassandra', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/metrics/package-info.java', renameTo: generator => `${generator.javaDir}config/metrics/package-info.java` }, { file: 'package/config/metrics/JHipsterHealthIndicatorConfiguration.java', renameTo: generator => `${generator.javaDir}config/metrics/JHipsterHealthIndicatorConfiguration.java` }, { file: 'package/config/metrics/CassandraHealthIndicator.java', renameTo: generator => `${generator.javaDir}config/metrics/CassandraHealthIndicator.java` } ] }, { condition: generator => generator.databaseType === 'cassandra', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/cassandra/CassandraConfiguration.java', renameTo: generator => `${generator.javaDir}config/cassandra/CassandraConfiguration.java` }, { file: 'package/config/cassandra/package-info.java', renameTo: generator => `${generator.javaDir}config/cassandra/package-info.java` } ] }, { condition: generator => generator.searchEngine === 'elasticsearch', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/ElasticsearchConfiguration.java', renameTo: generator => `${generator.javaDir}config/ElasticsearchConfiguration.java` } ] }, { condition: generator => generator.messageBroker === 'kafka', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/config/MessagingConfiguration.java', renameTo: generator => `${generator.javaDir}config/MessagingConfiguration.java` } ] } ], serverJavaDomain: [ { path: SERVER_MAIN_SRC_DIR, templates: [{ file: 'package/domain/package-info.java', renameTo: generator => `${generator.javaDir}domain/package-info.java` }] }, { condition: generator => ['sql', 'mongodb', 'couchbase'].includes(generator.databaseType), path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/domain/AbstractAuditingEntity.java', renameTo: generator => `${generator.javaDir}domain/AbstractAuditingEntity.java` }, { file: 'package/domain/PersistentAuditEvent.java', renameTo: generator => `${generator.javaDir}domain/PersistentAuditEvent.java` } ] } ], serverJavaPackageInfo: [ { condition: generator => generator.searchEngine === 'elasticsearch', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/repository/search/package-info.java', renameTo: generator => `${generator.javaDir}repository/search/package-info.java` } ] }, { path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/repository/package-info.java', renameTo: generator => `${generator.javaDir}repository/package-info.java` } ] } ], serverJavaService: [ { path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/service/package-info.java', renameTo: generator => `${generator.javaDir}service/package-info.java` } ] }, { condition: generator => !generator.skipUserManagement, path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/service/util/RandomUtil.java', renameTo: generator => `${generator.javaDir}service/util/RandomUtil.java` } ] } ], serverJavaWebError: [ { path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/web/rest/errors/package-info.java', renameTo: generator => `${generator.javaDir}web/rest/errors/package-info.java` }, { file: 'package/web/rest/errors/BadRequestAlertException.java', renameTo: generator => `${generator.javaDir}web/rest/errors/BadRequestAlertException.java` }, { file: 'package/web/rest/errors/ErrorConstants.java', renameTo: generator => `${generator.javaDir}web/rest/errors/ErrorConstants.java` }, { file: 'package/web/rest/errors/ExceptionTranslator.java', renameTo: generator => `${generator.javaDir}web/rest/errors/ExceptionTranslator.java` }, { file: 'package/web/rest/errors/FieldErrorVM.java', renameTo: generator => `${generator.javaDir}web/rest/errors/FieldErrorVM.java` } ] }, { condition: generator => !generator.skipUserManagement, path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/web/rest/errors/EmailAlreadyUsedException.java', renameTo: generator => `${generator.javaDir}web/rest/errors/EmailAlreadyUsedException.java` }, { file: 'package/web/rest/errors/EmailNotFoundException.java', renameTo: generator => `${generator.javaDir}web/rest/errors/EmailNotFoundException.java` }, { file: 'package/web/rest/errors/InvalidPasswordException.java', renameTo: generator => `${generator.javaDir}web/rest/errors/InvalidPasswordException.java` }, { file: 'package/web/rest/errors/LoginAlreadyUsedException.java', renameTo: generator => `${generator.javaDir}web/rest/errors/LoginAlreadyUsedException.java` } ] } ], serverJavaWeb: [ { path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/web/rest/vm/package-info.java', renameTo: generator => `${generator.javaDir}web/rest/vm/package-info.java` }, { file: 'package/web/rest/package-info.java', renameTo: generator => `${generator.javaDir}web/rest/package-info.java` } ] }, { condition: generator => !generator.skipClient && !generator.reactive, path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/web/rest/ClientForwardController.java', renameTo: generator => `${generator.javaDir}web/rest/ClientForwardController.java` } ] } ], serverJavaWebsocket: [ { condition: generator => generator.websocket === 'spring-websocket', path: SERVER_MAIN_SRC_DIR, templates: [ { file: 'package/web/websocket/package-info.java', renameTo: generator => `${generator.javaDir}web/websocket/package-info.java` }, { file: 'package/web/websocket/ActivityService.java', renameTo: generator => `${generator.javaDir}web/websocket/ActivityService.java` }, { file: 'package/web/websocket/dto/package-info.java', renameTo: generator => `${generator.javaDir}web/websocket/dto/package-info.java` }, {