summaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java13
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java5
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandlerTest.java46
3 files changed, 38 insertions, 26 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java b/main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java
index 070261db..4d142114 100644
--- a/main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java
+++ b/main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019-2021 Nordix Foundation.
+ * Copyright (C) 2019-2021,2023 Nordix Foundation.
* Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
* Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
@@ -34,7 +34,6 @@ import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.eclipse.persistence.exceptions.EclipseLinkException;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
@@ -131,7 +130,7 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
} catch (final PolicyPapException exp) {
LOGGER.error("Operation Failed", exp);
} catch (final Exception exp) {
- if (isDuplicateKeyException(exp)) {
+ if (isDuplicateKeyException(exp, Exception.class)) {
/*
* this is to be expected, if multiple PAPs are processing the same
* heartbeat at a time, thus we log the exception at a trace level
@@ -151,17 +150,17 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
* Determines if the exception indicates a duplicate key.
*
* @param thrown exception to check
+ * @param exceptionClazz the class to check against
* @return {@code true} if the exception occurred due to a duplicate key
*/
- protected static boolean isDuplicateKeyException(Throwable thrown) {
+ protected static boolean isDuplicateKeyException(Throwable thrown, Class<? extends Throwable> exceptionClazz) {
while (thrown != null) {
if (thrown instanceof SQLIntegrityConstraintViolationException) {
return true;
}
- if (thrown instanceof EclipseLinkException) {
- EclipseLinkException ele = (EclipseLinkException) thrown;
- if (isDuplicateKeyException(ele.getInternalException())) {
+ if (exceptionClazz.isInstance(thrown)) {
+ if (isDuplicateKeyException(thrown.getCause(), exceptionClazz)) {
return true;
}
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java b/main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java
index 19b3c672..825208a4 100644
--- a/main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java
+++ b/main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019, 2022 Nordix Foundation.
+ * Copyright (C) 2019, 2022-2023 Nordix Foundation.
* Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
* Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
@@ -137,6 +137,9 @@ public class PapActivator extends ServiceManagerContainer {
// @formatter:off
+ // Note: This class is not Thread Safe. If more than one PAP component is started, the code below overwrites
+ // the parameter service and registry entries.
+
addAction("Meter Registry",
() -> Registry.register(PapConstants.REG_METER_REGISTRY, meterRegistry),
() -> Registry.unregister(PapConstants.REG_METER_REGISTRY));
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandlerTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandlerTest.java
index 5129bf5f..f3ba51ab 100644
--- a/main/src/test/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandlerTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandlerTest.java
@@ -3,6 +3,7 @@
* ONAP
* ================================================================================
* Copyright (C) 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.
@@ -23,8 +24,17 @@ package org.onap.policy.pap.main.comm;
import static org.assertj.core.api.Assertions.assertThat;
import java.sql.SQLIntegrityConstraintViolationException;
-import org.eclipse.persistence.exceptions.EclipseLinkException;
+import org.hibernate.HibernateException;
import org.junit.Test;
+import org.onap.policy.pap.main.PolicyPapApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest(
+ classes = PolicyPapApplication.class,
+ webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
+ properties = {
+ "db.initialize=false"
+ })
public class PdpStatusMessageHandlerTest {
@@ -34,68 +44,68 @@ public class PdpStatusMessageHandlerTest {
// @formatter:off
// null exception
- assertThat(PdpStatusMessageHandler.isDuplicateKeyException(null)).isFalse();
+ assertThat(PdpStatusMessageHandler.isDuplicateKeyException(null, HibernateException.class)).isFalse();
// plain exception
assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
- new Exception()))
+ new Exception(), HibernateException.class))
.isFalse();
// cause is also plain
assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
new Exception(
- new Exception())))
+ new Exception()), HibernateException.class))
.isFalse();
// dup key
assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
- new SQLIntegrityConstraintViolationException()))
+ new SQLIntegrityConstraintViolationException(), HibernateException.class))
.isTrue();
// cause is dup key
assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
new Exception(
- new SQLIntegrityConstraintViolationException())))
+ new SQLIntegrityConstraintViolationException()), HibernateException.class))
.isTrue();
// eclipselink exception, no internal exception
assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
- new MyEclipseLinkException()))
+ new MyHibernateException(), HibernateException.class))
.isFalse();
// eclipselink exception, cause is plain
assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
- new MyEclipseLinkException(
- new Exception())))
+ new MyHibernateException(
+ new Exception()), HibernateException.class))
.isFalse();
// eclipselink exception, cause is dup
assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
- new MyEclipseLinkException(
- new SQLIntegrityConstraintViolationException())))
+ new MyHibernateException(
+ new SQLIntegrityConstraintViolationException()), HibernateException.class))
.isTrue();
// multiple cause both inside and outside of the eclipselink exception
assertThat(PdpStatusMessageHandler.isDuplicateKeyException(
new Exception(
new Exception(
- new MyEclipseLinkException(
+ new MyHibernateException(
new Exception(
- new SQLIntegrityConstraintViolationException()))))))
+ new SQLIntegrityConstraintViolationException())))), HibernateException.class))
.isTrue();
// @formatter:on
}
- public static class MyEclipseLinkException extends EclipseLinkException {
+ public static class MyHibernateException extends HibernateException {
private static final long serialVersionUID = 1L;
- public MyEclipseLinkException() {
- // do nothing
+ public MyHibernateException() {
+ super("");
}
- public MyEclipseLinkException(Exception exception) {
- setInternalException(exception);
+ public MyHibernateException(Exception exception) {
+ super(exception);
}
}
}