From 70ddcbe8e34eda99a7e6e9f383cc78a0d6f0cbd2 Mon Sep 17 00:00:00 2001 From: liamfallon Date: Thu, 2 Feb 2023 14:53:43 +0000 Subject: [PATCH] Replace Eclipselink with Hibernate Issue-ID: POLICY-4533 Change-Id: Ica9b02be76ba45461e615e806d779b0799681680 Signed-off-by: liamfallon --- .../test/resources/config/event-manager.properties | 3 ++ controlloop/common/eventmanager/pom.xml | 7 ++--- .../ophistory/OperationHistoryDataManagerImpl.java | 34 ++++++++++------------ .../OperationHistoryDataManagerParams.java | 11 ++++++- .../src/main/resources/META-INF/persistence.xml | 25 +++++++--------- .../OperationHistoryDataManagerImplTest.java | 3 ++ .../eventService/event-svc-with-db.properties | 3 ++ 7 files changed, 49 insertions(+), 37 deletions(-) diff --git a/controlloop/common/controller-usecases/src/test/resources/config/event-manager.properties b/controlloop/common/controller-usecases/src/test/resources/config/event-manager.properties index 5ec8c578f..ad5599142 100644 --- a/controlloop/common/controller-usecases/src/test/resources/config/event-manager.properties +++ b/controlloop/common/controller-usecases/src/test/resources/config/event-manager.properties @@ -3,6 +3,7 @@ # ONAP # =============================================================================== # Copyright (C) 2020-2022 AT&T Intellectual Property. All rights reserved. +# Modifications Copyright (C) 2023 Nordix Foundation. # =============================================================================== # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,6 +23,8 @@ operation.history.url=jdbc:h2:mem:Usecases operation.history.userName=sa operation.history.password= +operation.history.driver=org.h2.Driver +operation.history.dbType=H2 # Actor parameters # diff --git a/controlloop/common/eventmanager/pom.xml b/controlloop/common/eventmanager/pom.xml index a0be107fd..dd2a42028 100644 --- a/controlloop/common/eventmanager/pom.xml +++ b/controlloop/common/eventmanager/pom.xml @@ -3,7 +3,7 @@ eventmanager ================================================================================ Copyright (C) 2017-2022 AT&T Intellectual Property. All rights reserved. - Modifications Copyright (C) 2019 Nordix Foundation. + Modifications Copyright (C) 2019,2023 Nordix Foundation. Modifications Copyright (C) 2019-2020 Bell Canada. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); @@ -34,9 +34,8 @@ - org.eclipse.persistence - org.eclipse.persistence.jpa - provided + org.hibernate + hibernate-entitymanager commons-io diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java index 2e18e8395..c36ca786d 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImpl.java @@ -3,6 +3,7 @@ * ONAP * ================================================================================ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,7 +34,6 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.ToString; -import org.eclipse.persistence.config.PersistenceUnitProperties; import org.onap.policy.common.parameters.ValidationResult; import org.onap.policy.common.utils.jpa.EntityMgrCloser; import org.onap.policy.common.utils.jpa.EntityTransCloser; @@ -97,7 +97,6 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana @Getter private long recordsUpdated = 0; - /** * Constructs the object. * @@ -149,11 +148,11 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana @Override public synchronized void store(String requestId, String clName, Object event, String targetEntity, - ControlLoopOperation operation) { + ControlLoopOperation operation) { if (stopped) { logger.warn("operation history thread is stopped, discarding requestId={} event={} operation={}", requestId, - event, operation); + event, operation); return; } @@ -226,7 +225,7 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana logger.info("store operation history record batch"); try (var emc = new EntityMgrCloser(entityManager); - var trans = new EntityTransCloser(entityManager.getTransaction())) { + var trans = new EntityTransCloser(entityManager.getTransaction())) { var nrecords = 0; var rec = firstRecord; @@ -261,13 +260,13 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana logger.info("store operation history record for {}", reqId); List results = entityMgr - .createQuery("select e from OperationsHistory e" + " where e.closedLoopName= ?1" - + " and e.requestId= ?2" + " and e.subrequestId= ?3" + " and e.actor= ?4" - + " and e.operation= ?5" + " and e.target= ?6", OperationsHistory.class) - .setParameter(1, clName).setParameter(2, rec.getRequestId()) - .setParameter(3, operation.getSubRequestId()).setParameter(4, operation.getActor()) - .setParameter(5, operation.getOperation()).setParameter(6, rec.getTargetEntity()) - .getResultList(); + .createQuery("select e from OperationsHistory e" + " where e.closedLoopName= ?1" + + " and e.requestId= ?2" + " and e.subrequestId= ?3" + " and e.actor= ?4" + + " and e.operation= ?5" + " and e.target= ?6", OperationsHistory.class) + .setParameter(1, clName).setParameter(2, rec.getRequestId()) + .setParameter(3, operation.getSubRequestId()).setParameter(4, operation.getActor()) + .setParameter(5, operation.getOperation()).setParameter(6, rec.getTargetEntity()) + .getResultList(); if (results.size() > 1) { logger.warn("unexpected operation history record count {} for {}", results.size(), reqId); @@ -313,12 +312,11 @@ public class OperationHistoryDataManagerImpl implements OperationHistoryDataMana */ private Properties toProperties(OperationHistoryDataManagerParams params) { var props = new Properties(); - props.put(PersistenceUnitProperties.JDBC_DRIVER, params.getDriver()); - props.put(PersistenceUnitProperties.JDBC_URL, params.getUrl()); - props.put(PersistenceUnitProperties.JDBC_USER, params.getUserName()); - props.put(PersistenceUnitProperties.JDBC_PASSWORD, params.getPassword()); - props.put(PersistenceUnitProperties.TARGET_DATABASE, params.getDbType()); - props.put(PersistenceUnitProperties.CLASSLOADER, getClass().getClassLoader()); + props.put("javax.persistence.jdbc.driver", params.getDriver()); + props.put("javax.persistence.jdbc.url", params.getUrl()); + props.put("javax.persistence.jdbc.user", params.getUserName()); + props.put("javax.persistence.jdbc.password", params.getPassword()); + props.put("hibernate.dialect", params.getDbHibernateDialect()); return props; } diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerParams.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerParams.java index c93ac8b58..054f4b1c1 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerParams.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerParams.java @@ -3,6 +3,7 @@ * ONAP * ================================================================================ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,7 +42,7 @@ import org.onap.policy.common.parameters.annotations.NotNull; public class OperationHistoryDataManagerParams { public static final String DEFAULT_PU = "OperationsHistoryPU"; public static final String DEFAULT_DRIVER = "org.mariadb.jdbc.Driver"; - public static final String DEFAULT_TYPE = "MySQL"; + public static final String DEFAULT_TYPE = "MariaDB"; @NotBlank private String url; @@ -85,4 +86,12 @@ public class OperationHistoryDataManagerParams { public ValidationResult validate(String resultName) { return new BeanValidator().validateTop(resultName, this); } + + /** + * Return the Hibernate dialect for the database type. + * @return the dialect + */ + public Object getDbHibernateDialect() { + return "org.hibernate.dialect." + dbType + "Dialect"; + } } diff --git a/controlloop/common/eventmanager/src/main/resources/META-INF/persistence.xml b/controlloop/common/eventmanager/src/main/resources/META-INF/persistence.xml index f5d313adc..115ec51ae 100644 --- a/controlloop/common/eventmanager/src/main/resources/META-INF/persistence.xml +++ b/controlloop/common/eventmanager/src/main/resources/META-INF/persistence.xml @@ -1,9 +1,10 @@ - + - + - - org.eclipse.persistence.jpa.PersistenceProvider + + org.onap.policy.guard.OperationsHistory - org.onap.policy.guard.OperationsHistory - - - - - - + + + + + + diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java index 9d32a85e1..a88014e27 100644 --- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java +++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/ophistory/OperationHistoryDataManagerImplTest.java @@ -3,6 +3,7 @@ * ONAP * ================================================================================ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -392,6 +393,8 @@ public class OperationHistoryDataManagerImplTest { // @formatter:off return OperationHistoryDataManagerParams.builder() .url("jdbc:h2:mem:" + OperationHistoryDataManagerImplTest.class.getSimpleName()) + .dbType("H2") + .driver("org.h2.Driver") .userName("sa") .password("") .batchSize(BATCH_SIZE) diff --git a/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-with-db.properties b/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-with-db.properties index c20f82b22..0d550bf98 100644 --- a/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-with-db.properties +++ b/controlloop/common/eventmanager/src/test/resources/eventService/event-svc-with-db.properties @@ -3,6 +3,7 @@ # ONAP # =============================================================================== # Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved. +# Modifications Copyright (C) 2023 Nordix Foundation. # =============================================================================== # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -28,3 +29,5 @@ actor.service.XACML.operations.Guard.path=decide operation.history.url=jdbc:h2:mem:EventManagerServicesTest operation.history.userName=sa operation.history.password= +operation.history.driver=org.h2.Driver +operation.history.dbType=H2 -- 2.16.6