import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
-import org.onap.policy.models.pdp.concepts.ToscaPolicyIdentifierOptVersion;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifierOptVersion;
/**
* Request deploy or update a set of policies using the <i>simple</i> PDP Group deployment
import org.onap.policy.models.base.PfObjectFiler;
import org.onap.policy.models.pdp.enums.PdpState;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
/**
* Filter class for searches for {@link PdpGroup} instances.
import org.onap.policy.models.pdp.enums.PdpMessageType;
/**
- * Class to represent the base class for various messages that will ve exchanged between PAP and PDP.
+ * Class to represent the base class for various messages that will be exchanged between
+ * PAP and PDP.
*
* @author Ram Krishna Verma (ram.krishna.verma@est.tech)
*/
*/
private long timestampMs = System.currentTimeMillis();
+ /**
+ * PDP name, or {@code null} for state-change broadcast messages.
+ */
+ private String name;
+
+ /**
+ * Group associated with the PDP. For state-change messages, this may be {@code null},
+ * if the {@link #name} is provided.
+ */
+ private String pdpGroup;
+
+ /**
+ * Group associated with the PDP. For state-change messages, this may be {@code null},
+ * if the {@link #name} is provided.
+ */
+ private String pdpSubgroup;
+
+
/**
* Constructor for instantiating PdpMessage class with message name.
*
public PdpMessage(final PdpMessageType messageName) {
this.messageName = messageName;
}
+
+ /**
+ * Constructs the object, making a deep copy. Does <i>not</i> copy the request id or
+ * the time stamp.
+ *
+ * @param source source from which to copy
+ */
+ public PdpMessage(final PdpMessage source) {
+ this.messageName = source.messageName;
+ this.name = source.name;
+ this.pdpGroup = source.pdpGroup;
+ this.pdpSubgroup = source.pdpSubgroup;
+ }
}
*/
@Getter
@Setter
-@ToString
+@ToString(callSuper = true)
public class PdpStateChange extends PdpMessage {
- private String name;
private PdpState state;
- private String pdpGroup;
- private String pdpSubgroup;
/**
* Constructor for instantiating PdpStateChange class with message name.
* @param source source from which to copy
*/
public PdpStateChange(PdpStateChange source) {
- super(PdpMessageType.PDP_STATE_CHANGE);
+ super(source);
- this.name = source.name;
this.state = source.state;
- this.pdpGroup = source.pdpGroup;
- this.pdpSubgroup = source.pdpSubgroup;
}
}
package org.onap.policy.models.pdp.concepts;
import java.util.List;
-
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
-
import org.onap.policy.models.pdp.enums.PdpHealthStatus;
import org.onap.policy.models.pdp.enums.PdpMessageType;
import org.onap.policy.models.pdp.enums.PdpState;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
/**
* Class to represent the PDP_STATUS message that all the PDP's will send to PAP.
*/
@Getter
@Setter
-@ToString
+@ToString(callSuper = true)
public class PdpStatus extends PdpMessage {
- private String name;
- private String version;
private String pdpType;
private PdpState state;
private PdpHealthStatus healthy;
+
+ /**
+ * Description of the PDP or the PDP type. May be left {@code null}.
+ */
private String description;
- private String pdpGroup;
- private String pdpSubgroup;
+
private List<ToscaPolicyTypeIdentifier> supportedPolicyTypes;
private List<ToscaPolicyIdentifier> policies;
- private String instance;
private String deploymentInstanceInfo;
private String properties;
private PdpStatistics statistics;
import lombok.ToString;
import org.onap.policy.models.base.PfUtils;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
/**
* Class to represent a group of all PDP's of the same pdp type running for a particular domain.
*/
@Getter
@Setter
-@ToString
+@ToString(callSuper = true)
public class PdpUpdate extends PdpMessage {
- private String name;
+ /**
+ * Description of the PDP group.
+ */
private String description;
- private String pdpGroup;
- private String pdpSubgroup;
- private long pdpHeartbeatIntervalMs;
+
+ private Long pdpHeartbeatIntervalMs;
private List<ToscaPolicy> policies;
/**
* @param source source from which to copy
*/
public PdpUpdate(PdpUpdate source) {
- super(PdpMessageType.PDP_UPDATE);
+ super(source);
- this.name = source.name;
this.description = source.description;
- this.pdpGroup = source.pdpGroup;
- this.pdpSubgroup = source.pdpSubgroup;
this.pdpHeartbeatIntervalMs = source.pdpHeartbeatIntervalMs;
this.policies = (source.policies == null ? null
: source.policies.stream().map(ToscaPolicy::new).collect(Collectors.toList()));
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
-
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NonNull;
-
import org.onap.policy.common.utils.validation.Assertions;
import org.onap.policy.common.utils.validation.ParameterValidationUtils;
import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
-import org.onap.policy.models.pdp.concepts.ToscaPolicyIdentifier;
-import org.onap.policy.models.pdp.concepts.ToscaPolicyTypeIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
/**
* Class to represent a PDP subgroup in the database.
--- /dev/null
+/*
+ * ============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;
+
+/**
+ * Utility class for tests of PdpMessage subclasses.
+ */
+public class PdpMessageUtils {
+
+ public static String removeVariableFields(String text) {
+ return text.replaceAll("requestId=[^,]*", "requestId=xxx").replaceAll("timestampMs=[^,]*", "timestampMs=nnn");
+ }
+}
public class TestModels {
@Test
- public void testPapModels() {
+ public void testPdpModels() {
final Validator validator = ValidatorBuilder.create().with(new ToStringTester()).with(new SetterTester())
.with(new GetterTester()).build();
validator.validate(TestModels.class.getPackage().getName(), new FilterPackageInfo());
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Models
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.pdp.concepts;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.policy.models.pdp.enums.PdpMessageType;
+
+/**
+ * Test the copy constructor, as {@link TestModels} tests the other methods.
+ */
+public class TestPdpMessage {
+
+ @Test
+ public void testCopyConstructor() {
+ assertThatThrownBy(() -> new PdpMessage((PdpMessage) null)).isInstanceOf(NullPointerException.class);
+
+ PdpMessage orig = new PdpMessage(PdpMessageType.PDP_STATE_CHANGE);
+
+ // verify with null values
+ PdpMessage newmsg = new PdpMessage(orig);
+ newmsg.setRequestId(orig.getRequestId());
+ newmsg.setTimestampMs(orig.getTimestampMs());
+ assertEquals(orig.toString(), newmsg.toString());
+
+ // verify with all values
+ orig.setName("my-name");
+ orig.setPdpGroup("my-group");
+ orig.setPdpSubgroup("my-subgroup");
+
+ newmsg = new PdpMessage(orig);
+ newmsg.setRequestId(orig.getRequestId());
+ newmsg.setTimestampMs(orig.getTimestampMs());
+ assertEquals(orig.toString(), newmsg.toString());
+ }
+}
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
+import static org.onap.policy.models.pdp.concepts.PdpMessageUtils.removeVariableFields;
import org.junit.Test;
import org.onap.policy.models.pdp.enums.PdpState;
PdpStateChange orig = new PdpStateChange();
// verify with null values
- assertEquals("PdpStateChange(name=null, state=null, pdpGroup=null, pdpSubgroup=null)",
- new PdpStateChange(orig).toString());
+ assertEquals(removeVariableFields(orig.toString()), removeVariableFields(new PdpStateChange(orig).toString()));
// verify with all values
orig.setName("my-name");
orig.setPdpSubgroup("my-subgroup");
orig.setState(PdpState.SAFE);
- assertEquals("PdpStateChange(name=my-name, state=SAFE, pdpGroup=my-group, pdpSubgroup=my-subgroup)",
- new PdpStateChange(orig).toString());
+ assertEquals(removeVariableFields(orig.toString()), removeVariableFields(new PdpStateChange(orig).toString()));
}
}
import java.util.TreeMap;
import org.junit.Test;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
/**
* Test the copy constructor, as {@link TestModels} tests the other methods.
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.onap.policy.models.pdp.concepts.PdpMessageUtils.removeVariableFields;
import java.util.Arrays;
import java.util.List;
PdpUpdate orig = new PdpUpdate();
// verify with null values
- assertEquals("PdpUpdate(name=null, description=null, pdpGroup=null, pdpSubgroup=null, "
- + "pdpHeartbeatIntervalMs=0, policies=null)", new PdpUpdate(orig).toString());
+ assertEquals(removeVariableFields(orig.toString()), removeVariableFields(new PdpUpdate(orig).toString()));
// verify with all values
orig.setDescription("my-description");
orig.setName("my-name");
orig.setPdpGroup("my-group");
orig.setPdpSubgroup("my-subgroup");
- orig.setPdpHeartbeatIntervalMs(30000);
+ orig.setPdpHeartbeatIntervalMs(30000L);
ToscaPolicy policy1 = new ToscaPolicy();
policy1.setName("policy-a");
PdpUpdate other = new PdpUpdate(orig);
- assertEquals("PdpUpdate(name=my-name, description=my-description, "
- + "pdpGroup=my-group, pdpSubgroup=my-subgroup, pdpHeartbeatIntervalMs=30000, policies=["
- + "ToscaPolicy(super=ToscaEntity(name=policy-a, version=1.2.3, derivedFrom=null, "
- + "metadata=null, description=null), type=null, typeVersion=null, properties=null), "
- + "ToscaPolicy(super=ToscaEntity(name=policy-b, version=4.5.6, derivedFrom=null, "
- + "metadata=null, description=null), type=null, typeVersion=null, properties=null)])",
- other.toString());
+ assertEquals(removeVariableFields(orig.toString()), removeVariableFields(other.toString()));
// ensure list and items are not the same object
assertTrue(other.getPolicies() != policies);
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
+ * Modifications 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.
import java.sql.Connection;
import java.sql.DriverManager;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.onap.policy.models.dao.PfDao;
import org.onap.policy.models.dao.PfDaoFactory;
import org.onap.policy.models.dao.impl.DefaultPfDao;
-import org.onap.policy.models.pdp.concepts.Pdp;
-import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
-import org.onap.policy.models.pdp.concepts.PdpSubGroup;
-import org.onap.policy.models.pdp.concepts.ToscaPolicyTypeIdentifier;
-import org.onap.policy.models.pdp.enums.PdpHealthStatus;
-import org.onap.policy.models.pdp.enums.PdpState;
import org.onap.policy.models.pdp.persistence.provider.PdpProvider;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.simple.provider.SimpleToscaProvider;
/**
* Test the {@link SimpleToscaProvider} class.
String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json");
- @SuppressWarnings("unchecked")
PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
PdpGroups createdPdpGroups0 = new PdpGroups();
}
}
}
+
+ /**
+ * Gets the identifier for this policy.
+ *
+ * @return this policy's identifier
+ */
+ public ToscaPolicyIdentifier getIdentifier() {
+ return new ToscaPolicyIdentifier(getName(), getVersion());
+ }
+
+ /**
+ * Gets the type identifier for this policy.
+ *
+ * @return this policy's type identifier
+ */
+ public ToscaPolicyTypeIdentifier getTypeIdentifier() {
+ return new ToscaPolicyTypeIdentifier(getType(), getTypeVersion());
+ }
}
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.models.pdp.concepts;
+package org.onap.policy.models.tosca.authorative.concepts;
import lombok.Data;
import lombok.NoArgsConstructor;
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.models.pdp.concepts;
+package org.onap.policy.models.tosca.authorative.concepts;
import lombok.Data;
import lombok.NoArgsConstructor;
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.models.pdp.concepts;
+package org.onap.policy.models.tosca.authorative.concepts;
import lombok.Data;
import lombok.NoArgsConstructor;
new FilterClassName(
org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter.class.getName()),
new FilterClassName(
- org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter.class.getName())
+ org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter.class.getName()),
+ new FilterClassName(
+ ToscaIdentifierTestBase.class.getName())
);
// @formatter:on
}
--- /dev/null
+/*
+ * ============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.tosca.authorative.concepts;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+/**
+ * Tests methods not tested by {@link TestPojos}.
+ */
+public class TestToscaPolicy {
+
+ @Test
+ public void testGetIdentifier_testGetTypeIdentifier() {
+ ToscaPolicy policy = new ToscaPolicy();
+
+ policy.setName("my_name");
+ policy.setVersion("1.2.3");
+ policy.setType("my_type");
+ policy.setTypeVersion("3.2.1");
+
+ ToscaPolicyIdentifier ident = policy.getIdentifier();
+ assertEquals("my_name", ident.getName());
+ assertEquals("1.2.3", ident.getVersion());
+
+ ToscaPolicyTypeIdentifier type = policy.getTypeIdentifier();
+ assertEquals("my_type", type.getName());
+ assertEquals("3.2.1", type.getVersion());
+ }
+}
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.models.pdp.concepts;
+package org.onap.policy.models.tosca.authorative.concepts;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
- * Test the other constructors, as {@link TestModels} tests the other methods.
+ * Test the other constructors, as {@link TestPojos} tests the other methods.
*/
public class TestToscaPolicyIdentifier extends ToscaIdentifierTestBase<ToscaPolicyIdentifier> {
private static final String NAME = "my-name";
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.models.pdp.concepts;
+package org.onap.policy.models.tosca.authorative.concepts;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
- * Test the other constructors, as {@link TestModels} tests the other methods.
+ * Test the other constructors, as {@link TestPojos} tests the other methods.
*/
public class TestToscaPolicyIdentifierOptVersion extends ToscaIdentifierTestBase<ToscaPolicyIdentifierOptVersion> {
private static final String NAME = "my-name";
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.models.pdp.concepts;
+package org.onap.policy.models.tosca.authorative.concepts;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
- * Test the other constructors, as {@link TestModels} tests the other methods.
+ * Test the other constructors, as {@link TestPojos} tests the other methods.
*/
public class TestToscaPolicyTypeIdentifier extends ToscaIdentifierTestBase<ToscaPolicyTypeIdentifier> {
private static final String NAME = "my-name";
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.models.pdp.concepts;
+package org.onap.policy.models.tosca.authorative.concepts;
import org.onap.policy.common.utils.coder.Coder;
import org.onap.policy.common.utils.coder.CoderException;