--- /dev/null
+/*\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP : ccsdk features\r
+ * ================================================================================\r
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=======================================================\r
+ *\r
+ */\r
+\r
+package org.onap.ccsdk.features.lib.npm.models;\r
+\r
+import org.onap.ccsdk.features.lib.npm.NpmException;\r
+import org.onap.ccsdk.features.lib.npm.utils.NpmUtils;\r
+import org.apache.commons.lang3.StringUtils;\r
+\r
+import java.time.Instant;\r
+import java.util.Objects;\r
+import java.util.UUID;\r
+\r
+/**\r
+ * The type Npm Transaction.\r
+ *\r
+ * @author Kapil Singal\r
+ */\r
+public class NpmTransaction {\r
+\r
+ private UUID npmTransactionId;\r
+ private String requestId; // multiple transactions can have the same requestId\r
+\r
+ private String sbEndpoint;\r
+ private String sbType;\r
+\r
+ private int priority = -1;\r
+ private int connectionCount = 1;\r
+\r
+ private Instant timestamp = Instant.now();\r
+ private Instant timeToLive = Instant.MAX;\r
+\r
+ private NpmStatusEnum status = NpmStatusEnum.RECEIVED;\r
+ private String message;\r
+\r
+ private String serviceKey;\r
+ private Object serviceRequest;\r
+\r
+ public UUID getNpmTransactionId() {\r
+ return npmTransactionId;\r
+ }\r
+\r
+ public void setNpmTransactionId(UUID npmTransactionId) {\r
+ this.npmTransactionId = npmTransactionId;\r
+ }\r
+\r
+ public String getRequestId() {\r
+ return requestId;\r
+ }\r
+\r
+ public void setRequestId(String requestId) {\r
+ this.requestId = requestId;\r
+ }\r
+\r
+ public String getSbEndpoint() {\r
+ return sbEndpoint;\r
+ }\r
+\r
+ public void setSbEndpoint(String sbEndpoint) {\r
+ this.sbEndpoint = sbEndpoint;\r
+ }\r
+\r
+ public String getSbType() {\r
+ return sbType;\r
+ }\r
+\r
+ public void setSbType(String sbType) {\r
+ this.sbType = sbType;\r
+ }\r
+\r
+ public int getPriority() {\r
+ return priority;\r
+ }\r
+\r
+ public void setPriority(int priority) {\r
+ this.priority = priority;\r
+ }\r
+\r
+ public int getConnectionCount() {\r
+ return connectionCount;\r
+ }\r
+\r
+ public void setConnectionCount(int connectionCount) {\r
+ this.connectionCount = connectionCount;\r
+ }\r
+\r
+ public Instant getTimestamp() {\r
+ return timestamp;\r
+ }\r
+\r
+ public void setTimestamp(Instant timestamp) {\r
+ this.timestamp = timestamp;\r
+ }\r
+\r
+ public Instant getTimeToLive() {\r
+ return timeToLive;\r
+ }\r
+\r
+ public void setTimeToLive(Instant timeToLive) {\r
+ this.timeToLive = timeToLive;\r
+ }\r
+\r
+ public NpmStatusEnum getStatus() {\r
+ return status;\r
+ }\r
+\r
+ public void setStatus(NpmStatusEnum status) {\r
+ this.status = status;\r
+ }\r
+\r
+ public String getMessage() {\r
+ return message;\r
+ }\r
+\r
+ public void setMessage(String message) {\r
+ this.message = message;\r
+ }\r
+\r
+ public String getServiceKey() {\r
+ return serviceKey;\r
+ }\r
+\r
+ public void setServiceKey(String serviceKey) {\r
+ this.serviceKey = serviceKey;\r
+ }\r
+\r
+ public Object getServiceRequest() {\r
+ return serviceRequest;\r
+ }\r
+\r
+ public void setServiceRequest(Object serviceRequest) {\r
+ this.serviceRequest = serviceRequest;\r
+ }\r
+\r
+ /**\r
+ * Validate boolean.\r
+ *\r
+ * @throws NpmException the validator exception\r
+ */\r
+ public void validate() throws NpmException {\r
+ if (npmTransactionId == null) {\r
+ throw new NpmException("Transaction is not valid: npmTransactionId is required.");\r
+ }\r
+ if (StringUtils.isBlank(sbEndpoint)) {\r
+ throw new NpmException("Transaction is not valid: sbEndpoint is required.");\r
+ }\r
+ if (StringUtils.isBlank(sbType)) {\r
+ throw new NpmException("Transaction is not valid: sbType is required.");\r
+ }\r
+ if (timestamp == null) {\r
+ throw new NpmException("Transaction is not valid: txTimestamp is required.");\r
+ }\r
+ if (timeToLive == null) {\r
+ throw new NpmException("Transaction is not valid: timeToLive is required.");\r
+ }\r
+ if (StringUtils.isBlank(serviceKey)) {\r
+ throw new NpmException("Transaction is not valid: serviceKey is required.");\r
+ }\r
+ if (serviceRequest == null) {\r
+ throw new NpmException("Transaction is not valid: serviceRequest is required.");\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ return NpmUtils.getJson(this);\r
+ }\r
+\r
+ @Override\r
+ public boolean equals(Object o) {\r
+ if (this == o) {\r
+ return true;\r
+ }\r
+ if (!(o instanceof NpmTransaction)) {\r
+ return false;\r
+ }\r
+ NpmTransaction that = (NpmTransaction) o;\r
+ return npmTransactionId.equals(that.npmTransactionId);\r
+ }\r
+\r
+ @Override\r
+ public int hashCode() {\r
+ return Math.abs(Objects.hash(npmTransactionId));\r
+ }\r
+\r
+}\r