diff options
Diffstat (limited to 'models-pdp')
8 files changed, 510 insertions, 1 deletions
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatus.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatus.java index f7b911fc4..814d35732 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatus.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatus.java @@ -25,7 +25,6 @@ import java.util.List; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.onap.policy.models.base.keys.PolicyTypeIdent; import org.onap.policy.models.pdp.enums.PdpHealthStatus; import org.onap.policy.models.pdp.enums.PdpMessageType; import org.onap.policy.models.pdp.enums.PdpState; diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdent.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdent.java new file mode 100644 index 000000000..6d6b6fedd --- /dev/null +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdent.java @@ -0,0 +1,50 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import lombok.NoArgsConstructor; +import lombok.NonNull; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.Validated; + +/** + * Identifies a policy. Both the name and version must be non-null. + */ +@NonNull +@NoArgsConstructor +public class PolicyIdent extends PfConceptKey { + private static final long serialVersionUID = 1L; + private static final Validated validator = new Validated(); + + public PolicyIdent(String name, String version) { + super(name, version); + } + + public PolicyIdent(PolicyIdent source) { + super(source); + } + + @Override + public PfValidationResult validate(PfValidationResult result) { + return super.validate(validator.validateNotNull(this, result)); + } +} diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdentOptVersion.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdentOptVersion.java new file mode 100644 index 000000000..a68a271f2 --- /dev/null +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdentOptVersion.java @@ -0,0 +1,61 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import lombok.NoArgsConstructor; +import lombok.NonNull; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfKey; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.Validated; + +/** + * Policy identifier with an optional version; only the "name" is required. + */ +@NonNull +@NoArgsConstructor +public class PolicyIdentOptVersion extends PfConceptKey { + private static final long serialVersionUID = 1L; + private static final Validated validator = new Validated(); + + + public PolicyIdentOptVersion(PolicyIdentOptVersion source) { + super(source); + } + + /** + * Validates the object. + * + * @param resultIn where to place any errors + * @return a validation result + */ + public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { + PfValidationResult result = resultIn; + + String name = getName(); + if (PfConceptKey.NULL_KEY_NAME.equals(name)) { + validator.addError(this, "name", result, "null"); + } + result = validator.validateText(this, "name", name, PfKey.NAME_REGEXP, result); + + return validator.validateText(this, "version", getVersion(), PfKey.VERSION_REGEXP, result); + } +} diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyTypeIdent.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyTypeIdent.java new file mode 100644 index 000000000..ef67de86e --- /dev/null +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyTypeIdent.java @@ -0,0 +1,50 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import lombok.NoArgsConstructor; +import lombok.NonNull; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.base.Validated; + +/** + * Identifies a policy type. Both the name and version must be non-null. + */ +@NonNull +@NoArgsConstructor +public class PolicyTypeIdent extends PfConceptKey { + private static final long serialVersionUID = 1L; + private static final Validated validator = new Validated(); + + public PolicyTypeIdent(String name, String version) { + super(name, version); + } + + public PolicyTypeIdent(PolicyTypeIdent source) { + super(source); + } + + @Override + public PfValidationResult validate(PfValidationResult result) { + return super.validate(validator.validateNotNull(this, result)); + } +} diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/IdentTestBase.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/IdentTestBase.java new file mode 100644 index 000000000..10bc9a997 --- /dev/null +++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/IdentTestBase.java @@ -0,0 +1,81 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import org.onap.policy.common.utils.coder.Coder; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardCoder; + +/** + * Super class to test identity keys. + * + * @param <T> type of key being tested + */ +public class IdentTestBase<T> { + + private static final Coder coder = new StandardCoder(); + + private final Class<T> clazz; + + + /** + * Constructs the object. + * @param clazz the type of class being tested + */ + public IdentTestBase(Class<T> clazz) { + this.clazz = clazz; + } + + /** + * Makes an identifier. Uses JSON which does no error checking. + * + * @param name name to put into the identifier + * @param version version to put into the identifier + * @return a new identifier + * @throws CoderException if the JSON cannot be decoded + */ + public T makeIdent(String name, String version) throws CoderException { + StringBuilder bldr = new StringBuilder(); + bldr.append("{"); + + if (name != null) { + bldr.append("'name':'"); + bldr.append(name); + bldr.append("'"); + } + + if (version != null) { + if (name != null) { + bldr.append(','); + } + + bldr.append("'version':'"); + bldr.append(version); + bldr.append("'"); + } + + bldr.append("}"); + + String json = bldr.toString().replace('\'', '"'); + + return coder.decode(json, clazz); + } +} diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdent.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdent.java new file mode 100644 index 000000000..4cd5570e2 --- /dev/null +++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdent.java @@ -0,0 +1,90 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.onap.policy.models.base.PfValidationResult; + +/** + * Test the other constructors, as {@link TestModels} tests the other methods. + */ +public class TestPolicyIdent extends IdentTestBase<PolicyIdent> { + private static final String NAME = "my-name"; + private static final String VERSION = "1.2.3"; + + public TestPolicyIdent() { + super(PolicyIdent.class); + } + + @Test + public void testAllArgsConstructor() { + assertThatThrownBy(() -> new PolicyIdent(null, VERSION)).isInstanceOf(NullPointerException.class); + assertThatThrownBy(() -> new PolicyIdent(NAME, null)).isInstanceOf(NullPointerException.class); + + PolicyIdent orig = new PolicyIdent(NAME, VERSION); + assertEquals(NAME, orig.getName()); + assertEquals(VERSION, orig.getVersion()); + } + + @Test + public void testCopyConstructor() { + assertThatThrownBy(() -> new PolicyIdent(null)).isInstanceOf(NullPointerException.class); + + PolicyIdent orig = new PolicyIdent(); + + // verify with null values + assertEquals(orig.toString(), new PolicyIdent(orig).toString()); + + // verify with all values + orig = new PolicyIdent(NAME, VERSION); + assertEquals(orig.toString(), new PolicyIdent(orig).toString()); + } + + @Test + public void testValidate() throws Exception { + assertTrue(makeIdent(NAME, VERSION).validate(new PfValidationResult()).isValid()); + + // everything is null + PfValidationResult result = makeIdent(null, null).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(2, result.getMessageList().size()); + + // name is null + result = makeIdent(null, VERSION).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + + // version is null + result = makeIdent(NAME, null).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + + // version is invalid + result = makeIdent(NAME, "!!!" + VERSION).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + } +} diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdentOptVersion.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdentOptVersion.java new file mode 100644 index 000000000..3428ac1be --- /dev/null +++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdentOptVersion.java @@ -0,0 +1,87 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.onap.policy.models.base.PfValidationResult; + +/** + * Test the other constructors, as {@link TestModels} tests the other methods. + */ +public class TestPolicyIdentOptVersion extends IdentTestBase<PolicyIdentOptVersion> { + private static final String NAME = "my-name"; + private static final String VERSION = "1.2.3"; + + public TestPolicyIdentOptVersion() { + super(PolicyIdentOptVersion.class); + } + + @Test + public void testCopyConstructor() throws Exception { + assertThatThrownBy(() -> new PolicyIdentOptVersion(null)).isInstanceOf(NullPointerException.class); + + PolicyIdentOptVersion orig = new PolicyIdentOptVersion(); + + // verify with null values + assertEquals(orig.toString(), new PolicyIdentOptVersion(orig).toString()); + + // verify with all values + orig = makeIdent(NAME, VERSION); + assertEquals(orig.toString(), new PolicyIdentOptVersion(orig).toString()); + } + + @Test + public void testValidate() throws Exception { + assertThatThrownBy(() -> makeIdent(NAME, VERSION).validate(null)).isInstanceOf(NullPointerException.class); + assertTrue(makeIdent(NAME, VERSION).validate(new PfValidationResult()).isValid()); + assertTrue(makeIdent(NAME, null).validate(new PfValidationResult()).isValid()); + + // everything is null + PfValidationResult result = makeIdent(null, null).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + + // name is null + result = makeIdent(null, VERSION).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + + // name is null, version is invalid + result = makeIdent(null, "$$$" + VERSION).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(2, result.getMessageList().size()); + + // name is invalid + result = makeIdent("!!!invalid name$$$", VERSION).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + + // version is invalid + result = makeIdent(NAME, "!!!" + VERSION).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + } +} diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyTypeIdent.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyTypeIdent.java new file mode 100644 index 000000000..5b7494ebf --- /dev/null +++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyTypeIdent.java @@ -0,0 +1,91 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; +import org.onap.policy.models.base.PfValidationResult; + +/** + * Test the other constructors, as {@link TestModels} tests the other methods. + */ +public class TestPolicyTypeIdent extends IdentTestBase<PolicyTypeIdent> { + private static final String NAME = "my-name"; + private static final String VERSION = "1.2.3"; + + public TestPolicyTypeIdent() { + super(PolicyTypeIdent.class); + } + + @Test + public void testAllArgsConstructor() { + assertThatThrownBy(() -> new PolicyTypeIdent(null, VERSION)).isInstanceOf(NullPointerException.class); + assertThatThrownBy(() -> new PolicyTypeIdent(NAME, null)).isInstanceOf(NullPointerException.class); + + PolicyTypeIdent orig = new PolicyTypeIdent(NAME, VERSION); + assertEquals(NAME, orig.getName()); + assertEquals(VERSION, orig.getVersion()); + } + + @Test + public void testCopyConstructor() { + assertThatThrownBy(() -> new PolicyTypeIdent(null)).isInstanceOf(NullPointerException.class); + + PolicyTypeIdent orig = new PolicyTypeIdent(); + + // verify with null values + assertEquals(orig.toString(), new PolicyTypeIdent(orig).toString()); + + // verify with all values + orig = new PolicyTypeIdent(NAME, VERSION); + assertEquals(orig.toString(), new PolicyTypeIdent(orig).toString()); + } + + @Test + public void testValidate() throws Exception { + assertTrue(makeIdent(NAME, VERSION).validate(new PfValidationResult()).isValid()); + + // everything is null + PfValidationResult result = makeIdent(null, null).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(2, result.getMessageList().size()); + + // name is null + result = makeIdent(null, VERSION).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + + // version is null + result = makeIdent(NAME, null).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + + // version is invalid + result = makeIdent(NAME, "!!!" + VERSION).validate(new PfValidationResult()); + assertFalse(result.isValid()); + assertEquals(1, result.getMessageList().size()); + } + +} |