Initial OpenECOMP MSO commit
[so.git] / packages / arquillian-unit-tests / src / test / java / org / openecomp / mso / global_tests / asdc / notif_emulator / JsonNotificationData.java
1 package org.openecomp.mso.global_tests.asdc.notif_emulator;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
8
9 import org.codehaus.jackson.annotate.JsonAnySetter;
10 import org.codehaus.jackson.annotate.JsonIgnore;
11 import org.codehaus.jackson.annotate.JsonProperty;
12 import org.codehaus.jackson.map.ObjectMapper;
13 import org.codehaus.jackson.map.annotate.JsonDeserialize;
14 import org.jboss.shrinkwrap.api.exporter.FileExistsException;
15
16 import org.openecomp.sdc.api.notification.IArtifactInfo;
17 import org.openecomp.sdc.api.notification.INotificationData;
18 import org.openecomp.sdc.api.notification.IResourceInstance;
19
20
21 public class JsonNotificationData implements INotificationData {
22
23         @JsonIgnore
24         private Map<String,Object> attributesMap = new HashMap<>();
25         
26         @JsonProperty("serviceArtifacts")
27         @JsonDeserialize(using=JsonArtifactInfoDeserializer.class)
28         private List<IArtifactInfo> serviceArtifacts;
29         
30         @JsonProperty("resources")
31         @JsonDeserialize(using=JsonResourceInfoDeserializer.class)
32         private List<IResourceInstance> resourcesList;
33         
34         public JsonNotificationData() {
35                 
36         }
37                 
38         /**
39          * Method instantiate a INotificationData implementation from a JSON file.
40          * 
41          * @param notifFilePath The file path in String
42          * @return A JsonNotificationData instance
43          * @throws IOException in case of the file is not readable or not accessible 
44          */
45         public static JsonNotificationData instantiateNotifFromJsonFile(String notifFilePath) throws IOException {
46                 
47                 InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(notifFilePath+"/notif-structure.json");
48                 
49                 if (is == null) {
50                         throw new FileExistsException("Resource Path does not exist: "+notifFilePath);
51                 }
52                 ObjectMapper mapper = new ObjectMapper();
53                 return mapper.readValue(is, JsonNotificationData.class);
54         }
55         
56         @SuppressWarnings("unused")
57         @JsonAnySetter
58         public final void setAttribute(String attrName, Object attrValue) {
59                 if ((null != attrName) && (!attrName.isEmpty()) && (null != attrValue) && (null != attrValue.toString())) {
60                         this.attributesMap.put(attrName,attrValue);
61                 }
62         }
63
64         @Override
65         public IArtifactInfo getArtifactMetadataByUUID(String arg0) {
66                 return null;
67         }
68
69         @Override
70         public String getDistributionID() {
71                 return (String)this.attributesMap.get("distributionID");
72         }
73
74         @Override
75         public List<IResourceInstance> getResources() {
76                 return resourcesList;
77         }
78
79         @Override
80         public List<IArtifactInfo> getServiceArtifacts() {
81                 return this.serviceArtifacts;
82         }
83
84         @Override
85         public String getServiceDescription() {
86                 return (String)this.attributesMap.get("serviceDescription");
87         }
88
89         @Override
90         public String getServiceInvariantUUID() {
91                 return (String)this.attributesMap.get("serviceInvariantUUID");
92         }
93
94         @Override
95         public String getServiceName() {
96                 return (String)this.attributesMap.get("serviceName");
97         }
98
99         @Override
100         public String getServiceUUID() {
101                 return (String)this.attributesMap.get("serviceUUID");
102         }
103
104         @Override
105         public String getServiceVersion() {
106                 return (String)this.attributesMap.get("serviceVersion");
107         }
108 }