Interface definition 77/38277/3
authortalio <tali.orenbach@amdocs.com>
Sun, 25 Mar 2018 10:25:43 +0000 (13:25 +0300)
committerAvi Gaffa <avi.gaffa@amdocs.com>
Mon, 9 Apr 2018 12:14:23 +0000 (12:14 +0000)
Add handling in reading and writing operation definition

Change-Id: I0fd5770b19a8cf5d5a8d2b93a549fd66a3b1e728
Issue-ID: SDC-1161
Signed-off-by: talio <tali.orenbach@amdocs.com>
common/openecomp-tosca-datatype/src/main/java/org/openecomp/sdc/tosca/datatypes/model/Implementation.java
common/openecomp-tosca-datatype/src/main/java/org/openecomp/sdc/tosca/datatypes/model/InterfaceDefinition.java
common/openecomp-tosca-datatype/src/main/java/org/openecomp/sdc/tosca/datatypes/model/InterfaceDefinitionTemplate.java
common/openecomp-tosca-datatype/src/main/java/org/openecomp/sdc/tosca/datatypes/model/InterfaceDefinitionType.java
common/openecomp-tosca-datatype/src/main/java/org/openecomp/sdc/tosca/datatypes/model/OperationDefinitionTemplate.java
common/openecomp-tosca-datatype/src/main/java/org/openecomp/sdc/tosca/datatypes/model/OperationDefinitionType.java
openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java
openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/DataModelUtil.java

index cb79691..b14e49a 100644 (file)
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.openecomp.sdc.tosca.datatypes.model;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
 
@@ -50,12 +52,11 @@ public class Implementation {
     }
     Implementation that = (Implementation) o;
     return Objects.equals(primary, that.primary) &&
-        Objects.equals(dependencies, that.dependencies);
+        Objects.equals(new HashSet<>(dependencies), new HashSet<>(that.dependencies));
   }
 
   @Override
   public int hashCode() {
-
     return Objects.hash(primary, dependencies);
   }
 }
index 8d6ace2..3a35b46 100644 (file)
  */
 package org.openecomp.sdc.tosca.datatypes.model;
 
+import java.util.Map;
+
 public abstract class InterfaceDefinition {
-  public abstract void addOperation(String operationName, OperationDefinition operationDefinition);
 
+  protected Map<String, OperationDefinition> operations;
+
+  public abstract void addOperation(String operationName, OperationDefinition operationDefinition);
 }
index 912e5a7..efa86f0 100644 (file)
@@ -20,6 +20,7 @@ import org.apache.commons.collections4.MapUtils;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 public class InterfaceDefinitionTemplate extends InterfaceDefinition {
 
@@ -39,11 +40,6 @@ public class InterfaceDefinitionTemplate extends InterfaceDefinition {
     return operations;
   }
 
-  public void setOperations(
-      Map<String, OperationDefinitionTemplate> operations) {
-    this.operations = operations;
-  }
-
   public void addOperation(String operationName, OperationDefinitionTemplate operation) {
     if(MapUtils.isEmpty(this.operations)) {
       this.operations = new HashMap<>();
@@ -60,21 +56,15 @@ public class InterfaceDefinitionTemplate extends InterfaceDefinition {
     if (!(o instanceof InterfaceDefinitionTemplate)) {
       return false;
     }
-
     InterfaceDefinitionTemplate that = (InterfaceDefinitionTemplate) o;
-
-    if (getInputs() != null ? !getInputs().equals(that.getInputs()) : that.getInputs() != null) {
-      return false;
-    }
-    return getOperations() != null ? getOperations().equals(that.getOperations())
-        : that.getOperations() == null;
+    return Objects.equals(inputs, that.inputs) &&
+        Objects.equals(operations, that.operations);
   }
 
   @Override
   public int hashCode() {
-    int result = getInputs() != null ? getInputs().hashCode() : 0;
-    result = 31 * result + (getOperations() != null ? getOperations().hashCode() : 0);
-    return result;
+
+    return Objects.hash(inputs, operations);
   }
 
   @Override
index 7b4be10..6710e27 100644 (file)
@@ -1,9 +1,25 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * 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.
+ */
+
 package org.openecomp.sdc.tosca.datatypes.model;
 
 import java.util.Map;
 import java.util.Objects;
 
-public class OperationDefinitionTemplate extends OperationDefinition{
+public class OperationDefinitionTemplate extends OperationDefinition {
 
   private Implementation implementation;
   private Map<String, Object> inputs;
index 70c6a58..7043812 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * 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.
+ */
+
 package org.openecomp.sdc.tosca.datatypes.model;
 
 import java.util.Map;
index 2236622..32cfb89 100644 (file)
@@ -20,8 +20,6 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.openecomp.core.converter.errors.CreateToscaObjectErrorBuilder;
 import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.common.utils.CommonUtil;
-import org.openecomp.sdc.logging.api.Logger;
-import org.openecomp.sdc.logging.api.LoggerFactory;
 
 import java.util.HashSet;
 import java.util.Map;
index c66a5ba..ecd182f 100644 (file)
@@ -1269,16 +1269,25 @@ public class DataModelUtil {
           CommonUtil.createObjectUsingSetters(interfaceObj, interfaceClass);
       interfaceDefinition.ifPresent(interfaceDefinitionType1 -> updateInterfaceDefinitionOperations(
           CommonUtil.getObjectAsMap(interfaceObj),
-          interfaceDefinitionType1));
+          interfaceDefinitionType1, getOperationClass(interfaceClass)));
       return interfaceDefinition;
     } catch (Exception ex) {
       throw new CoreException(
           new CreateInterfaceObjectErrorBuilder(InterfaceDefinitionType.class.getName(),
-              interfaceId, ex.getMessage()).build());
+              interfaceId,
+              ex.getMessage()).build());
     }
 
   }
 
+  private static <T extends OperationDefinition, V extends InterfaceDefinition> Class<T> getOperationClass(
+      Class<V> interfaceClass) {
+    return interfaceClass.equals(InterfaceDefinitionType.class)
+        ? (Class<T>) OperationDefinitionType.class
+        :
+            (Class<T>) OperationDefinitionTemplate.class;
+  }
+
   public static Optional<Object> convertInterfaceDefinitionToObj(
       InterfaceDefinitionType interfaceDefinitionType) {
     return converInetrfaceToToscaInterfaceObj(interfaceDefinitionType);
@@ -1351,21 +1360,35 @@ public class DataModelUtil {
     return Optional.empty();
   }
 
-  private static <T extends OperationDefinition> void updateInterfaceDefinitionOperations(
-      Map<String, Object> interfaceAsMap,
-      InterfaceDefinition interfaceDefinition) {
+  private static <T extends OperationDefinition> void updateInterfaceDefinitionOperations
+      (Map<String, Object> interfaceAsMap, InterfaceDefinition interfaceDefinition,
+       Class<T> operationClass) {
 
-    Set<String> fieldNames = CommonUtil.getClassFieldNames(InterfaceDefinitionType.class);
-    Optional<? extends OperationDefinition> operationDefinition = Optional.empty();
+    Set<String> fieldNames = CommonUtil.getClassFieldNames(interfaceDefinition.getClass());
+    Optional<? extends OperationDefinition> operationDefinition;
 
     for (Map.Entry<String, Object> entry : interfaceAsMap.entrySet()) {
-      operationDefinition = createOperation(entry.getKey(), entry.getValue(), fieldNames,
-          interfaceDefinition instanceof InterfaceDefinitionType ? OperationDefinitionType.class :
-              OperationDefinitionTemplate.class);
-
-      operationDefinition
-          .ifPresent(operation -> interfaceDefinition.addOperation(entry.getKey(), operation));
-
+      operationDefinition =
+          createOperation(entry.getKey(), entry.getValue(), fieldNames, operationClass);
+      operationDefinition.ifPresent(operation -> addOperationToInterface(interfaceDefinition,
+          entry.getKey(), operation));
+    }
+  }
+
+  private static void addOperationToInterface(InterfaceDefinition interfaceDefinition,
+                                              String operationName,
+                                              OperationDefinition operationDefinition) {
+    if (interfaceDefinition instanceof InterfaceDefinitionType) {
+      InterfaceDefinitionType interfaceDefinitionType =
+          (InterfaceDefinitionType) interfaceDefinition;
+      interfaceDefinitionType.addOperation(operationName, (OperationDefinitionType)
+          operationDefinition);
+    }
+    if (interfaceDefinition instanceof InterfaceDefinitionTemplate) {
+      InterfaceDefinitionTemplate interfaceDefinitionTemplate =
+          (InterfaceDefinitionTemplate) interfaceDefinition;
+      interfaceDefinitionTemplate.addOperation(operationName, (OperationDefinitionTemplate)
+          operationDefinition);
     }
   }