diff options
author | Jim Hahn <jrh3@att.com> | 2021-02-17 15:23:38 -0500 |
---|---|---|
committer | Jim Hahn <jrh3@att.com> | 2021-02-18 17:47:55 +0000 |
commit | b6977d2f7ce64ece732ac1a1a0525dac972d7ccf (patch) | |
tree | 4966f5aa4737b0fef8241989eb216cce7fbe9294 /model/policy-model | |
parent | 4e05982e36aa66b83fa0ee44b9631412442c3969 (diff) |
Fix sonars in apex-pdp
Addressed the following issues:
- initialize mocks before use
- use parameterized queries
- Random() is not secure
- provide parameterized type for generics
- unused imports
- constructor visibility
- use compute() instead of containsKey()/put()
- make final fields static
- rename constants to all upper case
- no assert() in Thread.run() methods
- nested try
- nested if/else
- too many break/continue
- use try-with-resources
- repeatable annotations
- overlapping characters in reg ex
- hashcode is not sufficient in compareTo()
- need equals() with compareTo()
- make class an interface
- use parameterized test
- multiple calls in assert()
- log or re-throw
- use different type of lambda
- use parameterized logging
- use StringBuilder instead of concatenation
- use StandardCharsets.UTF_8
Issue-ID: POLICY-2906
Change-Id: I2cf8c885e3e22c2c6cbe6403a34906928afad022
Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'model/policy-model')
5 files changed, 51 insertions, 33 deletions
diff --git a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxPolicyModel.java b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxPolicyModel.java index 7b7dba800..d55fbd329 100644 --- a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxPolicyModel.java +++ b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxPolicyModel.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,7 +29,6 @@ import java.util.TreeSet; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.JoinColumn; -import javax.persistence.JoinColumns; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.xml.bind.Marshaller; @@ -120,33 +120,33 @@ public class AxPolicyModel extends AxModel { // @formatter:off @OneToOne(cascade = CascadeType.ALL) - @JoinColumns({@JoinColumn(name = "policiesName", referencedColumnName = "name"), - @JoinColumn(name = "policiesVersion", referencedColumnName = "version")}) + @JoinColumn(name = "policiesName", referencedColumnName = "name") + @JoinColumn(name = "policiesVersion", referencedColumnName = "version") @XmlElement(name = "policies", required = true) private AxPolicies policies; @OneToOne(cascade = CascadeType.ALL) - @JoinColumns({@JoinColumn(name = "tasksName", referencedColumnName = "name"), - @JoinColumn(name = "tasksVersion", referencedColumnName = "version")}) + @JoinColumn(name = "tasksName", referencedColumnName = "name") + @JoinColumn(name = "tasksVersion", referencedColumnName = "version") @XmlElement(name = "tasks", required = true) private AxTasks tasks; @OneToOne(cascade = CascadeType.ALL) - @JoinColumns({@JoinColumn(name = "eventsName", referencedColumnName = "name"), - @JoinColumn(name = "eventsVersion", referencedColumnName = "version")}) + @JoinColumn(name = "eventsName", referencedColumnName = "name") + @JoinColumn(name = "eventsVersion", referencedColumnName = "version") @XmlElement(name = "events", required = true) private AxEvents events; @OneToOne(cascade = CascadeType.ALL) - @JoinColumns({@JoinColumn(name = "albumsName", referencedColumnName = "name"), - @JoinColumn(name = "albumsVersion", referencedColumnName = "version")}) + @JoinColumn(name = "albumsName", referencedColumnName = "name") + @JoinColumn(name = "albumsVersion", referencedColumnName = "version") @XmlElement(name = "albums", required = false) @XmlJavaTypeAdapter(EmptyAlbumsAdapter.class) private AxContextAlbums albums; @OneToOne(cascade = CascadeType.ALL) - @JoinColumns({@JoinColumn(name = "schemasName", referencedColumnName = "name"), - @JoinColumn(name = "schemasVersion", referencedColumnName = "version")}) + @JoinColumn(name = "schemasName", referencedColumnName = "name") + @JoinColumn(name = "schemasVersion", referencedColumnName = "version") @XmlElement(name = "schemas", required = true) private AxContextSchemas schemas; // @formatter:on @@ -749,4 +749,4 @@ public class AxPolicyModel extends AxModel { } return schemas.compareTo(other.schemas); } -}
\ No newline at end of file +} diff --git a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxState.java b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxState.java index 44b71f84a..80e967fdf 100644 --- a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxState.java +++ b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxState.java @@ -3,6 +3,7 @@ * Copyright (C) 2016-2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2018 Samsung Electronics Co., Ltd. * Modifications Copyright (C) 2019-2020 Nordix Foundation. + * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +30,6 @@ import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; import javax.persistence.AttributeOverride; -import javax.persistence.AttributeOverrides; import javax.persistence.CascadeType; import javax.persistence.CollectionTable; import javax.persistence.Column; @@ -140,8 +140,8 @@ public class AxState extends AxConcept { // @formatter:off @Embedded - @AttributeOverrides({@AttributeOverride(name = "name", column = @Column(name = "inTriggerName")), - @AttributeOverride(name = "version", column = @Column(name = "inTriggerVersion"))}) + @AttributeOverride(name = "name", column = @Column(name = "inTriggerName")) + @AttributeOverride(name = "version", column = @Column(name = "inTriggerVersion")) @Column(name = "trigger") @XmlElement(required = true) private AxArtifactKey trigger; @@ -195,8 +195,8 @@ public class AxState extends AxConcept { private Map<String, AxStateFinalizerLogic> stateFinalizerLogicMap; @Embedded - @AttributeOverrides({@AttributeOverride(name = "name", column = @Column(name = "defaultTaskName")), - @AttributeOverride(name = "version", column = @Column(name = "defaultTaskVersion"))}) + @AttributeOverride(name = "name", column = @Column(name = "defaultTaskName")) + @AttributeOverride(name = "version", column = @Column(name = "defaultTaskVersion")) @Column(name = "defaultTask") @XmlElement(required = true) private AxArtifactKey defaultTask; diff --git a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateOutput.java b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateOutput.java index 87caf03a2..27c187356 100644 --- a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateOutput.java +++ b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateOutput.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +24,6 @@ package org.onap.policy.apex.model.policymodel.concepts; import java.util.List; import javax.persistence.AttributeOverride; -import javax.persistence.AttributeOverrides; import javax.persistence.Column; import javax.persistence.Embedded; import javax.persistence.EmbeddedId; @@ -79,17 +79,17 @@ public class AxStateOutput extends AxConcept { // @formatter:off @Embedded - @AttributeOverrides({@AttributeOverride(name = "name", column = @Column(name = "outgoingEventName")), - @AttributeOverride(name = "version", column = @Column(name = "outgoingEventVersion"))}) + @AttributeOverride(name = "name", column = @Column(name = "outgoingEventName")) + @AttributeOverride(name = "version", column = @Column(name = "outgoingEventVersion")) @Column(name = "outgoingEvent") @XmlElement(required = true) private AxArtifactKey outgoingEvent; @Embedded - @AttributeOverrides({@AttributeOverride(name = "parentKeyName", column = @Column(name = "nextStateParentKeyName")), - @AttributeOverride(name = "parentKeyVersion", column = @Column(name = "nextStateParentKeyVersion")), - @AttributeOverride(name = "parentLocalName", column = @Column(name = "nextStateParentLocalName")), - @AttributeOverride(name = "localName", column = @Column(name = "nextStateLocalName"))}) + @AttributeOverride(name = "parentKeyName", column = @Column(name = "nextStateParentKeyName")) + @AttributeOverride(name = "parentKeyVersion", column = @Column(name = "nextStateParentKeyVersion")) + @AttributeOverride(name = "parentLocalName", column = @Column(name = "nextStateParentLocalName")) + @AttributeOverride(name = "localName", column = @Column(name = "nextStateLocalName")) @Column(name = "nextState") @XmlElement(required = true) private AxReferenceKey nextState; diff --git a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateTaskReference.java b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateTaskReference.java index a3cb9e647..c98e38fbf 100644 --- a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateTaskReference.java +++ b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateTaskReference.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +24,6 @@ package org.onap.policy.apex.model.policymodel.concepts; import java.util.List; import javax.persistence.AttributeOverride; -import javax.persistence.AttributeOverrides; import javax.persistence.Column; import javax.persistence.Embedded; import javax.persistence.EmbeddedId; @@ -91,10 +91,10 @@ public class AxStateTaskReference extends AxConcept { // @formatter:off @Embedded - @AttributeOverrides({@AttributeOverride(name = "parentKeyName", column = @Column(name = "outputParentKeyName")), - @AttributeOverride(name = "parentKeyVersion", column = @Column(name = "outputParentKeyVersion")), - @AttributeOverride(name = "parentLocalName", column = @Column(name = "outputParentLocalName")), - @AttributeOverride(name = "localName", column = @Column(name = "outputLocalName"))}) + @AttributeOverride(name = "parentKeyName", column = @Column(name = "outputParentKeyName")) + @AttributeOverride(name = "parentKeyVersion", column = @Column(name = "outputParentKeyVersion")) + @AttributeOverride(name = "parentLocalName", column = @Column(name = "outputParentLocalName")) + @AttributeOverride(name = "localName", column = @Column(name = "outputLocalName")) @Column(name = "output") @XmlElement(required = true) private AxReferenceKey output; diff --git a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateTree.java b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateTree.java index cd21742a4..a27e1af1e 100644 --- a/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateTree.java +++ b/model/policy-model/src/main/java/org/onap/policy/apex/model/policymodel/concepts/AxStateTree.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. * Modifications Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,10 +23,12 @@ package org.onap.policy.apex.model.policymodel.concepts; import java.util.ArrayList; +import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; +import lombok.EqualsAndHashCode; import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey; import org.onap.policy.common.utils.validation.Assertions; @@ -38,6 +41,7 @@ import org.onap.policy.common.utils.validation.Assertions; * <p>Validation checks for recursive state use, in other words validation forbids the use of a given * state more than once in a state tree. */ +@EqualsAndHashCode public class AxStateTree implements Comparable<AxStateTree> { private final AxState thisState; private final Set<AxStateTree> nextStates; @@ -144,12 +148,26 @@ public class AxStateTree implements Comparable<AxStateTree> { } final AxStateTree other = otherObj; - if (!thisState.equals(other.thisState)) { - return thisState.compareTo(other.thisState); + int result = thisState.compareTo(other.thisState); + if (result != 0) { + return result; } - if (!nextStates.equals(other.nextStates)) { - return (nextStates.hashCode() - other.nextStates.hashCode()); + + result = Integer.compare(nextStates.size(), other.nextStates.size()); + if (result != 0) { + return result; + } + + Iterator<AxStateTree> iter1 = nextStates.iterator(); + Iterator<AxStateTree> iter2 = other.nextStates.iterator(); + + while (iter1.hasNext()) { + result = iter1.next().compareTo(iter2.next()); + if (result != 0) { + return result; + } } + return 0; } } |