diff options
author | JosephKeenan <joseph.keenan@est.tech> | 2021-11-23 12:18:28 +0000 |
---|---|---|
committer | JosephKeenan <joseph.keenan@est.tech> | 2021-11-25 15:40:10 +0000 |
commit | 20b4f9cf0b662de4a7665b2a82593ef0205f5e06 (patch) | |
tree | ab849ff17b861f246c328e421e8dcfc8ceb9e851 /cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models | |
parent | bc742a1dbe39a3269abab9e62a9d489f460144b0 (diff) |
Allow separate registration of DMIDataPlugin and DmiModelPugin
Moved relevant code from NetworkCmProxyDataServiceImp to DmiOperations
Split DmiOperations into DMiData... and DMIModelOperations
Merged update-operation changes
Added tests for error message validation in NetworkCmProxyDataServiceImplSpec
Removede @Service from DMIOperations and added @component to
DmiDataOperations & DmiModelOperations
Verify sync robot test is now hardened
Added exitonfailure so robot tests stop after first encountered failed
test
Issue-ID: CPS-736
Change-Id: I0b40931cc8cd4fc0452328a0a7e0f60e6fc38d0a
Signed-off-by: JosephKeenan <joseph.keenan@est.tech>
Signed-off-by: ToineSiebelink <toine.siebelink@est.tech>
Signed-off-by: DylanB95EST <dylan.byrne@est.tech>
Diffstat (limited to 'cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models')
5 files changed, 131 insertions, 58 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandle.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandle.java index 84227ed6b..a38442b09 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandle.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandle.java @@ -22,7 +22,9 @@ package org.onap.cps.ncmp.api.models; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Map; +import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import org.springframework.validation.annotation.Validated; @@ -32,6 +34,8 @@ import org.springframework.validation.annotation.Validated; @Validated @Getter @Setter +@AllArgsConstructor +@NoArgsConstructor public class CmHandle { @JsonProperty("cmHandle") diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/DmiPluginRegistration.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/DmiPluginRegistration.java index f5a0d7954..a604f3448 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/DmiPluginRegistration.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/DmiPluginRegistration.java @@ -18,14 +18,17 @@ * ============LICENSE_END========================================================= */ - package org.onap.cps.ncmp.api.models; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonSetter; +import com.fasterxml.jackson.annotation.Nulls; +import com.google.common.base.Strings; import java.util.List; import lombok.Getter; import lombok.Setter; +import org.onap.cps.ncmp.api.impl.exception.NcmpException; /** * Dmi Registry request object. @@ -35,12 +38,53 @@ import lombok.Setter; @JsonInclude(Include.NON_NULL) public class DmiPluginRegistration { + @JsonSetter(nulls = Nulls.AS_EMPTY) private String dmiPlugin; + @JsonSetter(nulls = Nulls.AS_EMPTY) + private String dmiDataPlugin; + + @JsonSetter(nulls = Nulls.AS_EMPTY) + private String dmiModelPlugin; + private List<CmHandle> createdCmHandles; private List<CmHandle> updatedCmHandles; private List<String> removedCmHandles; + public static final String PLEASE_SUPPLY_CORRECT_PLUGIN_INFORMATION = "Please supply correct plugin information."; + + /** + * Validates plugin service names. + * + * @throws NcmpException if validation fails. + */ + public void validateDmiPluginRegistration() throws NcmpException { + final String combinedServiceName = dmiPlugin; + final String dataServiceName = dmiDataPlugin; + final String modelsServiceName = dmiModelPlugin; + + String errorMessage = null; + + if (isNullEmptyOrBlank(combinedServiceName) + && isNullEmptyOrBlank(dataServiceName) + && isNullEmptyOrBlank(modelsServiceName)) { + errorMessage = "No DMI plugin service names"; + } + + if (!isNullEmptyOrBlank(combinedServiceName) + && (!isNullEmptyOrBlank(dataServiceName) || !isNullEmptyOrBlank(modelsServiceName))) { + errorMessage = "Invalid combination of plugin service names"; + } + + if (errorMessage != null) { + throw new NcmpException(errorMessage, PLEASE_SUPPLY_CORRECT_PLUGIN_INFORMATION); + } + } + + private static boolean isNullEmptyOrBlank(final String serviceName) { + return Strings.isNullOrEmpty(serviceName) || serviceName.isBlank(); + } + } diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/GenericRequestBody.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/GenericRequestBody.java deleted file mode 100644 index 3e1ba4a97..000000000 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/GenericRequestBody.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps.ncmp.api.models; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonValue; -import java.util.Map; -import lombok.Builder; -import lombok.Getter; - -@JsonInclude(Include.NON_NULL) -@Getter -@Builder -public class GenericRequestBody { - public enum OperationEnum { - READ("read"), - CREATE("create"), - UPDATE("update"); - private String value; - - OperationEnum(final String value) { - this.value = value; - } - - @Override - @JsonValue - public String toString() { - return String.valueOf(value); - } - } - - private OperationEnum operation; - private String dataType; - private String data; - private Map<String, String> cmHandleProperties; -} diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandle.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandle.java index 88d97d25f..8b959e327 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandle.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandle.java @@ -22,13 +22,17 @@ package org.onap.cps.ncmp.api.models; import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.base.Strings; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import lombok.AllArgsConstructor; +import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.onap.cps.ncmp.api.impl.operations.RequiredDmiService; /** * DmiRegistry. @@ -43,22 +47,72 @@ public class PersistenceCmHandle { @JsonProperty("dmi-service-name") private String dmiServiceName; + @JsonProperty("dmi-data-service-name") + private String dmiDataServiceName; + + @JsonProperty("dmi-model-service-name") + private String dmiModelServiceName; + @JsonProperty("additional-properties") private List<AdditionalProperty> additionalProperties; /** + * Create a persistenceCmHandle. + * @param dmiServiceName dmi service name + * @param dmiDataServiceName dmi data service name + * @param dmiModelServiceName dmi model service name + * @param cmHandle the cm handle + * @return instance of persistenceCmHandle + */ + public static PersistenceCmHandle toPersistenceCmHandle(final String dmiServiceName, + final String dmiDataServiceName, + final String dmiModelServiceName, + final CmHandle cmHandle) { + final PersistenceCmHandle persistenceCmHandle = new PersistenceCmHandle(); + persistenceCmHandle.setId(cmHandle.getCmHandleID()); + persistenceCmHandle.setDmiServiceName(dmiServiceName); + persistenceCmHandle.setDmiDataServiceName(dmiDataServiceName); + persistenceCmHandle.setDmiModelServiceName(dmiModelServiceName); + if (cmHandle.getCmHandleProperties() == null) { + persistenceCmHandle.asAdditionalProperties(Collections.emptyMap()); + } else { + persistenceCmHandle.asAdditionalProperties(cmHandle.getCmHandleProperties()); + } + return persistenceCmHandle; + } + + /** * Set Additional Properties map, key and value pair. * @param additionalPropertiesAsMap Map of Additional Properties */ - public void setAdditionalProperties(final Map<String, String> additionalPropertiesAsMap) { + public void asAdditionalProperties(final Map<String, String> additionalPropertiesAsMap) { additionalProperties = new ArrayList<>(additionalPropertiesAsMap.size()); for (final Map.Entry<String, String> entry : additionalPropertiesAsMap.entrySet()) { additionalProperties.add(new AdditionalProperty(entry.getKey(), entry.getValue())); } } + /** + * Resolve a dmi service name. + * @param requiredService indicates what typo of service is required + * @return dmi service name + */ + public String resolveDmiServiceName(final RequiredDmiService requiredService) { + if (isNullEmptyOrBlank(dmiServiceName)) { + if (RequiredDmiService.DATA.equals(requiredService)) { + return dmiDataServiceName; + } + return dmiModelServiceName; + } + return dmiServiceName; + } + + private static boolean isNullEmptyOrBlank(final String serviceName) { + return Strings.isNullOrEmpty(serviceName) || serviceName.isBlank(); + } + @AllArgsConstructor - @Getter + @Data public static class AdditionalProperty { @JsonProperty() diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandlesList.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandlesList.java index f35abf60b..d4f6e952d 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandlesList.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandlesList.java @@ -22,6 +22,7 @@ package org.onap.cps.ncmp.api.models; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import lombok.Getter; @@ -32,6 +33,31 @@ public class PersistenceCmHandlesList { private List<PersistenceCmHandle> persistenceCmHandles = new ArrayList<>(); /** + * Create a PersistenceCmHandleList given all service names and a collection of cmHandles. + * @param dmiServiceName the dmi service name + * @param dmiDataServiceName the dmi data service name + * @param dmiModelServiceName the dmi model service name + * @param cmHandles cm handles + * @return instance of PersistenceCmHandleList + */ + public static PersistenceCmHandlesList toPersistenceCmHandlesList(final String dmiServiceName, + final String dmiDataServiceName, + final String dmiModelServiceName, + final Collection<CmHandle> cmHandles) { + final PersistenceCmHandlesList persistenceCmHandlesList = new PersistenceCmHandlesList(); + for (final CmHandle cmHandle : cmHandles) { + final PersistenceCmHandle persistenceCmHandle = + PersistenceCmHandle.toPersistenceCmHandle( + dmiServiceName, + dmiDataServiceName, + dmiModelServiceName, + cmHandle); + persistenceCmHandlesList.add(persistenceCmHandle); + } + return persistenceCmHandlesList; + } + + /** * Add a persistenceCmHandle. * * @param persistenceCmHandle the persistenceCmHandle to add |