/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation
+ * Copyright (C) 2021-2022 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* ============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.DmiRequestException;
+import org.onap.cps.ncmp.api.impl.exception.NcmpException;
/**
- * DmiRegistry.
+ * Dmi Registry request object.
*/
@Getter
@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;
+
+ /**
+ * 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)) {
+ if ((isNullEmptyOrBlank(dataServiceName) && isNullEmptyOrBlank(modelsServiceName))) {
+ errorMessage = "No DMI plugin service names";
+ } else {
+ if (isNullEmptyOrBlank(dataServiceName) || isNullEmptyOrBlank(modelsServiceName)) {
+ errorMessage = "Cannot register just a Data or Model plugin service name";
+ }
+ }
+ } else {
+ if (!isNullEmptyOrBlank(dataServiceName) || !isNullEmptyOrBlank(modelsServiceName)) {
+ errorMessage = "Cannot register combined plugin service name and other service names";
+ }
+ }
+
+ if (errorMessage != null) {
+ throw new DmiRequestException(errorMessage, "Please supply correct plugin information.");
+ }
+ }
+
+ private static boolean isNullEmptyOrBlank(final String serviceName) {
+ return Strings.isNullOrEmpty(serviceName) || serviceName.isBlank();
+ }
+
}