Allow separate registration of DMIDataPlugin and DmiModelPugin
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / models / DmiPluginRegistration.java
index f5a0d79..a604f34 100644 (file)
  *  ============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();
+    }
+
 }