diff options
Diffstat (limited to 'models-interactions/model-impl/appc')
15 files changed, 1654 insertions, 0 deletions
diff --git a/models-interactions/model-impl/appc/pom.xml b/models-interactions/model-impl/appc/pom.xml new file mode 100644 index 000000000..7b01902d6 --- /dev/null +++ b/models-interactions/model-impl/appc/pom.xml @@ -0,0 +1,47 @@ +<!-- + ============LICENSE_START======================================================= + appc + ================================================================================ + Copyright (C) 2017-2018 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========================================================= + --> + + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.onap.policy.models.policy-models-interactions.model-impl</groupId> + <artifactId>model-impl</artifactId> + <version>2.0.0-SNAPSHOT</version> + </parent> + + <artifactId>appc</artifactId> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <scope>provided</scope> + </dependency> + </dependencies> + +</project> diff --git a/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/CommonHeader.java b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/CommonHeader.java new file mode 100644 index 000000000..964af37d2 --- /dev/null +++ b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/CommonHeader.java @@ -0,0 +1,217 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import com.google.gson.annotations.SerializedName; + +import java.io.Serializable; +import java.time.Instant; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Map; +import java.util.UUID; + +public class CommonHeader implements Serializable { + private static final long serialVersionUID = -3581658269910980336L; + + @SerializedName("TimeStamp") + private Instant timeStamp = Instant.now(); + + @SerializedName("APIver") + private String apiVer = "1.01"; + + @SerializedName("OriginatorID") + private String originatorId; + + @SerializedName("RequestID") + private UUID requestId; + + @SerializedName("SubRequestID") + private String subRequestId; + + @SerializedName("RequestTrack") + private Collection<String> requestTrack = new ArrayList<>(); + + @SerializedName("Flags") + private Collection<Map<String, String>> flags = new ArrayList<>(); + + public CommonHeader() {} + + /** + * Construct an instance from an existing instance. + * + * @param commonHeader the existing instance + */ + public CommonHeader(CommonHeader commonHeader) { + this.originatorId = commonHeader.originatorId; + this.requestId = commonHeader.requestId; + this.subRequestId = commonHeader.subRequestId; + if (commonHeader.requestTrack != null) { + this.requestTrack.addAll(commonHeader.requestTrack); + } + if (commonHeader.flags != null) { + this.flags.addAll(commonHeader.flags); + } + } + + public Instant getTimeStamp() { + return timeStamp; + } + + public void setTimeStamp(Instant timeStamp) { + this.timeStamp = timeStamp; + } + + public String getApiVer() { + return apiVer; + } + + public void setApiVer(String apiVer) { + this.apiVer = apiVer; + } + + public String getOriginatorId() { + return originatorId; + } + + public void setOriginatorId(String originatorId) { + this.originatorId = originatorId; + } + + public UUID getRequestId() { + return requestId; + } + + public void setRequestId(UUID requestId) { + this.requestId = requestId; + } + + public String getSubRequestId() { + return subRequestId; + } + + public void setSubRequestId(String subRequestId) { + this.subRequestId = subRequestId; + } + + public Collection<String> getRequestTrack() { + return requestTrack; + } + + public void setRequestTrack(Collection<String> requestTrack) { + this.requestTrack = requestTrack; + } + + public Collection<Map<String, String>> getFlags() { + return flags; + } + + public void setFlags(Collection<Map<String, String>> flags) { + this.flags = flags; + } + + @Override + public String toString() { + return "CommonHeader [TimeStamp=" + timeStamp + ", APIver=" + apiVer + ", OriginatorId=" + originatorId + + ", RequestId=" + requestId + ", SubrequestId=" + subRequestId + ", RequestTrack=" + requestTrack + + ", Flags=" + flags + "]"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((apiVer == null) ? 0 : apiVer.hashCode()); + result = prime * result + ((flags == null) ? 0 : flags.hashCode()); + result = prime * result + ((originatorId == null) ? 0 : originatorId.hashCode()); + result = prime * result + ((requestId == null) ? 0 : requestId.hashCode()); + result = prime * result + ((requestTrack == null) ? 0 : requestTrack.hashCode()); + result = prime * result + ((subRequestId == null) ? 0 : subRequestId.hashCode()); + result = prime * result + ((timeStamp == null) ? 0 : timeStamp.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + CommonHeader other = (CommonHeader) obj; + if (apiVer == null) { + if (other.apiVer != null) { + return false; + } + } else if (!apiVer.equals(other.apiVer)) { + return false; + } + if (flags == null) { + if (other.flags != null) { + return false; + } + } else if (!flags.equals(other.flags)) { + return false; + } + if (originatorId == null) { + if (other.originatorId != null) { + return false; + } + } else if (!originatorId.equals(other.originatorId)) { + return false; + } + if (requestId == null) { + if (other.requestId != null) { + return false; + } + } else if (!requestId.equals(other.requestId)) { + return false; + } + if (requestTrack == null) { + if (other.requestTrack != null) { + return false; + } + } else if (!requestTrack.equals(other.requestTrack)) { + return false; + } + if (subRequestId == null) { + if (other.subRequestId != null) { + return false; + } + } else if (!subRequestId.equals(other.subRequestId)) { + return false; + } + if (timeStamp == null) { + if (other.timeStamp != null) { + return false; + } + } else if (!timeStamp.equals(other.timeStamp)) { + return false; + } + return true; + } + +} diff --git a/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/Request.java b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/Request.java new file mode 100644 index 000000000..7f1574624 --- /dev/null +++ b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/Request.java @@ -0,0 +1,166 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import com.google.gson.annotations.SerializedName; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +public class Request implements Serializable { + private static final long serialVersionUID = -3912323643990646431L; + + @SerializedName("CommonHeader") + private CommonHeader commonHeader; + + @SerializedName("Action") + private String action; + + @SerializedName("TargetID") + private String targetId; + + @SerializedName("ObjectID") + private String objectId; + + @SerializedName("Payload") + private HashMap<String, Object> payload = new HashMap<>(); + + public Request() { + // Initiate an empty Request instance + } + + public CommonHeader getCommonHeader() { + return commonHeader; + } + + public Map<String, Object> getPayload() { + return payload; + } + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getObjectId() { + return objectId; + } + + public void setObjectId(String objectId) { + this.objectId = objectId; + } + + public void setCommonHeader(CommonHeader commonHeader) { + this.commonHeader = commonHeader; + } + + public void setPayload(Map<String, Object> payload) { + this.payload = new HashMap<>(payload); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((action == null) ? 0 : action.hashCode()); + result = prime * result + ((commonHeader == null) ? 0 : commonHeader.hashCode()); + result = prime * result + ((objectId == null) ? 0 : objectId.hashCode()); + result = prime * result + ((payload == null) ? 0 : payload.hashCode()); + result = prime * result + ((targetId == null) ? 0 : targetId.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + Request other = (Request) obj; + if (action == null) { + if (other.action != null) { + return false; + } + } else if (!action.equals(other.action)) { + return false; + } + + if (commonHeader == null) { + if (other.commonHeader != null) { + return false; + } + } else if (!commonHeader.equals(other.commonHeader)) { + return false; + } + + if (objectId == null) { + if (other.objectId != null) { + return false; + } + } else if (!objectId.equals(other.objectId)) { + return false; + } + + if (payload == null) { + if (other.payload != null) { + return false; + } + } else if (!payload.equals(other.payload)) { + return false; + } + + if (targetId == null) { + if (other.targetId != null) { + return false; + } + } else if (!targetId.equals(other.targetId)) { + return false; + } + + return true; + } + + @Override + public String toString() { + return "Request [CommonHeader=" + commonHeader + ", Action=" + action + ", TargetId=" + targetId + ", ObjectId=" + + objectId + ", Payload=" + payload + "]"; + } + +} diff --git a/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/Response.java b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/Response.java new file mode 100644 index 000000000..f24c84045 --- /dev/null +++ b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/Response.java @@ -0,0 +1,137 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import com.google.gson.annotations.SerializedName; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +public class Response implements Serializable { + private static final long serialVersionUID = 434953706339865151L; + + @SerializedName("CommonHeader") + private CommonHeader commonHeader; + + @SerializedName("Status") + private ResponseStatus status = new ResponseStatus(); + + @SerializedName("Payload") + private HashMap<String, Object> payload = new HashMap<>(); + + public Response() { + + } + + /** + * Construct an instance from an existing instance. + * + * @param request the existing instance + */ + public Response(Request request) { + if (request.getCommonHeader() != null) { + this.commonHeader = new CommonHeader(request.getCommonHeader()); + } + if (request.getPayload() != null) { + this.payload.putAll(request.getPayload()); + } + } + + public CommonHeader getCommonHeader() { + return commonHeader; + } + + public void setCommonHeader(CommonHeader commonHeader) { + this.commonHeader = commonHeader; + } + + public ResponseStatus getStatus() { + return status; + } + + public void setStatus(ResponseStatus status) { + this.status = status; + } + + public Map<String, Object> getPayload() { + return payload; + } + + public void setPayload(Map<String, Object> payload) { + this.payload = new HashMap<>(payload); + } + + @Override + public String toString() { + return "Response [CommonHeader=" + commonHeader + ", Status=" + status + ", Payload=" + payload + "]"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((commonHeader == null) ? 0 : commonHeader.hashCode()); + result = prime * result + ((payload == null) ? 0 : payload.hashCode()); + result = prime * result + ((status == null) ? 0 : status.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + Response other = (Response) obj; + if (commonHeader == null) { + if (other.commonHeader != null) { + return false; + } + } else if (!commonHeader.equals(other.commonHeader)) { + return false; + } + if (payload == null) { + if (other.payload != null) { + return false; + } + } else if (!payload.equals(other.payload)) { + return false; + } + if (status == null) { + if (other.status != null) { + return false; + } + } else if (!status.equals(other.status)) { + return false; + } + return true; + } + + + +} diff --git a/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/ResponseCode.java b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/ResponseCode.java new file mode 100644 index 000000000..48f5182bd --- /dev/null +++ b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/ResponseCode.java @@ -0,0 +1,69 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import com.google.gson.annotations.SerializedName; + +public enum ResponseCode { + ACCEPT(100), ERROR(200), REJECT(300), SUCCESS(400), FAILURE(500); + + @SerializedName("Code") + private Integer code; + + private ResponseCode(int code) { + this.code = code; + } + + public int getValue() { + return this.code; + } + + @Override + public String toString() { + return Integer.toString(this.code); + } + + /** + * Convert an integer code to a ResponseCode. + * + * @param code the integer code + * @return the ResponseCode + */ + public static ResponseCode toResponseCode(int code) { + if (code == ACCEPT.code) { + return ACCEPT; + } + if (code == ERROR.code) { + return ERROR; + } + if (code == REJECT.code) { + return REJECT; + } + if (code == SUCCESS.code) { + return SUCCESS; + } + if (code == FAILURE.code) { + return FAILURE; + } + return null; + } +} diff --git a/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/ResponseStatus.java b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/ResponseStatus.java new file mode 100644 index 000000000..566115081 --- /dev/null +++ b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/ResponseStatus.java @@ -0,0 +1,111 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import com.google.gson.annotations.SerializedName; + +import java.io.Serializable; + +public class ResponseStatus implements Serializable { + private static final long serialVersionUID = 2421770469587860452L; + + @SerializedName("Code") + private int code; + + @SerializedName("Value") + private String value; + + @SerializedName("Description") + private String description; + + @Override + public String toString() { + return "ResponseStatus [Code=" + code + ", Value=" + value + ", Description=" + description + "]"; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + code; + result = prime * result + ((description == null) ? 0 : description.hashCode()); + result = prime * result + ((value == null) ? 0 : value.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + ResponseStatus other = (ResponseStatus) obj; + if (code != other.code) { + return false; + } + if (description == null) { + if (other.description != null) { + return false; + } + } else if (!description.equals(other.description)) { + return false; + } + if (value == null) { + if (other.value != null) { + return false; + } + } else if (!value.equals(other.value)) { + return false; + } + return true; + } + +} diff --git a/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/ResponseValue.java b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/ResponseValue.java new file mode 100644 index 000000000..ef93fd2c8 --- /dev/null +++ b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/ResponseValue.java @@ -0,0 +1,71 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import com.google.gson.annotations.SerializedName; + +public enum ResponseValue { + ACCEPT("ACCEPT"), ERROR("ERROR"), REJECT("REJECT"), SUCCESS("SUCCESS"), FAILURE("FAILURE"); + + @SerializedName("Value") + private String value; + + private ResponseValue(String value) { + this.value = value; + } + + @Override + public String toString() { + return this.value; + } + + /** + * Convert a String value to a ResponseValue. + * + * @param value the String value + * @return the ResponseValue + */ + public static ResponseValue toResponseValue(String value) { + if (value == null) { + return null; + } + + if (value.equals(ACCEPT.toString())) { + return ACCEPT; + } + if (value.equals(ERROR.toString())) { + return ERROR; + } + if (value.equals(REJECT.toString())) { + return REJECT; + } + if (value.equals(SUCCESS.toString())) { + return SUCCESS; + } + if (value.equals(FAILURE.toString())) { + return FAILURE; + } + + return null; + } + +} diff --git a/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/util/Serialization.java b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/util/Serialization.java new file mode 100644 index 000000000..473c5df20 --- /dev/null +++ b/models-interactions/model-impl/appc/src/main/java/org/onap/policy/appc/util/Serialization.java @@ -0,0 +1,86 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc.util; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +import java.lang.reflect.Type; +import java.time.Instant; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class Serialization { + public static final DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSxxx"); + + public static final Gson gsonPretty = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting() + .registerTypeAdapter(ZonedDateTime.class, new GsonUtcAdapter()) + .registerTypeAdapter(Instant.class, new GsonInstantAdapter()) + // .registerTypeAdapter(CommonHeader1607.class, new gsonCommonHeaderInstance()) + // .registerTypeAdapter(ResponseStatus1607.class, new gsonResponseStatus()) + .create(); + + private Serialization() {} + + public static class GsonUtcAdapter implements JsonSerializer<ZonedDateTime>, JsonDeserializer<ZonedDateTime> { + private static final Logger logger = LoggerFactory.getLogger(GsonUtcAdapter.class); + + @Override + public ZonedDateTime deserialize(JsonElement element, Type type, JsonDeserializationContext context) { + try { + return ZonedDateTime.parse(element.getAsString(), format); + } catch (Exception e) { + logger.error("deserialize threw: ", e); + } + return null; + } + + @Override + public JsonElement serialize(ZonedDateTime datetime, Type type, JsonSerializationContext context) { + return new JsonPrimitive(datetime.format(format)); + } + } + + public static class GsonInstantAdapter implements JsonSerializer<Instant>, JsonDeserializer<Instant> { + + @Override + public Instant deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) { + return Instant.ofEpochMilli(json.getAsLong()); + } + + @Override + public JsonElement serialize(Instant src, Type typeOfSrc, JsonSerializationContext context) { + return new JsonPrimitive(src.toEpochMilli()); + } + + } + +} diff --git a/models-interactions/model-impl/appc/src/main/resources/definitions.yaml b/models-interactions/model-impl/appc/src/main/resources/definitions.yaml new file mode 100644 index 000000000..d015f33ae --- /dev/null +++ b/models-interactions/model-impl/appc/src/main/resources/definitions.yaml @@ -0,0 +1,119 @@ +### +# ============LICENSE_START======================================================= +# appc +# ================================================================================ +# Copyright (C) 2017 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========================================================= +### + +Request: + type: object + properties: + CommonHeader: + type: object + properties: + TimeStamp: + type: string + APIver: + type: string + value: '1.01' + OriginatorID: + type: string + RequestID: + type: string + pattern: "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$" + SubRequestID: + type: string + Flags: + type: object + required: + - TimeStamp + - APIver + - OriginatorID + - RequestID + Action: + type: string + enum: + - Audit + - ActionStatus + - BlockAudits + - Configure + - HealthCheck + - Install + - LiveUpgrade + - Migrate + - ModifyConfig + - Query + - Rebuild + - Reconfigure + - Restart + - Rollback + - Scale + - Start + - Stop + - Sync + - Terminate + - Test + - Upgrade + TargetID: + type: string + ObjectID: + type: string + Payload: + type: object + required: + - CommonHeader + - Action + - TargetID +Response: + type: object + properties: + CommonHeader: + type: object + properties: + TimeStamp: + type: string + APIver: + type: string + OriginatorID: + type: string + RequestID: + type: string + SubRequestID: + type: string + Flags: + type: object + required: + - TimeStamp + - APIver + - OriginatorID + - RequestID + Status: + type: object + properties: + Code: + type: integer + Value: + type: string + required: + - Code + - Value + Payload: + type: object + required: + - CommonHeader + - Status + diff --git a/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/CommonHeaderTest.java b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/CommonHeaderTest.java new file mode 100644 index 000000000..c76a46ebb --- /dev/null +++ b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/CommonHeaderTest.java @@ -0,0 +1,180 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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========================================================= + */ + +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.time.Instant; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.junit.Test; + +public class CommonHeaderTest { + + @Test + public void testCommonHeader() { + CommonHeader commonHeader = new CommonHeader(); + assertNotNull(commonHeader); + assertNotNull(new CommonHeader(commonHeader)); + assertNotEquals(0, commonHeader.hashCode()); + + commonHeader.setApiVer("Kansas"); + assertEquals("Kansas", commonHeader.getApiVer()); + + List<Map<String, String>> flagSet = new ArrayList<>(); + commonHeader.setFlags(flagSet); + assertEquals(flagSet, commonHeader.getFlags()); + + commonHeader.setOriginatorId("Dorothy"); + assertEquals("Dorothy", commonHeader.getOriginatorId()); + + UUID requestId = UUID.randomUUID(); + commonHeader.setRequestId(requestId); + assertEquals(requestId, commonHeader.getRequestId()); + + List<String> requestTrackSet = new ArrayList<>(); + commonHeader.setRequestTrack(requestTrackSet); + assertEquals(requestTrackSet, commonHeader.getRequestTrack()); + + commonHeader.setSubRequestId("Can I go home?"); + assertEquals("Can I go home?", commonHeader.getSubRequestId()); + + Instant timestamp = Instant.now(); + commonHeader.setTimeStamp(timestamp); + assertEquals(timestamp, commonHeader.getTimeStamp()); + + assertNotEquals(0, commonHeader.hashCode()); + + assertEquals("CommonHeader [TimeStamp=", commonHeader.toString().substring(0, 24)); + + CommonHeader copiedCommonHeader = new CommonHeader(); + copiedCommonHeader.setApiVer(commonHeader.getApiVer()); + copiedCommonHeader.setFlags(commonHeader.getFlags()); + copiedCommonHeader.setOriginatorId(commonHeader.getOriginatorId()); + copiedCommonHeader.setRequestId(commonHeader.getRequestId()); + copiedCommonHeader.setRequestTrack(commonHeader.getRequestTrack()); + copiedCommonHeader.setSubRequestId(commonHeader.getSubRequestId()); + copiedCommonHeader.setTimeStamp(commonHeader.getTimeStamp()); + + assertTrue(commonHeader.equals(commonHeader)); + assertTrue(commonHeader.equals(copiedCommonHeader)); + assertFalse(commonHeader.equals(null)); + assertFalse(commonHeader.equals("Hello")); + + CommonHeader clonedCommonHeader = new CommonHeader(commonHeader); + clonedCommonHeader.setApiVer(commonHeader.getApiVer()); + clonedCommonHeader.setTimeStamp(commonHeader.getTimeStamp()); + + assertTrue(commonHeader.equals(clonedCommonHeader)); + + commonHeader.setApiVer(null); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setApiVer(null); + assertTrue(commonHeader.equals(copiedCommonHeader)); + commonHeader.setApiVer("Kansas"); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setApiVer("Kansas"); + assertTrue(commonHeader.equals(copiedCommonHeader)); + + commonHeader.setFlags(null); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setFlags(null); + assertTrue(commonHeader.equals(copiedCommonHeader)); + commonHeader.setFlags(flagSet); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setFlags(flagSet); + assertTrue(commonHeader.equals(copiedCommonHeader)); + + commonHeader.setOriginatorId(null); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setOriginatorId(null); + assertTrue(commonHeader.equals(copiedCommonHeader)); + commonHeader.setOriginatorId("Dorothy"); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setOriginatorId("Dorothy"); + assertTrue(commonHeader.equals(copiedCommonHeader)); + + commonHeader.setRequestId(null); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setRequestId(null); + assertTrue(commonHeader.equals(copiedCommonHeader)); + commonHeader.setRequestId(requestId); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setRequestId(requestId); + assertTrue(commonHeader.equals(copiedCommonHeader)); + + commonHeader.setRequestTrack(null); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setRequestTrack(null); + assertTrue(commonHeader.equals(copiedCommonHeader)); + commonHeader.setRequestTrack(requestTrackSet); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setRequestTrack(requestTrackSet); + assertTrue(commonHeader.equals(copiedCommonHeader)); + + commonHeader.setSubRequestId(null); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setSubRequestId(null); + assertTrue(commonHeader.equals(copiedCommonHeader)); + commonHeader.setSubRequestId("Can I go home?"); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setSubRequestId("Can I go home?"); + assertTrue(commonHeader.equals(copiedCommonHeader)); + + commonHeader.setTimeStamp(null); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setTimeStamp(null); + assertTrue(commonHeader.equals(copiedCommonHeader)); + commonHeader.setTimeStamp(timestamp); + assertFalse(commonHeader.equals(copiedCommonHeader)); + copiedCommonHeader.setTimeStamp(timestamp); + assertTrue(commonHeader.equals(copiedCommonHeader)); + } +} diff --git a/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/EnumsTest.java b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/EnumsTest.java new file mode 100644 index 000000000..6d9ea5221 --- /dev/null +++ b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/EnumsTest.java @@ -0,0 +1,75 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import org.junit.Test; + +public class EnumsTest { + + @Test + public void testResponseCode() { + assertEquals(5, ResponseCode.values().length); + + assertNull(ResponseCode.toResponseCode(0)); + + assertEquals(ResponseCode.ACCEPT, ResponseCode.toResponseCode(100)); + assertEquals(ResponseCode.ERROR, ResponseCode.toResponseCode(200)); + assertEquals(ResponseCode.REJECT, ResponseCode.toResponseCode(300)); + assertEquals(ResponseCode.SUCCESS, ResponseCode.toResponseCode(400)); + assertEquals(ResponseCode.FAILURE, ResponseCode.toResponseCode(500)); + + assertEquals(100, ResponseCode.ACCEPT.getValue()); + assertEquals(200, ResponseCode.ERROR.getValue()); + assertEquals(300, ResponseCode.REJECT.getValue()); + assertEquals(400, ResponseCode.SUCCESS.getValue()); + assertEquals(500, ResponseCode.FAILURE.getValue()); + + assertEquals("100", ResponseCode.ACCEPT.toString()); + assertEquals("200", ResponseCode.ERROR.toString()); + assertEquals("300", ResponseCode.REJECT.toString()); + assertEquals("400", ResponseCode.SUCCESS.toString()); + assertEquals("500", ResponseCode.FAILURE.toString()); + } + + @Test + public void testResponseValue() { + assertEquals(5, ResponseValue.values().length); + + assertNull(ResponseValue.toResponseValue("Dorothy")); + assertNull(ResponseValue.toResponseValue(null)); + + assertEquals(ResponseValue.ACCEPT, ResponseValue.toResponseValue("ACCEPT")); + assertEquals(ResponseValue.ERROR, ResponseValue.toResponseValue("ERROR")); + assertEquals(ResponseValue.REJECT, ResponseValue.toResponseValue("REJECT")); + assertEquals(ResponseValue.SUCCESS, ResponseValue.toResponseValue("SUCCESS")); + assertEquals(ResponseValue.FAILURE, ResponseValue.toResponseValue("FAILURE")); + + assertEquals("ACCEPT", ResponseValue.ACCEPT.toString()); + assertEquals("ERROR", ResponseValue.ERROR.toString()); + assertEquals("REJECT", ResponseValue.REJECT.toString()); + assertEquals("SUCCESS", ResponseValue.SUCCESS.toString()); + assertEquals("FAILURE", ResponseValue.FAILURE.toString()); + } +} diff --git a/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/RequestTest.java b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/RequestTest.java new file mode 100644 index 000000000..a6ef4a1d2 --- /dev/null +++ b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/RequestTest.java @@ -0,0 +1,125 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.Test; + +public class RequestTest { + + @Test + public void testRequest() { + Request request = new Request(); + assertNotNull(request); + assertNotEquals(0, request.hashCode()); + + CommonHeader commonHeader = new CommonHeader(); + + request.setCommonHeader(commonHeader); + assertEquals(commonHeader, request.getCommonHeader()); + + request.setAction("Go to Oz"); + assertEquals("Go to Oz", request.getAction()); + + request.setObjectId("Wizard"); + assertEquals("Wizard", request.getObjectId()); + + request.setTargetId("Oz"); + assertEquals("Oz", request.getTargetId()); + + Map<String, Object> payload = new HashMap<>(); + payload.put("North", "Good Witch"); + payload.put("West", "Bad Witch"); + + request.setPayload(payload); + assertEquals(payload, request.getPayload()); + + assertNotEquals(0, request.hashCode()); + + assertEquals("Request [CommonHeader=CommonHeader [TimeStamp=", request.toString().substring(0, 46)); + + Request copiedRequest = new Request(); + copiedRequest.setCommonHeader(request.getCommonHeader()); + copiedRequest.setAction(request.getAction()); + copiedRequest.setObjectId(request.getObjectId()); + copiedRequest.setPayload(request.getPayload()); + copiedRequest.setTargetId(request.getTargetId()); + + assertTrue(request.equals(request)); + assertTrue(request.equals(copiedRequest)); + assertFalse(request.equals(null)); + assertFalse(request.equals("Hello")); + + request.setCommonHeader(null); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setCommonHeader(null); + assertTrue(request.equals(copiedRequest)); + request.setCommonHeader(commonHeader); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setCommonHeader(commonHeader); + assertTrue(request.equals(copiedRequest)); + + request.setAction(null); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setAction(null); + assertTrue(request.equals(copiedRequest)); + request.setAction("Go to Oz"); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setAction("Go to Oz"); + assertTrue(request.equals(copiedRequest)); + + request.setObjectId(null); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setObjectId(null); + assertTrue(request.equals(copiedRequest)); + request.setObjectId("Wizard"); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setObjectId("Wizard"); + assertTrue(request.equals(copiedRequest)); + + request.setTargetId(null); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setTargetId(null); + assertTrue(request.equals(copiedRequest)); + request.setTargetId("Oz"); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setTargetId("Oz"); + assertTrue(request.equals(copiedRequest)); + + request.setPayload(new HashMap<String, Object>()); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setPayload(new HashMap<String, Object>()); + assertTrue(request.equals(copiedRequest)); + request.setPayload(payload); + assertFalse(request.equals(copiedRequest)); + copiedRequest.setPayload(payload); + assertTrue(request.equals(copiedRequest)); + } +} diff --git a/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/ResponseStatusTest.java b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/ResponseStatusTest.java new file mode 100644 index 000000000..b3176774d --- /dev/null +++ b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/ResponseStatusTest.java @@ -0,0 +1,89 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class ResponseStatusTest { + + @Test + public void testResonseStatus() { + ResponseStatus status = new ResponseStatus(); + assertNotNull(status); + assertNotEquals(0, status.hashCode()); + + status.setCode(1234); + assertEquals(1234, status.getCode()); + + status.setDescription("The wonderful land of Oz"); + assertEquals("The wonderful land of Oz", status.getDescription()); + + status.setValue("There's no place like home"); + assertEquals("There's no place like home", status.getValue()); + assertNotEquals(0, status.hashCode()); + + assertEquals("ResponseStatus [Code=1234, Value=There's no pla", status.toString().substring(0, 47)); + + ResponseStatus copiedStatus = new ResponseStatus(); + copiedStatus.setCode(status.getCode()); + copiedStatus.setDescription(status.getDescription()); + copiedStatus.setValue(status.getValue()); + + assertTrue(status.equals(status)); + assertTrue(status.equals(copiedStatus)); + assertFalse(status.equals(null)); + assertFalse(status.equals("Hello")); + + status.setCode(-1); + assertFalse(status.equals(copiedStatus)); + copiedStatus.setCode(-1); + assertTrue(status.equals(copiedStatus)); + status.setCode(1234); + assertFalse(status.equals(copiedStatus)); + copiedStatus.setCode(1234); + assertTrue(status.equals(copiedStatus)); + + status.setDescription(null); + assertFalse(status.equals(copiedStatus)); + copiedStatus.setDescription(null); + assertTrue(status.equals(copiedStatus)); + status.setDescription("The wonderful land of Oz"); + assertFalse(status.equals(copiedStatus)); + copiedStatus.setDescription("The wonderful land of Oz"); + assertTrue(status.equals(copiedStatus)); + + status.setValue(null); + assertFalse(status.equals(copiedStatus)); + copiedStatus.setValue(null); + assertTrue(status.equals(copiedStatus)); + status.setValue("There's no place like home"); + assertFalse(status.equals(copiedStatus)); + copiedStatus.setValue("There's no place like home"); + assertTrue(status.equals(copiedStatus)); + } +} diff --git a/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/ResponseTest.java b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/ResponseTest.java new file mode 100644 index 000000000..b0806fa25 --- /dev/null +++ b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/ResponseTest.java @@ -0,0 +1,105 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.Test; + +public class ResponseTest { + + @Test + public void testResonse() { + Response response = new Response(); + assertNotNull(response); + assertNotNull(new Response(new Request())); + assertNotEquals(0, response.hashCode()); + + CommonHeader commonHeader = new CommonHeader(); + + Request request = new Request(); + request.setCommonHeader(commonHeader); + assertNotNull(new Response(request)); + + response.setCommonHeader(commonHeader); + assertEquals(commonHeader, response.getCommonHeader()); + + ResponseStatus status = new ResponseStatus(); + response.setStatus(status); + assertEquals(status, response.getStatus()); + + Map<String, Object> payload = new HashMap<>(); + payload.put("North", "Good Witch"); + payload.put("West", "Bad Witch"); + + response.setPayload(payload); + assertEquals(payload, response.getPayload()); + + assertNotEquals(0, response.hashCode()); + + assertEquals("Response [CommonHeader=CommonHeader [TimeStamp=", response.toString().substring(0, 47)); + + Response copiedResponse = new Response(); + copiedResponse.setCommonHeader(response.getCommonHeader()); + copiedResponse.setStatus(response.getStatus()); + copiedResponse.setPayload(response.getPayload()); + + assertTrue(response.equals(response)); + assertTrue(response.equals(copiedResponse)); + assertFalse(response.equals(null)); + assertFalse(response.equals("Hello")); + + response.setCommonHeader(null); + assertFalse(response.equals(copiedResponse)); + copiedResponse.setCommonHeader(null); + assertTrue(response.equals(copiedResponse)); + response.setCommonHeader(commonHeader); + assertFalse(response.equals(copiedResponse)); + copiedResponse.setCommonHeader(commonHeader); + assertTrue(response.equals(copiedResponse)); + + response.setStatus(null); + assertFalse(response.equals(copiedResponse)); + copiedResponse.setStatus(null); + assertTrue(response.equals(copiedResponse)); + response.setStatus(status); + assertFalse(response.equals(copiedResponse)); + copiedResponse.setStatus(status); + assertTrue(response.equals(copiedResponse)); + + response.setPayload(new HashMap<String, Object>()); + assertFalse(response.equals(copiedResponse)); + copiedResponse.setPayload(new HashMap<String, Object>()); + assertTrue(response.equals(copiedResponse)); + response.setPayload(payload); + assertFalse(response.equals(copiedResponse)); + copiedResponse.setPayload(payload); + assertTrue(response.equals(copiedResponse)); + } +} diff --git a/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/util/SerializationTest.java b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/util/SerializationTest.java new file mode 100644 index 000000000..e47df424d --- /dev/null +++ b/models-interactions/model-impl/appc/src/test/java/org/onap/policy/appc/util/SerializationTest.java @@ -0,0 +1,57 @@ +/*- + * ============LICENSE_START======================================================= + * appc + * ================================================================================ + * Copyright (C) 2017-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.appc.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +import org.junit.Test; + +public class SerializationTest { + + @Test + public void test() { + String nameString = "Dorothy"; + String jsonName = Serialization.gsonPretty.toJson(nameString, String.class); + assertEquals("\"Dorothy\"", jsonName); + String jsonInOutName = Serialization.gsonPretty.fromJson(jsonName, String.class); + assertEquals("Dorothy", jsonInOutName); + + Instant instant = Instant.ofEpochMilli(1516127215000L); + String instantString = Serialization.gsonPretty.toJson(instant, Instant.class); + assertEquals("1516127215000", instantString); + Instant outInstant = Serialization.gsonPretty.fromJson(instantString, Instant.class); + assertEquals(instant, outInstant); + + ZonedDateTime zdt = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC")); + String zdtString = Serialization.gsonPretty.toJson(zdt, ZonedDateTime.class); + assertEquals("\"2018-01-16 18:26:55.000000+00:00\"", zdtString); + ZonedDateTime outZdt = Serialization.gsonPretty.fromJson(zdtString, ZonedDateTime.class); + assertEquals(zdt.getDayOfWeek(), outZdt.getDayOfWeek()); + + assertNull(Serialization.gsonPretty.fromJson("oz time is weird", ZonedDateTime.class)); + } +} |