From b902c7dd9ad1b74729c3c488b24624e510244250 Mon Sep 17 00:00:00 2001 From: FrancescoFioraEst Date: Fri, 3 Dec 2021 13:43:41 +0000 Subject: Add Hibernate support in runtime-controlloop Issue-ID: POLICY-3841 Change-Id: Ie958a4a4ab35c8bc4d6829128e39a2458d67a7a5 Signed-off-by: FrancescoFioraEst --- .../clamp/controlloop/runtime/Application.java | 2 +- .../runtime/config/JpaConfiguration.java | 119 --------------------- .../main/parameters/ClRuntimeParameterGroup.java | 24 ----- .../src/main/resources/META-INF/persistence.xml | 73 ------------- .../src/main/resources/application.yaml | 22 ++-- .../src/test/resources/META-INF/persistence.xml | 101 ----------------- .../src/test/resources/application_test.properties | 17 ++- 7 files changed, 17 insertions(+), 341 deletions(-) delete mode 100644 runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/JpaConfiguration.java delete mode 100644 runtime-controlloop/src/main/resources/META-INF/persistence.xml delete mode 100644 runtime-controlloop/src/test/resources/META-INF/persistence.xml (limited to 'runtime-controlloop') diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java index 64d1393ac..44a661e55 100644 --- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java +++ b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java @@ -36,7 +36,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; "org.onap.policy.clamp.controlloop.common.rest"}) @ConfigurationPropertiesScan("org.onap.policy.clamp.controlloop.runtime.main.parameters") @EntityScan({"org.onap.policy.models.tosca.simple.concepts", - "org.onap.policy.clamp.controlloop.models.controlloop.concepts"}) + "org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts"}) public class Application { public static void main(String[] args) { diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/JpaConfiguration.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/JpaConfiguration.java deleted file mode 100644 index 290b74e3a..000000000 --- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/JpaConfiguration.java +++ /dev/null @@ -1,119 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.clamp.controlloop.runtime.config; - -import java.util.HashMap; -import java.util.Map; -import javax.persistence.EntityManagerFactory; -import javax.sql.DataSource; -import org.eclipse.persistence.config.BatchWriting; -import org.eclipse.persistence.config.PersistenceUnitProperties; -import org.eclipse.persistence.logging.SessionLog; -import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup; -import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration; -import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; -import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.orm.jpa.JpaTransactionManager; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter; -import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; -import org.springframework.transaction.jta.JtaTransactionManager; - -@Configuration -@EnableTransactionManagement -public class JpaConfiguration extends JpaBaseConfiguration { - - protected JpaConfiguration(DataSource dataSource, JpaProperties properties, - ObjectProvider jtaTransactionManager) { - super(dataSource, properties, jtaTransactionManager); - } - - @Override - protected AbstractJpaVendorAdapter createJpaVendorAdapter() { - return new EclipseLinkJpaVendorAdapter(); - } - - @Override - protected Map getVendorProperties() { - return Map.of(PersistenceUnitProperties.BATCH_WRITING, BatchWriting.JDBC); - } - - /** - * Create EntityManagerFactory. - * - * @param builder EntityManagerFactoryBuilder - * @param dataSource DataSource - * @return LocalContainerEntityManagerFactoryBean - */ - @Bean("entityManagerFactory") - public LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactory( - EntityManagerFactoryBuilder builder, DataSource dataSource, - ClRuntimeParameterGroup clRuntimeParameterGroup) { - - return builder.dataSource(dataSource) - .persistenceUnit(clRuntimeParameterGroup.getDatabaseProviderParameters().getPersistenceUnit()) - .properties(initJpaProperties()).build(); - } - - /** - * create a PlatformTransactionManager. - * - * @param emf EntityManagerFactory - * @return PlatformTransactionManager - */ - @Bean - public static PlatformTransactionManager transactionManager(EntityManagerFactory emf) { - final var transactionManager = new JpaTransactionManager(); - transactionManager.setEntityManagerFactory(emf); - return transactionManager; - } - - /** - * create Jpa Properties. - * - * @return JpaProperties - */ - @Bean - @Primary - public static JpaProperties properties(ClRuntimeParameterGroup clRuntimeParameterGroup) { - final var jpaProperties = new JpaProperties(); - jpaProperties.setShowSql(clRuntimeParameterGroup.isShowSql()); - jpaProperties.setDatabasePlatform(clRuntimeParameterGroup.getDatabasePlatform()); - return jpaProperties; - } - - private static Map initJpaProperties() { - final Map ret = new HashMap<>(); - // Add any JpaProperty you are interested in and is supported by your Database and JPA implementation - ret.put(PersistenceUnitProperties.BATCH_WRITING, BatchWriting.JDBC); - ret.put(PersistenceUnitProperties.LOGGING_LEVEL, SessionLog.INFO_LABEL); - ret.put(PersistenceUnitProperties.WEAVING, "false"); - ret.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.CREATE_ONLY); - ret.put(PersistenceUnitProperties.DDL_GENERATION_MODE, PersistenceUnitProperties.DDL_DATABASE_GENERATION); - return ret; - } -} diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java index 9211ca211..047bca2b1 100644 --- a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java +++ b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java @@ -21,14 +21,11 @@ package org.onap.policy.clamp.controlloop.runtime.main.parameters; import javax.validation.Valid; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; import org.onap.policy.common.endpoints.parameters.TopicParameterGroup; import org.onap.policy.common.parameters.validation.ParameterGroupConstraint; -import org.onap.policy.models.provider.PolicyModelsProviderParameters; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.validation.annotation.Validated; @@ -42,10 +39,6 @@ import org.springframework.validation.annotation.Validated; @ConfigurationProperties(prefix = "runtime") public class ClRuntimeParameterGroup { - @NotNull - @ParameterGroupConstraint - private PolicyModelsProviderParameters databaseProviderParameters; - @Valid @NotNull private ParticipantParameters participantParameters; @@ -53,21 +46,4 @@ public class ClRuntimeParameterGroup { @NotNull @ParameterGroupConstraint private TopicParameterGroup topicParameterGroup; - - @Min(value = 0) - private long supervisionScannerIntervalSec; - - @Min(value = 0) - private long participantClUpdateIntervalSec; - - @Min(value = 0) - private long participantClStateChangeIntervalSec; - private long participantRegisterAckIntervalSec; - private long participantDeregisterAckIntervalSec; - private long participantUpdateIntervalSec; - - @NotBlank - private String databasePlatform; - - private boolean showSql = false; } diff --git a/runtime-controlloop/src/main/resources/META-INF/persistence.xml b/runtime-controlloop/src/main/resources/META-INF/persistence.xml deleted file mode 100644 index a4e9a56e9..000000000 --- a/runtime-controlloop/src/main/resources/META-INF/persistence.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - org.eclipse.persistence.jpa.PersistenceProvider - - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignment - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignments - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityType - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType - org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplates - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeType - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaParameter - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty - org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipType - org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirement - org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirements - org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate - org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoop - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoopElement - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipant - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipantStatistics - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaClElementStatistics - - - - - - - - - NONE - - - - diff --git a/runtime-controlloop/src/main/resources/application.yaml b/runtime-controlloop/src/main/resources/application.yaml index bae4b9695..3a3ada563 100644 --- a/runtime-controlloop/src/main/resources/application.yaml +++ b/runtime-controlloop/src/main/resources/application.yaml @@ -16,6 +16,16 @@ spring: idleTimeout: 600000 maxLifetime: 1800000 maximumPoolSize: 10 + jpa: + hibernate: + ddl-auto: update + naming: + physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl + implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy + properties: + hibernate: + dialect: org.hibernate.dialect.MariaDB103Dialect + format_sql: true security: enable-csrf: false @@ -29,24 +39,12 @@ server: runtime: - supervisionScannerIntervalSec: 1000 - participantClUpdateIntervalSec: 1000 - participantClStateChangeIntervalSec: 1000 participantParameters: heartBeatMs: 20000 maxStatusWaitMs: 100000 updateParameters: maxRetryCount: 4 maxWaitMs: 20000 - databasePlatform: org.eclipse.persistence.platform.database.MySQLPlatform - databaseProviderParameters: - name: PolicyProviderParameterGroup - implementation: org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl - databaseDriver: org.mariadb.jdbc.Driver - databaseUrl: jdbc:mariadb://${mariadb.host:localhost}:${mariadb.port:3306}/controlloop - databaseUser: policy - databasePassword: P01icY - persistenceUnit: CommissioningMariaDb topicParameterGroup: topicSources: - diff --git a/runtime-controlloop/src/test/resources/META-INF/persistence.xml b/runtime-controlloop/src/test/resources/META-INF/persistence.xml deleted file mode 100644 index fe460ff4b..000000000 --- a/runtime-controlloop/src/test/resources/META-INF/persistence.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - org.eclipse.persistence.jpa.PersistenceProvider - - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignment - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignments - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityType - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType - org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplates - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeType - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaParameter - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty - org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipType - org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirement - org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirements - org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate - org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoop - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoopElement - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipant - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipantStatistics - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaClElementStatistics - - - - - - - NONE - - - - org.eclipse.persistence.jpa.PersistenceProvider - - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignment - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignments - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityType - org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType - org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplates - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeType - org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaParameter - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType - org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty - org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipType - org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipTypes - org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirement - org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirements - org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate - org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoop - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaControlLoopElement - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipant - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaParticipantStatistics - org.onap.policy.clamp.controlloop.models.controlloop.persistence.concepts.JpaClElementStatistics - - - - - - - NONE - - - - diff --git a/runtime-controlloop/src/test/resources/application_test.properties b/runtime-controlloop/src/test/resources/application_test.properties index 26822db44..52c372d5e 100644 --- a/runtime-controlloop/src/test/resources/application_test.properties +++ b/runtime-controlloop/src/test/resources/application_test.properties @@ -12,25 +12,20 @@ spring.datasource.hikari.idleTimeout=600000 spring.datasource.hikari.maxLifetime=1800000 spring.datasource.hikari.maximumPoolSize=3 +spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl +spring.jpa.hibernate.naming.implicit-strategy=org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy +spring.jpa.hibernate.ddl-auto=create +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.HSQLDialect +spring.jpa.properties.hibernate.format_sql=true + server.port=6969 server.servlet.context-path=/onap/controlloop server.error.path=/error -runtime.supervisionScannerIntervalSec=1000 -runtime.participantClUpdateIntervalSec=1000 -runtime.participantClStateChangeIntervalSec=1000 -runtime.showSql=true runtime.participantParameters.heartBeatMs=20000 runtime.participantParameters.maxStatusWaitMs=100000 runtime.participantParameters.updateParameters.maxRetryCount=3 runtime.participantParameters.updateParameters.maxWaitMs=20000 -runtime.databaseProviderParameters.name=PolicyProviderParameterGroup -runtime.databaseProviderParameters.implementation=org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl -runtime.databaseProviderParameters.databaseDriver=org.h2.Driver -runtime.databaseProviderParameters.databaseUrl=jdbc:h2:mem:testdb -runtime.databaseProviderParameters.databaseUser=policy -runtime.databaseProviderParameters.databasePassword=P01icY -runtime.databaseProviderParameters.persistenceUnit=ToscaConceptTest runtime.topicParameterGroup.topicSources[0].topic=POLICY-CLRUNTIME-PARTICIPANT runtime.topicParameterGroup.topicSources[0].servers[0]=localhost runtime.topicParameterGroup.topicSources[0].topicCommInfrastructure=dmaap -- cgit 1.2.3-korg