/** * Copyright 2020 Nokia * <p> * 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 * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * 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. */ package org.onap.functional.cli; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; public class OnapCliValidationResponseWrapper { public final VnfDataWrapper vnf; public final String data; public final String criteria; public final List<ValidationResultWrapper> results; public final String contact; public final String platform; public OnapCliValidationResponseWrapper(VnfDataWrapper vnf, String data, String criteria, List<ValidationResultWrapper> results, String contact, String platform) { this.vnf = vnf; this.data = data; this.criteria = criteria; this.results = results; this.contact = contact; this.platform = platform; } public static class VnfDataWrapper { public String name; public String vendor; public String version; public String type; public String mode; } public static class ValidationResultWrapper { public Boolean passed; public String vnfreqName; public String description; public List<ValidationErrorWrapper> errors; public List<ValidationErrorWrapper> warnings; public static class ValidationErrorWrapper { public String vnfreqNo; public String code; public String message; public String file; public String lineNumber; public ValidationErrorWrapper(String vnfreqNo, String code, String message, String file, String lineNumber) { this.vnfreqNo = vnfreqNo; this.code = code; this.message = message; this.file = file; this.lineNumber = lineNumber; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; List<String> m1 = prepareMessages((ValidationErrorWrapper) o); List<String> m2 = prepareMessages(this); return o.hashCode() == this.hashCode() && m1.containsAll(m2); } private List<String> prepareMessages(ValidationErrorWrapper other) { return Arrays.stream(other.message.split(" ")) .map(it -> it.replaceAll("[\\[\\](){},]", "")) .collect(Collectors.toList()); } @Override public int hashCode() { return Objects.hash(vnfreqNo, code, file, lineNumber); } @Override public String toString() { return "ValidationErrorWrapper{" + "vnfreqNo='" + vnfreqNo + '\'' + ", code='" + code + '\'' + ", message='" + message + '\'' + ", file='" + file + '\'' + ", lineNumber='" + lineNumber + '\'' + '}'; } } } }