Added UniversalVesAdapter in the Mapper 73/38073/1
authorPooja03 <PM00501616@techmahindra.com>
Fri, 23 Mar 2018 12:19:26 +0000 (17:49 +0530)
committerPooja03 <PM00501616@techmahindra.com>
Fri, 23 Mar 2018 12:19:26 +0000 (17:49 +0530)
Adding full UniversalVesAdapter Module in Mapper

Change-Id: I7edece763546b91700983554ffcf38f8ab945ae2
Issue-ID: DCAEGEN2-335
Signed-off-by: Pooja03 <PM00501616@techmahindra.com>
58 files changed:
.gitignore [new file with mode: 0644]
LICENSE.txt [new file with mode: 0644]
UniversalVesAdapter/.gitignore [new file with mode: 0644]
UniversalVesAdapter/SampleofMappingFile/snmpTrapToVes.xml [new file with mode: 0644]
UniversalVesAdapter/pom.xml [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AdditionalField.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AlarmAdditionalInformation.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/ArrayOfField_.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/CommonEventHeader.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/Event.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/FaultFields.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/HeartbeatFields.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/InternalHeaderFields.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/VesEvent.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/Application.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/GenericAdapter.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/UniversalEventAdapter.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/Configuration.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaapMrUrlConfiguration.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DiskRepoConfiguration.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/UniversalEventConfiguration.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/MockDmaapController.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/VesController.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/ConfigFileData.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Domains.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Priorities.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Severity.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/State.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/SysLogSeverity.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertAction.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertType.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaCounterCriticality.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaEventSeverity.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/VnfStatus.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileReadException.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileSmooksConversionException.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/DMaapException.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/MapperConfigException.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/VesException.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Entry.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Evaluation.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/MapperConfig.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/AdapterService.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/ConfigFileService.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DMaapService.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DiskRepoConfigFileService.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/MongoDbConfigFileService.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VesService.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/MapperConfigUtils.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java [new file with mode: 0644]
UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/SmooksUtils.java [new file with mode: 0644]
UniversalVesAdapter/src/main/resources/MapperConfig.json [new file with mode: 0644]
UniversalVesAdapter/src/main/resources/MapperConfigFullFormat.json [new file with mode: 0644]
UniversalVesAdapter/src/main/resources/application.properties [new file with mode: 0644]
UniversalVesAdapter/src/main/resources/dme2/consumer.properties [new file with mode: 0644]
UniversalVesAdapter/src/main/resources/dme2/preferredRoute.properties [new file with mode: 0644]
UniversalVesAdapter/src/main/resources/dme2/producer.properties [new file with mode: 0644]
pom.xml [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..19499ef
--- /dev/null
@@ -0,0 +1,4 @@
+# Package Files #
+*.jar
+.mvn/*
+.settings/*
\ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644 (file)
index 0000000..f12b304
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
\ No newline at end of file
diff --git a/UniversalVesAdapter/.gitignore b/UniversalVesAdapter/.gitignore
new file mode 100644 (file)
index 0000000..b83d222
--- /dev/null
@@ -0,0 +1 @@
+/target/
diff --git a/UniversalVesAdapter/SampleofMappingFile/snmpTrapToVes.xml b/UniversalVesAdapter/SampleofMappingFile/snmpTrapToVes.xml
new file mode 100644 (file)
index 0000000..5fad2c9
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<smooks-resource-list
+        xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
+        xmlns:json="http://www.milyn.org/xsd/smooks/json-1.1.xsd"
+        xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.2.xsd">
+    <json:reader rootName="simple"  keyWhitspaceReplacement="-">
+       </json:reader>
+    <!-- <jb:bean class="com.example.demo.Simple" beanId="simple" createOnElement="simple">
+       <jb:value property="orderId" data="#/orderId" />
+       <jb:value property="username" data="#/username" />
+       <jb:wiring property="customer" beanIdRef="customer"/>
+       <jb:wiring property="orderItems" beanIdRef="orderItems"/>       
+    </jb:bean> -->
+    
+    <jb:bean class="org.onap.dcaegen2.ves.domain.VesEvent" beanId="vesEvent" createOnElement="simple">
+       <jb:wiring property="event" beanIdRef="event"/>
+    </jb:bean>
+     <jb:bean class="org.onap.dcaegen2.ves.domain.Event" beanId="event" createOnElement="simple">
+       <jb:wiring property="commonEventHeader" beanIdRef="commonEventHeader"/>
+       <jb:wiring property="faultFields" beanIdRef="faultFields"/>     
+       <!--<jb:wiring property="measurementsForVfScalingFields" beanIdRef="measurementsForVfScalingFields"/> -->       
+    </jb:bean>   
+    <!--<jb:bean class="org.onap.dcaegen2.ves.domain.MeasurementsForVfScalingFields" beanId="measurementsForVfScalingFields" createOnElement="simple">
+       <jb:wiring property="additionalMeasurements" beanIdRef="additionalMeasurements"/>
+    </jb:bean>-->
+    
+    <jb:bean class="org.onap.dcaegen2.ves.domain.CommonEventHeader" beanId="commonEventHeader" createOnElement="simple">
+       <jb:value property="eventId" data="#/community" />
+       <jb:value property="eventName" data="#/protocol-version" />     
+       <jb:value property="domain" data="#/trap-category" /> 
+       <jb:value property="sequence" data="#/time-received" decoder="Long"/>
+       <jb:value property="lastEpochMicrosec" data="#/community-len"  decoder="Double" />
+       <jb:value property="startEpochMicrosec" data="#/notify-OID-len"   />
+    </jb:bean>   
+    
+    <jb:bean class="org.onap.dcaegen2.ves.domain.FaultFields" beanId="faultFields" createOnElement="simple">
+       <jb:value property="alarmCondition" data="#/cambria.partition" />
+       <jb:value property="eventSeverity" data="#/notify-OID" /> 
+       <jb:value property="eventSourceType" data="#/agent-name" />
+       <jb:value property="specificProblem" data="#/agent-address" />  
+       <jb:value property="faultFieldsVersion" data="#/epoch_serno" decoder="Double" />
+    </jb:bean>   
+        
+    
+       <!--<jb:bean class="java.util.ArrayList" beanId="additionalMeasurements" createOnElement="simple">
+       <jb:wiring beanIdRef="additionalMeasurement"/>
+    </jb:bean>    
+    
+    <jb:bean class="org.onap.dcaegen2.ves.domain.AdditionalMeasurement" beanId="additionalMeasurement" createOnElement="varbinds/element">
+       <jb:value property="name" data="#/varbind_value" />
+    </jb:bean>  -->  
+    
+</smooks-resource-list>
\ No newline at end of file
diff --git a/UniversalVesAdapter/pom.xml b/UniversalVesAdapter/pom.xml
new file mode 100644 (file)
index 0000000..d66b090
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+
+       <groupId>org.onap.dcaegen2.services.mapper.vesadapter</groupId>
+       <artifactId>UniversalVesAdapter</artifactId>
+       <version>0.0.1</version>
+
+       <parent>
+               <!-- <groupId>org.springframework.boot</groupId>
+               <artifactId>spring-boot-starter-parent</artifactId>
+               <version>2.0.0.RELEASE</version> -->    
+               <groupId>org.onap.dcaegen2.services.mapper</groupId>
+               <artifactId>mapper</artifactId>
+               <version>0.0.1-SNAPSHOT</version>
+       </parent>
+
+       <dependencies>
+               <dependency>
+                       <groupId>org.milyn</groupId>
+                       <artifactId>milyn-smooks-all</artifactId>
+                       <version>1.7.0</version>
+                       <exclusions>
+                               <exclusion>
+                                       <groupId>javax.servlet</groupId>
+                                       <artifactId>servlet-api</artifactId>
+                               </exclusion>
+                       </exclusions>
+               </dependency>
+               <dependency>
+                       <groupId>org.onap.dmaap.messagerouter.dmaapclient</groupId>
+                       <artifactId>dmaapClient</artifactId>
+                       <version>1.1.3</version>
+               </dependency>
+
+
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-web</artifactId>
+                           <version>2.0.0.RELEASE</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-test</artifactId>
+                           <version>2.0.0.RELEASE</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>com.jayway.jsonpath</groupId>
+                       <artifactId>json-path</artifactId>
+                       <version>2.4.0</version>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.springframework.data</groupId>
+                       <artifactId>spring-data-commons</artifactId>
+                        <version>2.0.5.RELEASE</version>
+               </dependency>
+               <dependency>
+    <groupId>com.fasterxml.jackson.core</groupId>
+    <artifactId>jackson-databind</artifactId>
+    <version>2.9.4</version>
+</dependency>
+
+       </dependencies>
+
+       <properties>
+               <java.version>1.8</java.version>
+       </properties>
+
+
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.springframework.boot</groupId>
+                               <artifactId>spring-boot-maven-plugin</artifactId>
+                       </plugin>
+               </plugins>
+       </build>
+
+       <repositories>
+               <repository>
+                       <id>spring-releases</id>
+                       <url>https://repo.spring.io/libs-release</url>
+               </repository>
+       </repositories>
+       <pluginRepositories>
+               <pluginRepository>
+                       <id>spring-releases</id>
+                       <url>https://repo.spring.io/libs-release</url>
+               </pluginRepository>
+       </pluginRepositories>
+</project>
diff --git a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AdditionalField.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AdditionalField.java
new file mode 100644 (file)
index 0000000..850b39b
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.dcaegen2.ves.domain;
+
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "name",
+    "value"
+})
+public class AdditionalField {
+       
+    @JsonProperty("name")
+    private String name;
+    @JsonProperty("value")
+    private String value;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("name")
+    public String getName() {
+        return name;
+    }
+
+    @JsonProperty("name")
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @JsonProperty("value")
+    public String getValue() {
+        return value;
+    }
+
+    @JsonProperty("value")
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AlarmAdditionalInformation.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AlarmAdditionalInformation.java
new file mode 100644 (file)
index 0000000..fe60761
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.dcaegen2.ves.domain;
+
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "name",
+    "value"
+})
+public class AlarmAdditionalInformation {
+
+    @JsonProperty("name")
+    private String name;
+    @JsonProperty("value")
+    private String value;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("name")
+    public String getName() {
+        return name;
+    }
+
+    @JsonProperty("name")
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @JsonProperty("value")
+    public String getValue() {
+        return value;
+    }
+
+    @JsonProperty("value")
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("name", name).append("value", value).append("additionalProperties", additionalProperties).toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(additionalProperties).append(name).append(value).toHashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AlarmAdditionalInformation) == false) {
+            return false;
+        }
+        AlarmAdditionalInformation rhs = ((AlarmAdditionalInformation) other);
+        return new EqualsBuilder().append(additionalProperties, rhs.additionalProperties).append(name, rhs.name).append(value, rhs.value).isEquals();
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/ArrayOfField_.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/ArrayOfField_.java
new file mode 100644 (file)
index 0000000..4e28be7
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.dcaegen2.ves.domain;
+
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "name",
+    "value"
+})
+public class ArrayOfField_ {
+
+    @JsonProperty("name")
+    private String name;
+    @JsonProperty("value")
+    private String value;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("name")
+    public String getName() {
+        return name;
+    }
+
+    @JsonProperty("name")
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @JsonProperty("value")
+    public String getValue() {
+        return value;
+    }
+
+    @JsonProperty("value")
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("name", name).append("value", value).append("additionalProperties", additionalProperties).toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(additionalProperties).append(name).append(value).toHashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof ArrayOfField_) == false) {
+            return false;
+        }
+        ArrayOfField_ rhs = ((ArrayOfField_) other);
+        return new EqualsBuilder().append(additionalProperties, rhs.additionalProperties).append(name, rhs.name).append(value, rhs.value).isEquals();
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/CommonEventHeader.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/CommonEventHeader.java
new file mode 100644 (file)
index 0000000..f5d56a4
--- /dev/null
@@ -0,0 +1,282 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.dcaegen2.ves.domain;
+
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "domain",
+    "eventId",
+    "eventName",
+    "lastEpochMicrosec",
+    "priority",
+    "reportingEntityName",
+    "sequence",
+    "sourceName",
+    "startEpochMicrosec",
+    "version",
+    "eventType",
+    "internalHeaderFields",
+    "nfcNamingCode",
+    "nfNamingCode",
+    "reportingEntityId",
+    "sourceId"
+})
+public class CommonEventHeader {
+
+    @JsonProperty("domain")
+    private String domain;
+    @JsonProperty("eventId")
+    private String eventId;
+    @JsonProperty("eventName")
+    private String eventName;
+    @JsonProperty("lastEpochMicrosec")
+    private Double lastEpochMicrosec;
+    @JsonProperty("priority")
+    private String priority;
+    @JsonProperty("reportingEntityName")
+    private String reportingEntityName;
+    @JsonProperty("sequence")
+    private Long sequence;
+    @JsonProperty("sourceName")
+    private String sourceName;
+    @JsonProperty("startEpochMicrosec")
+    private Double startEpochMicrosec;
+    @JsonProperty("version")
+    private Double version;
+    @JsonProperty("eventType")
+    private String eventType;
+    @JsonProperty("internalHeaderFields")
+    private InternalHeaderFields internalHeaderFields;
+    @JsonProperty("nfcNamingCode")
+    private String nfcNamingCode;
+    @JsonProperty("nfNamingCode")
+    private String nfNamingCode;
+    @JsonProperty("reportingEntityId")
+    private String reportingEntityId;
+    @JsonProperty("sourceId")
+    private String sourceId;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("domain")
+    public String getDomain() {
+        return domain;
+    }
+
+    @JsonProperty("domain")
+    public void setDomain(String domain) {
+        this.domain = domain;
+    }
+
+    @JsonProperty("eventId")
+    public String getEventId() {
+        return eventId;
+    }
+
+    @JsonProperty("eventId")
+    public void setEventId(String eventId) {
+        this.eventId = eventId;
+    }
+
+    @JsonProperty("eventName")
+    public String getEventName() {
+        return eventName;
+    }
+
+    @JsonProperty("eventName")
+    public void setEventName(String eventName) {
+        this.eventName = eventName;
+    }
+
+    @JsonProperty("lastEpochMicrosec")
+    public Double getLastEpochMicrosec() {
+        return lastEpochMicrosec;
+    }
+
+    @JsonProperty("lastEpochMicrosec")
+    public void setLastEpochMicrosec(Double lastEpochMicrosec) {
+        this.lastEpochMicrosec = lastEpochMicrosec;
+    }
+
+    @JsonProperty("priority")
+    public String getPriority() {
+        return priority;
+    }
+
+    @JsonProperty("priority")
+    public void setPriority(String priority) {
+        this.priority = priority;
+    }
+
+    @JsonProperty("reportingEntityName")
+    public String getReportingEntityName() {
+        return reportingEntityName;
+    }
+
+    @JsonProperty("reportingEntityName")
+    public void setReportingEntityName(String reportingEntityName) {
+        this.reportingEntityName = reportingEntityName;
+    }
+
+    @JsonProperty("sequence")
+    public Long getSequence() {
+        return sequence;
+    }
+
+    @JsonProperty("sequence")
+    public void setSequence(Long sequence) {
+        this.sequence = sequence;
+    }
+
+    @JsonProperty("sourceName")
+    public String getSourceName() {
+        return sourceName;
+    }
+
+    @JsonProperty("sourceName")
+    public void setSourceName(String sourceName) {
+        this.sourceName = sourceName;
+    }
+
+    @JsonProperty("startEpochMicrosec")
+    public Double getStartEpochMicrosec() {
+        return startEpochMicrosec;
+    }
+
+    @JsonProperty("startEpochMicrosec")
+    public void setStartEpochMicrosec(Double startEpochMicrosec) {
+        this.startEpochMicrosec = startEpochMicrosec;
+    }
+
+    @JsonProperty("version")
+    public Double getVersion() {
+        return version;
+    }
+
+    @JsonProperty("version")
+    public void setVersion(Double version) {
+        this.version = version;
+    }
+
+    @JsonProperty("eventType")
+    public String getEventType() {
+        return eventType;
+    }
+
+    @JsonProperty("eventType")
+    public void setEventType(String eventType) {
+        this.eventType = eventType;
+    }
+
+    @JsonProperty("internalHeaderFields")
+    public InternalHeaderFields getInternalHeaderFields() {
+        return internalHeaderFields;
+    }
+
+    @JsonProperty("internalHeaderFields")
+    public void setInternalHeaderFields(InternalHeaderFields internalHeaderFields) {
+        this.internalHeaderFields = internalHeaderFields;
+    }
+
+    @JsonProperty("nfcNamingCode")
+    public String getNfcNamingCode() {
+        return nfcNamingCode;
+    }
+
+    @JsonProperty("nfcNamingCode")
+    public void setNfcNamingCode(String nfcNamingCode) {
+        this.nfcNamingCode = nfcNamingCode;
+    }
+
+    @JsonProperty("nfNamingCode")
+    public String getNfNamingCode() {
+        return nfNamingCode;
+    }
+
+    @JsonProperty("nfNamingCode")
+    public void setNfNamingCode(String nfNamingCode) {
+        this.nfNamingCode = nfNamingCode;
+    }
+
+    @JsonProperty("reportingEntityId")
+    public String getReportingEntityId() {
+        return reportingEntityId;
+    }
+
+    @JsonProperty("reportingEntityId")
+    public void setReportingEntityId(String reportingEntityId) {
+        this.reportingEntityId = reportingEntityId;
+    }
+
+    @JsonProperty("sourceId")
+    public String getSourceId() {
+        return sourceId;
+    }
+
+    @JsonProperty("sourceId")
+    public void setSourceId(String sourceId) {
+        this.sourceId = sourceId;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("domain", domain).append("eventId", eventId).append("eventName", eventName).append("lastEpochMicrosec", lastEpochMicrosec).append("priority", priority).append("reportingEntityName", reportingEntityName).append("sequence", sequence).append("sourceName", sourceName).append("startEpochMicrosec", startEpochMicrosec).append("version", version).append("eventType", eventType).append("internalHeaderFields", internalHeaderFields).append("nfcNamingCode", nfcNamingCode).append("nfNamingCode", nfNamingCode).append("reportingEntityId", reportingEntityId).append("sourceId", sourceId).append("additionalProperties", additionalProperties).toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(nfNamingCode).append(eventType).append(sourceId).append(version).append(reportingEntityName).append(startEpochMicrosec).append(lastEpochMicrosec).append(eventId).append(nfcNamingCode).append(additionalProperties).append(sourceName).append(sequence).append(priority).append(domain).append(internalHeaderFields).append(eventName).append(reportingEntityId).toHashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof CommonEventHeader) == false) {
+            return false;
+        }
+        CommonEventHeader rhs = ((CommonEventHeader) other);
+        return new EqualsBuilder().append(nfNamingCode, rhs.nfNamingCode).append(eventType, rhs.eventType).append(sourceId, rhs.sourceId).append(version, rhs.version).append(reportingEntityName, rhs.reportingEntityName).append(startEpochMicrosec, rhs.startEpochMicrosec).append(lastEpochMicrosec, rhs.lastEpochMicrosec).append(eventId, rhs.eventId).append(nfcNamingCode, rhs.nfcNamingCode).append(additionalProperties, rhs.additionalProperties).append(sourceName, rhs.sourceName).append(sequence, rhs.sequence).append(priority, rhs.priority).append(domain, rhs.domain).append(internalHeaderFields, rhs.internalHeaderFields).append(eventName, rhs.eventName).append(reportingEntityId, rhs.reportingEntityId).isEquals();
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/Event.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/Event.java
new file mode 100644 (file)
index 0000000..b83cf93
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.dcaegen2.ves.domain;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "commonEventHeader",
+    "faultFields",
+    "heartbeatFields"
+})
+public class Event {
+
+    @JsonProperty("commonEventHeader")
+    private CommonEventHeader commonEventHeader;
+    @JsonProperty("faultFields")
+    private FaultFields faultFields;
+    @JsonProperty("heartbeatFields")
+    private HeartbeatFields heartbeatFields;
+  
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("commonEventHeader")
+    public CommonEventHeader getCommonEventHeader() {
+        return commonEventHeader;
+    }
+
+    @JsonProperty("commonEventHeader")
+    public void setCommonEventHeader(CommonEventHeader commonEventHeader) {
+        this.commonEventHeader = commonEventHeader;
+    }
+
+    @JsonProperty("faultFields")
+    public FaultFields getFaultFields() {
+        return faultFields;
+    }
+
+    @JsonProperty("faultFields")
+    public void setFaultFields(FaultFields faultFields) {
+        this.faultFields = faultFields;
+    }
+
+    @JsonProperty("heartbeatFields")
+    public HeartbeatFields getHeartbeatFields() {
+        return heartbeatFields;
+    }
+
+    @JsonProperty("heartbeatFields")
+    public void setHeartbeatFields(HeartbeatFields heartbeatFields) {
+        this.heartbeatFields = heartbeatFields;
+    }
+
+  
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("commonEventHeader", commonEventHeader).append("faultFields", faultFields).append("heartbeatFields", heartbeatFields).toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(heartbeatFields).append(commonEventHeader).append(additionalProperties).append(faultFields).toHashCode();    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Event) == false) {
+            return false;
+        }
+        Event rhs = ((Event) other);
+        return new EqualsBuilder().append(heartbeatFields, rhs.heartbeatFields).append(commonEventHeader, rhs.commonEventHeader).append(additionalProperties, rhs.additionalProperties).append(faultFields, rhs.faultFields).isEquals();
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/FaultFields.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/FaultFields.java
new file mode 100644 (file)
index 0000000..d9d014c
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.dcaegen2.ves.domain;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "alarmCondition",
+    "eventSeverity",
+    "eventSourceType",
+    "faultFieldsVersion",
+    "specificProblem",
+    "vfStatus",
+    "alarmAdditionalInformation",
+    "alarmInterfaceA",
+    "eventCategory"
+})
+public class FaultFields {
+
+    @JsonProperty("alarmCondition")
+    private String alarmCondition;
+    @JsonProperty("eventSeverity")
+    private String eventSeverity;
+    @JsonProperty("eventSourceType")
+    private String eventSourceType;
+    @JsonProperty("faultFieldsVersion")
+    private Double faultFieldsVersion;
+    @JsonProperty("specificProblem")
+    private String specificProblem;
+    @JsonProperty("vfStatus")
+    private String vfStatus;
+    @JsonProperty("alarmAdditionalInformation")
+    private List<AlarmAdditionalInformation> alarmAdditionalInformation = null;
+    @JsonProperty("alarmInterfaceA")
+    private String alarmInterfaceA;
+    @JsonProperty("eventCategory")
+    private String eventCategory;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("alarmCondition")
+    public String getAlarmCondition() {
+        return alarmCondition;
+    }
+
+    @JsonProperty("alarmCondition")
+    public void setAlarmCondition(String alarmCondition) {
+        this.alarmCondition = alarmCondition;
+    }
+
+    @JsonProperty("eventSeverity")
+    public String getEventSeverity() {
+        return eventSeverity;
+    }
+
+    @JsonProperty("eventSeverity")
+    public void setEventSeverity(String eventSeverity) {
+        this.eventSeverity = eventSeverity;
+    }
+
+    @JsonProperty("eventSourceType")
+    public String getEventSourceType() {
+        return eventSourceType;
+    }
+
+    @JsonProperty("eventSourceType")
+    public void setEventSourceType(String eventSourceType) {
+        this.eventSourceType = eventSourceType;
+    }
+
+    @JsonProperty("faultFieldsVersion")
+    public Double getFaultFieldsVersion() {
+        return faultFieldsVersion;
+    }
+
+    @JsonProperty("faultFieldsVersion")
+    public void setFaultFieldsVersion(Double faultFieldsVersion) {
+        this.faultFieldsVersion = faultFieldsVersion;
+    }
+
+    @JsonProperty("specificProblem")
+    public String getSpecificProblem() {
+        return specificProblem;
+    }
+
+    @JsonProperty("specificProblem")
+    public void setSpecificProblem(String specificProblem) {
+        this.specificProblem = specificProblem;
+    }
+
+    @JsonProperty("vfStatus")
+    public String getVfStatus() {
+        return vfStatus;
+    }
+
+    @JsonProperty("vfStatus")
+    public void setVfStatus(String vfStatus) {
+        this.vfStatus = vfStatus;
+    }
+
+    @JsonProperty("alarmAdditionalInformation")
+    public List<AlarmAdditionalInformation> getAlarmAdditionalInformation() {
+        return alarmAdditionalInformation;
+    }
+
+    @JsonProperty("alarmAdditionalInformation")
+    public void setAlarmAdditionalInformation(List<AlarmAdditionalInformation> alarmAdditionalInformation) {
+        this.alarmAdditionalInformation = alarmAdditionalInformation;
+    }
+
+    @JsonProperty("alarmInterfaceA")
+    public String getAlarmInterfaceA() {
+        return alarmInterfaceA;
+    }
+
+    @JsonProperty("alarmInterfaceA")
+    public void setAlarmInterfaceA(String alarmInterfaceA) {
+        this.alarmInterfaceA = alarmInterfaceA;
+    }
+
+    @JsonProperty("eventCategory")
+    public String getEventCategory() {
+        return eventCategory;
+    }
+
+    @JsonProperty("eventCategory")
+    public void setEventCategory(String eventCategory) {
+        this.eventCategory = eventCategory;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("alarmCondition", alarmCondition).append("eventSeverity", eventSeverity).append("eventSourceType", eventSourceType).append("faultFieldsVersion", faultFieldsVersion).append("specificProblem", specificProblem).append("vfStatus", vfStatus).append("alarmAdditionalInformation", alarmAdditionalInformation).append("alarmInterfaceA", alarmInterfaceA).append("eventCategory", eventCategory).append("additionalProperties", additionalProperties).toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(eventSourceType).append(alarmAdditionalInformation).append(specificProblem).append(additionalProperties).append(alarmInterfaceA).append(alarmCondition).append(eventSeverity).append(faultFieldsVersion).append(eventCategory).append(vfStatus).toHashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof FaultFields) == false) {
+            return false;
+        }
+        FaultFields rhs = ((FaultFields) other);
+        return new EqualsBuilder().append(eventSourceType, rhs.eventSourceType).append(alarmAdditionalInformation, rhs.alarmAdditionalInformation).append(specificProblem, rhs.specificProblem).append(additionalProperties, rhs.additionalProperties).append(alarmInterfaceA, rhs.alarmInterfaceA).append(alarmCondition, rhs.alarmCondition).append(eventSeverity, rhs.eventSeverity).append(faultFieldsVersion, rhs.faultFieldsVersion).append(eventCategory, rhs.eventCategory).append(vfStatus, rhs.vfStatus).isEquals();
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/HeartbeatFields.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/HeartbeatFields.java
new file mode 100644 (file)
index 0000000..a73da4e
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.dcaegen2.ves.domain;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "heartbeatFieldsVersion",
+    "heartbeatInterval",
+    "additionalFields"
+})
+public class HeartbeatFields {
+
+    @JsonProperty("heartbeatFieldsVersion")
+    private Double heartbeatFieldsVersion;
+    @JsonProperty("heartbeatInterval")
+    private Long heartbeatInterval;
+    @JsonProperty("additionalFields")
+    private List<AdditionalField> additionalFields = null;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("heartbeatFieldsVersion")
+    public Double getHeartbeatFieldsVersion() {
+        return heartbeatFieldsVersion;
+    }
+
+    @JsonProperty("heartbeatFieldsVersion")
+    public void setHeartbeatFieldsVersion(Double heartbeatFieldsVersion) {
+        this.heartbeatFieldsVersion = heartbeatFieldsVersion;
+    }
+
+    @JsonProperty("heartbeatInterval")
+    public Long getHeartbeatInterval() {
+        return heartbeatInterval;
+    }
+
+    @JsonProperty("heartbeatInterval")
+    public void setHeartbeatInterval(Long heartbeatInterval) {
+        this.heartbeatInterval = heartbeatInterval;
+    }
+
+    @JsonProperty("additionalFields")
+    public List<AdditionalField> getAdditionalFields() {
+        return additionalFields;
+    }
+
+    @JsonProperty("additionalFields")
+    public void setAdditionalFields(List<AdditionalField> additionalFields) {
+        this.additionalFields = additionalFields;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("heartbeatFieldsVersion", heartbeatFieldsVersion).append("heartbeatInterval", heartbeatInterval).append("additionalFields", additionalFields).append("additionalProperties", additionalProperties).toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(heartbeatInterval).append(additionalProperties).append(heartbeatFieldsVersion).append(additionalFields).toHashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof HeartbeatFields) == false) {
+            return false;
+        }
+        HeartbeatFields rhs = ((HeartbeatFields) other);
+        return new EqualsBuilder().append(heartbeatInterval, rhs.heartbeatInterval).append(additionalProperties, rhs.additionalProperties).append(heartbeatFieldsVersion, rhs.heartbeatFieldsVersion).append(additionalFields, rhs.additionalFields).isEquals();
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/InternalHeaderFields.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/InternalHeaderFields.java
new file mode 100644 (file)
index 0000000..e504011
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.dcaegen2.ves.domain;
+
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+public class InternalHeaderFields {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("additionalProperties", additionalProperties).toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(additionalProperties).toHashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof InternalHeaderFields) == false) {
+            return false;
+        }
+        InternalHeaderFields rhs = ((InternalHeaderFields) other);
+        return new EqualsBuilder().append(additionalProperties, rhs.additionalProperties).isEquals();
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/VesEvent.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/VesEvent.java
new file mode 100644 (file)
index 0000000..4106943
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.dcaegen2.ves.domain;
+
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "event"
+})
+public class VesEvent {
+
+    @JsonProperty("event")
+    private Event event;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("event")
+    public Event getEvent() {
+        return event;
+    }
+
+    @JsonProperty("event")
+    public void setEvent(Event event) {
+        this.event = event;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+   
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/Application.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/Application.java
new file mode 100644 (file)
index 0000000..4db5e28
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+
+    public static void main(String[] args) {
+        SpringApplication.run(Application.class, args);
+    }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/GenericAdapter.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/GenericAdapter.java
new file mode 100644 (file)
index 0000000..fa3b89c
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.adapter;
+
+import org.onap.universalvesadapter.exception.ConfigFileReadException;
+import org.onap.universalvesadapter.exception.ConfigFileSmooksConversionException;
+import org.onap.universalvesadapter.exception.VesException;
+
+/**
+ * This interface defines contract for adapter to convert an incoming json
+ * to VES format
+ * 
+ * @author kmalbari
+ *
+ */
+public interface GenericAdapter {
+
+//     String transform(String incomingJsonString) throws ConfigFileReadException;
+
+       /**
+        * It will take in an incoming json and identify the json type for different 
+        * events. Based on the event type it will retrieve the corresponding config
+        * file and convert the json to VES format using mappings in the config file. 
+        * 
+        * @param incomingJsonString json that is received on DMaap topic
+        * @param eventType type identified from incoming json
+        * @return VES format json
+        * @throws ConfigFileReadException if unable to read the configuration file
+        * @throws ConfigFileSmooksConversionException if unable to convert config file data to smooks object 
+        * @throws VesException if unable to convert into ves json
+        */
+       String transform(String incomingJsonString, String eventType) throws ConfigFileReadException, ConfigFileSmooksConversionException, VesException;
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/UniversalEventAdapter.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/UniversalEventAdapter.java
new file mode 100644 (file)
index 0000000..318c8cd
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.adapter;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
+
+import org.milyn.Smooks;
+import org.onap.dcaegen2.ves.domain.VesEvent;
+import org.onap.universalvesadapter.configs.UniversalEventConfiguration;
+import org.onap.universalvesadapter.exception.ConfigFileReadException;
+import org.onap.universalvesadapter.exception.ConfigFileSmooksConversionException;
+import org.onap.universalvesadapter.exception.VesException;
+import org.onap.universalvesadapter.service.ConfigFileService;
+import org.onap.universalvesadapter.utils.SmooksUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.xml.sax.SAXException;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * Default implementation of the Generic Adapter
+ * 
+ * @author kmalbari
+ *
+ */
+@Component
+public class UniversalEventAdapter implements GenericAdapter{
+       
+       private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
+       
+       @Autowired
+       private UniversalEventConfiguration configuration;
+       
+       @Resource(name="diskRepoConfigFileService")
+       private ConfigFileService configFileService;
+       
+//     private Smooks smooks;
+       
+       private Map<String, Smooks> eventToSmooksMapping = new ConcurrentHashMap<>();
+
+       /*public String transform(String incomingJsonString) throws ConfigFileReadException {
+               String result = "";
+               try {
+               //reading config file.. for now, looking at it as just one time operation
+                       if(null == smooks){
+                               String configFileData = configFileService.readConfigFile(configuration.getConfigFile());
+                               smooks = new Smooks(new ByteArrayInputStream(configFileData.getBytes(StandardCharsets.UTF_8)));
+                       }
+               
+                       VesEvent vesEvent = SmooksUtils.getTransformedObjectForInput(smooks, incomingJsonString);
+                       ObjectMapper objectMapper = new ObjectMapper();
+                       result = objectMapper.writeValueAsString(vesEvent); 
+               } catch (IOException | SAXException e) {
+                       e.printStackTrace();
+               }
+               
+               return result;
+       }*/
+       
+
+
+       @Override
+       public String transform(String incomingJsonString, String eventType) throws ConfigFileReadException, 
+                                                                       ConfigFileSmooksConversionException, VesException {
+               String result = "";
+               try {
+                       if(null == eventToSmooksMapping.get(eventType)){
+                               LOGGER.debug("No smooks mapping for this event type " + eventType + ".. reading config file");
+                               String configFileData = configFileService.readConfigFile(configuration.getConfigForEvent(eventType));
+                               LOGGER.debug("Read config file " + configFileData);
+                               Smooks smooksTemp = new Smooks(new ByteArrayInputStream(configFileData.getBytes(StandardCharsets.UTF_8)));
+                               eventToSmooksMapping.put(eventType, smooksTemp);
+                               LOGGER.debug("Added smooks mapping for event type" + eventType);
+                       }
+               
+                       
+                       LOGGER.debug("Read smooks mapping for event type" + eventType);
+                       LOGGER.debug("Transforming incoming json now");
+                       VesEvent vesEvent = SmooksUtils.getTransformedObjectForInput(eventToSmooksMapping.get(eventType), incomingJsonString);
+                       LOGGER.debug("Incoming json transformed to VES format successfully");
+                       ObjectMapper objectMapper = new ObjectMapper();
+                       result = objectMapper.writeValueAsString(vesEvent); 
+                       LOGGER.debug("Serialized VES json");
+               } catch (JsonProcessingException exception) {
+                       throw new VesException("Unable to convert pojo to VES format" + "\n Reason :" + exception.getMessage());
+               } catch (SAXException | IOException exception) {
+                       throw new ConfigFileSmooksConversionException("Unable to convert config file into smooks for event type " + eventType 
+                                       + "\n Reason :" + exception.getMessage());
+               }
+               return result;
+       }
+       
+       
+       /**
+        * Closes all open smooks' instances before bean is destroyed
+        */
+       @PreDestroy
+       public void destroy(){
+//             if(null != smooks)
+//                     smooks.close();
+               
+               for(Smooks smooks : eventToSmooksMapping.values())
+                       smooks.close();
+               
+               LOGGER.debug("All Smooks objects closed");
+       }       
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/Configuration.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/Configuration.java
new file mode 100644 (file)
index 0000000..e47af70
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.configs;
+
+public abstract class Configuration {
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaapMrUrlConfiguration.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaapMrUrlConfiguration.java
new file mode 100644 (file)
index 0000000..2b9a820
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.configs;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * Configuration for Dmaap MR Service
+ * 
+ * @author kmalbari
+ *
+ */
+@Component
+public class DMaapMrUrlConfiguration extends Configuration {
+       
+       @Value("${dmaap.url}")
+       private String url;
+       
+       @Value("${dmaap.consumer_props}")
+       private String consumerProperties;
+
+       @Value("${dmaap.publisher_props}")
+       private String publisherProperties;
+
+       public String getPublisherProperties() {
+               return publisherProperties;
+       }
+
+       public String getConsumerProperties() {
+               return consumerProperties;
+       }
+
+       public String getUrl() {
+               return url;
+       }
+       
+       
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DiskRepoConfiguration.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DiskRepoConfiguration.java
new file mode 100644 (file)
index 0000000..b1daf0d
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.configs;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * 
+ * Configuration for disk repository service
+ * 
+ * @author kmalbari
+ *
+ */
+@Component
+public class DiskRepoConfiguration extends Configuration {
+
+       @Value("${fileService.url}")
+       private String fileRepositoryUrl;
+
+       public String getFileRepositoryUrl() {
+               return fileRepositoryUrl;
+       }       
+       
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/UniversalEventConfiguration.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/UniversalEventConfiguration.java
new file mode 100644 (file)
index 0000000..3edca56
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.configs;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * Configuration for universal adapter service 
+ * 
+ * @author kmalbari
+ *
+ */
+@Component
+public class UniversalEventConfiguration extends Configuration {
+
+       private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
+       
+       @Value("${snmpTrap.configFile}")
+       private String configFile;
+
+       @Value("${universal.configFiles}")
+       private String configFiles;
+
+       private Map<String, String> eventToConfigFileMap = new ConcurrentHashMap<>();
+       
+       
+       /**
+        * Returns config file for a particular event from the mapping. 
+        * If mapping is empty, populates its
+        * 
+        * @param eventType 
+        * 
+        * @return config file name
+        */
+       public String getConfigForEvent(String eventType){
+               LOGGER.debug("Getting config file name for event:" + eventType);
+               if(null != configFiles && eventToConfigFileMap.isEmpty()){
+                       for(String entry : configFiles.split(",")){
+                               eventToConfigFileMap.put(entry.split(":")[0], entry.split(":")[1]);
+                       }
+                       LOGGER.debug("Populated mappings for event type to config files");
+               }
+               
+               return (null == eventToConfigFileMap.get(eventType)) ? "default" : eventToConfigFileMap.get(eventType) ;
+               
+       }
+       
+       
+       //think about adding mapping files on runtime as well
+       
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/MockDmaapController.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/MockDmaapController.java
new file mode 100644 (file)
index 0000000..e844270
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+public class MockDmaapController {
+
+    @RequestMapping("/greeting")
+    public String greeting(@RequestParam(value="name", defaultValue="World") String name) {
+//        return new Greeting(counter.incrementAndGet(),
+//                            String.format(template, name));
+       return "{     \"protocol version\": \"v2c\",     \"notify OID\": \".1.3.6.1.4.1.74.2.46.12.1.1\",     \"cambria.partition\": \"dcae-snmp.client.research.att.com\" ,     \"trap category\": \"UCSNMP-HEARTBEAT\",      \"epoch_serno\": 15161177410000,     \"community\" : \"public\",     \"time received\": 1516117741,     \"agent name\": \"localhost\",     \"agent address\": \"127.0.0.1\",      \"community len\": 6,         \"notify OID len\": 12,             \"varbinds\": [             {                 \"varbind_type\": \"octet\",                 \"varbind_oid\": \".1.3.6.1.4.1.74.2.46.12.1.1.1\",                 \"varbind_value\": \"ucsnmp heartbeat - ignore\"             },             {                 \"varbind_type\": \"octet\",                 \"varbind_oid\": \".1.3.6.1.4.1.74.2.46.12.1.1.2\",                 \"varbind_value\": \"Tue Jan 16 10:49:01 EST 2018\"             }         ]       }";
+    }
+    
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/VesController.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/VesController.java
new file mode 100644 (file)
index 0000000..588c912
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.controller;
+
+import org.onap.universalvesadapter.service.VesService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * This controller will be starting point for this micro service. On triggering, it will listen to Dmaap topic for events.
+ * 
+ * @author kmalbari
+ */
+@RestController
+public class VesController {
+
+       private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
+       
+    @Autowired
+    private VesService vesService;
+    
+    /**
+     * @return message that application is started
+     */
+    @RequestMapping("/start")
+    public String start() {
+       
+       LOGGER.debug("UniversalVesAdapter Application starting...");
+       vesService.start();
+        return "Application started";
+    }
+    
+    /**
+     * @return message that application stop process is triggered
+     */
+    @RequestMapping("/stop")
+    public String stop() {
+       
+       vesService.stop();
+       LOGGER.debug("UniversalVesAdapter Application is stopping...");
+       return "Application will be stopped soon";
+    }    
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/ConfigFileData.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/ConfigFileData.java
new file mode 100644 (file)
index 0000000..796fe70
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+import org.springframework.data.annotation.Id;
+
+/**
+ * A domain wrapper class for saving the config file in Mongo DB 
+ * 
+ * @author kmalbari
+ *
+ */
+public class ConfigFileData {
+       
+       
+       @Id private String id;
+
+       private String xmlFileName;
+       
+       private String xmlContent;
+
+       public String getXmlFileName() {
+               return xmlFileName;
+       }
+
+       public void setXmlFileName(String xmlFileName) {
+               this.xmlFileName = xmlFileName;
+       }
+
+       public String getXmlContent() {
+               return xmlContent;
+       }
+
+       public void setXmlContent(String xmlContent) {
+               this.xmlContent = xmlContent;
+       }
+       
+       
+       
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Domains.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Domains.java
new file mode 100644 (file)
index 0000000..55812c4
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum Domains {
+
+       DOMAIN_FAULT("fault"),
+       /** A Fault event. */
+       DOMAIN_HEARTBEAT("heartbeat"),
+       /** A Heartbeat event (event header only). */
+       DOMAIN_MEASUREMENT_FOR_VFSCALLING("measurementsForVfScaling"),
+       /** A Measurement for VF Scaling event. */
+       DOMAIN_MOBILE_FLOW("mobileFlow"),
+       /** A Mobile Flow event. */
+       DOMAIN_OTHER("other"),
+       /** Another event. */
+       DOMAIN_SIPSIGNALING("sipSignaling"),
+       /** A Signaling event. */
+       DOMAIN_STATE_CHANGE("stateChange"),
+       /** A State Change event. */
+       DOMAIN_SYSLOG("syslog"),
+       /** A Syslog event. */
+       DOMAIN_THRESHOLD_CROSSING_ALERT("thresholdCrossingAlert"),
+       /** A Threshold crossing alert Event */
+       DOMAIN_VOICE_QUALITY("voiceQuality");
+       /** A Voice Quality Event                     */
+    
+       private final String value;
+
+       private Domains(final String value) {
+      this.value = value;
+       }
+
+       public String getValue() {
+               return value;
+       }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Priorities.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Priorities.java
new file mode 100644 (file)
index 0000000..6b3ddfd
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum Priorities {
+       HIGH("High"), MEDIUM("Medium"), NORMAL("Normal"), LOW("Low");
+       
+       private final String value;
+
+       private Priorities(final String value) {
+               this.value = value;
+       }
+
+       public String getValue() {
+               return value;
+       }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Severity.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Severity.java
new file mode 100644 (file)
index 0000000..1e200f5
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum Severity {
+         SEVERITY_CRITICAL("CRITICAL"),
+         SEVERITY_MAJOR("MAJOR"),
+         SEVERITY_MINOR("MINOR"),
+         SEVERITY_WARNING("WARNING"),
+         SEVERITY_NORMAL("NORMAL");
+         
+         private final String value;
+
+           private Severity(final String value) {
+               this.value = value;
+           }
+
+           public String getValue() { return value; }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/State.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/State.java
new file mode 100644 (file)
index 0000000..b6b8851
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum State {
+       STATE_IN_SERVICE("inService"), STATE_MAINTENANCE("maintenance"), STATE_OUT_OF_SERVICE("outOfService");
+       private final String value;
+
+       private State(final String value) {
+               this.value = value;
+       }
+
+       public String getValue() {
+               return value;
+       }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/SysLogSeverity.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/SysLogSeverity.java
new file mode 100644 (file)
index 0000000..5cee6ad
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum SysLogSeverity {
+
+       SEVERITY_EMERGENCY("Emergency"),
+       /** system is unusable */
+       SEVERITY_ALERT("Alert"),
+       /** action must be taken immediately */
+       SEVERITY_CRITICAL("Critical"),
+       /** critical conditions */
+       SEVERITY_ERROR("Error"),
+       /** error conditions */
+       SEVERITY_WARNING("Warning"),
+       /** warning conditions */
+       SEVERITY_NOTICE("Notice"),
+       /** normal but significant condition */
+       SEVERITY_INFO("Info"),
+       /** Informational: informational messages */
+       SEVERITY_DEBUG("Debug");
+       /** debug-level messages */
+       
+       private final String value;
+
+       private SysLogSeverity(final String value) {
+               this.value = value;
+       }
+
+       public String getValue() {
+               return value;
+       }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertAction.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertAction.java
new file mode 100644 (file)
index 0000000..928698f
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum TcaAlertAction {
+       SET("SET"), CONTINUE("CONT"), CLEAR("CLEAR");
+       private final String value;
+
+       private TcaAlertAction(final String value) {
+               this.value = value;
+       }
+
+       public String getValue() {
+               return value;
+       }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertType.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertType.java
new file mode 100644 (file)
index 0000000..5130378
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum TcaAlertType {
+       CARD_ANOMALY("CARD-ANOMALY"), INTERFACE_ANOMALY("INTERFACE_ANOMALY"), ELEMENT_ANOMALY(
+                       "ELEMENT-ANOMALY"), SERVICE_ANOMALY("SERVICE-ANOMALY");
+       private final String value;
+
+       private TcaAlertType(final String value) {
+               this.value = value;
+       }
+
+       public String getValue() {
+               return value;
+       }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaCounterCriticality.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaCounterCriticality.java
new file mode 100644 (file)
index 0000000..9f8e126
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum TcaCounterCriticality {
+       CRITICAL("CRIT"), MAJOR("MAJ");
+       private final String value;
+
+       private TcaCounterCriticality(final String value) {
+               this.value = value;
+       }
+
+       public String getValue() {
+               return value;
+       }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaEventSeverity.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaEventSeverity.java
new file mode 100644 (file)
index 0000000..6e73fa2
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum TcaEventSeverity {
+       SEVERITY_CRITICAL("CRITICAL"), SEVERITY_MAJOR("MAJOR"), SEVERITY_MINOR("MINOR"), SEVERITY_WARNING(
+                       "WARNING"), SEVERITY_NORMAL("NORMAL");
+
+       private final String value;
+
+       private TcaEventSeverity(final String value) {
+               this.value = value;
+       }
+
+       public String getValue() {
+               return value;
+       }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/VnfStatus.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/VnfStatus.java
new file mode 100644 (file)
index 0000000..828c71e
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.domain;
+
+public enum VnfStatus {
+       
+         VFSTATUS_ACTIVE("Active"),
+         VFSTATUS_IDLE("Idle"),
+         VFSTATUS_PREP_TERMINATE("Preparing to terminate"),
+         VFSTATUS_READY_TERMINATE("Ready to terminate"),
+         VFSTATUS_REQ_TERMINATE("Requesting Termination");
+       
+         private final String value;
+
+           private VnfStatus(final String value) {
+               this.value = value;
+           }
+
+           public String getValue() { return value; }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileReadException.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileReadException.java
new file mode 100644 (file)
index 0000000..3a64247
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.exception;
+
+/**
+ * Exception when unable to connect to Config file Disk repository
+ * 
+ * @author kmalbari
+ *
+ */
+public class ConfigFileReadException extends Exception {
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = 414953072485703000L;
+
+       public ConfigFileReadException(String exceptionMessage) {
+               super(exceptionMessage);
+       }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileSmooksConversionException.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileSmooksConversionException.java
new file mode 100644 (file)
index 0000000..1daa939
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.exception;
+
+/**
+ * 
+ * Exception thrown when config file data is unable to be parsed correctly in Smooks configuration
+ * 
+ * @author kmalbari
+ *
+ */
+public class ConfigFileSmooksConversionException extends Exception {
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = 7128340575013771888L;      
+       
+       public ConfigFileSmooksConversionException(String string) {
+               super(string);
+       }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/DMaapException.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/DMaapException.java
new file mode 100644 (file)
index 0000000..5af0205
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.exception;
+
+/**
+ * Exception generated when dealing with communication to DMaap MR API
+ * 
+ * @author kmalbari
+ *
+ */
+public class DMaapException extends Exception {
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = 7045766597511192878L;
+
+       public DMaapException(String string) {
+               super(string);
+       }
+
+       
+       
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/MapperConfigException.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/MapperConfigException.java
new file mode 100644 (file)
index 0000000..a8414d8
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.exception;
+
+import java.io.IOException;
+
+/**
+ * Exception thrown during mapping config operations 
+ * 
+ * @author kmalbari
+ *
+ */
+public class MapperConfigException extends Exception {
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = -7876042513908918292L;
+
+       public MapperConfigException(String string) {
+               // TODO Auto-generated constructor stub
+       }
+
+       public MapperConfigException(String string, IOException exception) {
+               // TODO Auto-generated constructor stub
+       }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/VesException.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/VesException.java
new file mode 100644 (file)
index 0000000..31134c8
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.exception;
+
+/**
+ * 
+ * Exception thrown when VES Event was not generated correctly 
+ * 
+ * @author kmalbari
+ *
+ */
+public class VesException extends Exception {
+
+
+       /**
+        * 
+        */
+       private static final long serialVersionUID = -8549819066568432382L;
+
+       public VesException(String string) {
+               super(string);
+       }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Entry.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Entry.java
new file mode 100644 (file)
index 0000000..54a77a0
--- /dev/null
@@ -0,0 +1,114 @@
+
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.mappingconfig;
+
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "priority",
+    "evaluation",
+    "result"
+})
+public class Entry {
+
+    @JsonProperty("priority")
+    private Integer priority;
+    @JsonProperty("evaluation")
+    private Evaluation evaluation;
+    @JsonProperty("result")
+    private String result;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("priority")
+    public Integer getPriority() {
+        return priority;
+    }
+
+    @JsonProperty("priority")
+    public void setPriority(Integer priority) {
+        this.priority = priority;
+    }
+
+    @JsonProperty("evaluation")
+    public Evaluation getEvaluation() {
+        return evaluation;
+    }
+
+    @JsonProperty("evaluation")
+    public void setEvaluation(Evaluation evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    @JsonProperty("result")
+    public String getResult() {
+        return result;
+    }
+
+    @JsonProperty("result")
+    public void setResult(String result) {
+        this.result = result;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("priority", priority).append("evaluation", evaluation).append("result", result).append("additionalProperties", additionalProperties).toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(result).append(additionalProperties).append(priority).append(evaluation).toHashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Entry) == false) {
+            return false;
+        }
+        Entry rhs = ((Entry) other);
+        return new EqualsBuilder().append(result, rhs.result).append(additionalProperties, rhs.additionalProperties).append(priority, rhs.priority).append(evaluation, rhs.evaluation).isEquals();
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Evaluation.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Evaluation.java
new file mode 100644 (file)
index 0000000..e34b98a
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.mappingconfig;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "operand",
+    "field",
+    "value",
+    "datatype",
+    "lhs",
+    "rhs"
+})
+public class Evaluation {
+
+
+       @JsonProperty("operand")
+    private String operand;
+    @JsonProperty("field")
+    private String field;
+    @JsonProperty("value")
+    private String value;
+    @JsonProperty("datatype")
+    private String datatype;
+    @JsonProperty("lhs")
+    private Evaluation lhs;
+    @JsonProperty("rhs")
+    private Evaluation rhs;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("operand")
+    public String getOperand() {
+        return operand;
+    }
+
+    @JsonProperty("operand")
+    public void setOperand(String operand) {
+        this.operand = operand;
+    }
+
+    @JsonProperty("field")
+    public String getField() {
+        return field;
+    }
+
+    @JsonProperty("field")
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    @JsonProperty("value")
+    public String getValue() {
+        return value;
+    }
+
+    @JsonProperty("value")
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @JsonProperty("datatype")
+    public String getDatatype() {
+        return datatype;
+    }
+
+    @JsonProperty("datatype")
+    public void setDatatype(String datatype) {
+        this.datatype = datatype;
+    }
+
+    @JsonProperty("lhs")
+    public Evaluation getLhs() {
+        return lhs;
+    }
+
+    @JsonProperty("lhs")
+    public void setLhs(Evaluation lhs) {
+        this.lhs = lhs;
+    }
+
+    @JsonProperty("rhs")
+    public Evaluation getRhs() {
+        return rhs;
+    }
+
+    @JsonProperty("rhs")
+    public void setRhs(Evaluation rhs) {
+        this.rhs = rhs;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("operand", operand).append("field", field).append("value", value).append("datatype", datatype).append("lhs", lhs).append("rhs", rhs).append("additionalProperties", additionalProperties).toString();
+    }
+    /* 
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(field).append(additionalProperties).append(value).append(rhs).append(datatype).append(operand).append(lhs).toHashCode();
+    }
+
+   @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Evaluation) == false) {
+            return false;
+        }
+        Evaluation rhs = ((Evaluation) other);
+        return new EqualsBuilder().append(field, rhs.field).append(additionalProperties, rhs.additionalProperties).append(value, rhs.value).append(rhs, rhs.rhs).append(datatype, rhs.datatype).append(operand, rhs.operand).append(lhs, rhs.lhs).isEquals();
+    }
+*/
+    
+    @Override
+       public int hashCode() {
+               final int prime = 31;
+               int result = 1;
+               result = prime * result + ((datatype == null) ? 0 : datatype.hashCode());
+               result = prime * result + ((field == null) ? 0 : field.hashCode());
+               result = prime * result + ((lhs == null) ? 0 : lhs.hashCode());
+               result = prime * result + ((operand == null) ? 0 : operand.hashCode());
+               result = prime * result + ((rhs == null) ? 0 : rhs.hashCode());
+               result = prime * result + ((value == null) ? 0 : value.hashCode());
+               return result;
+       }
+
+       @Override
+       public boolean equals(Object obj) {
+               if (this == obj)
+                       return true;
+               if (obj == null)
+                       return false;
+               if (getClass() != obj.getClass())
+                       return false;
+               Evaluation other = (Evaluation) obj;
+               if (datatype == null) {
+                       if (other.datatype != null)
+                               return false;
+               } else if (!datatype.equals(other.datatype))
+                       return false;
+               if (field == null) {
+                       if (other.field != null)
+                               return false;
+               } else if (!field.equals(other.field))
+                       return false;
+               if (lhs == null) {
+                       if (other.lhs != null)
+                               return false;
+               } else if (!lhs.equals(other.lhs))
+                       return false;
+               if (operand == null) {
+                       if (other.operand != null)
+                               return false;
+               } else if (!operand.equals(other.operand))
+                       return false;
+               if (rhs == null) {
+                       if (other.rhs != null)
+                               return false;
+               } else if (!rhs.equals(other.rhs))
+                       return false;
+               if (value == null) {
+                       if (other.value != null)
+                               return false;
+               } else if (!value.equals(other.value))
+                       return false;
+               return true;
+       }
+    
+    
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/MapperConfig.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/MapperConfig.java
new file mode 100644 (file)
index 0000000..6055e86
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.mappingconfig;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "entries"
+})
+public class MapperConfig {
+
+    @JsonProperty("entries")
+    private Set<Entry> entries = null;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new HashMap<String, Object>();
+
+    @JsonProperty("entries")
+    public Set<Entry> getEntries() {
+        return entries;
+    }
+
+    @JsonProperty("entries")
+    public void setEntries(Set<Entry> entries) {
+        this.entries = entries;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("entries", entries).append("additionalProperties", additionalProperties).toString();
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder().append(additionalProperties).append(entries).toHashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof MapperConfig) == false) {
+            return false;
+        }
+        MapperConfig rhs = ((MapperConfig) other);
+        return new EqualsBuilder().append(additionalProperties, rhs.additionalProperties).append(entries, rhs.entries).isEquals();
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/AdapterService.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/AdapterService.java
new file mode 100644 (file)
index 0000000..14c5a83
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+
+package  org.onap.universalvesadapter.service;
+
+//import org.onap.universalvesadapter.adapter.GenericAdapter;
+//import org.onap.universalvesadapter.adapter.UniversalEventAdapter;
+//import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * This service is written to identify the different type of events 
+ * 
+ * @author kmalbari
+ *
+ */
+@Component
+public class AdapterService {
+
+    /*@Autowired
+    private UniversalEventAdapter snmpTrapEventAdapter;
+    public GenericAdapter identifyIncomingJsonFormatAndReturnAdapter() {
+        return snmpTrapEventAdapter;
+    }*/
+
+
+    /**
+     * Identifies eventype by parsing the incoming json file.
+     * 
+     * @param incomingJsonString
+     * 
+     * @return the event type
+     */
+    public String identifyEventTypeFromIncomingJson(String incomingJsonString) {
+        
+        //TODO A proper logic to identify diffeent events is needed here
+        return "snmp";
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/ConfigFileService.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/ConfigFileService.java
new file mode 100644 (file)
index 0000000..09e2592
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.service;
+
+import org.onap.universalvesadapter.exception.ConfigFileReadException;
+
+/**
+ * A contract defined for services that will handle the operations of config file 
+ * 
+ * @author kmalbari
+ *
+ */
+public interface ConfigFileService {
+       
+       /**
+        * Returns the config file data
+        * 
+        * @param fileName 
+        * @return config file content
+        * @throws ConfigFileReadException if unable to read config file
+        */
+       String readConfigFile(String fileName) throws ConfigFileReadException;
+       
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DMaapService.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DMaapService.java
new file mode 100644 (file)
index 0000000..0b318eb
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.service;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.List;
+import java.util.Map;
+import org.onap.universalvesadapter.configs.DMaapMrUrlConfiguration;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+//import com.att.nsa.mr.client.MRBatchingPublisher;
+//import com.att.nsa.mr.client.MRClientFactory;
+//import com.att.nsa.mr.client.MRConsumer;
+
+/**
+ * 
+ * This service will handle all the communication with the DMaap MR API
+ * 
+ * 
+ * @author kmalbari
+ *
+ */
+@Component
+public class DMaapService {
+
+    @Autowired
+    private DMaapMrUrlConfiguration dmaapMrUrlObject;
+       
+//    private MRConsumer cc; 
+//
+//    private MRBatchingPublisher pub;
+    
+    /**
+     * reads the messages on DMaap MR Topic
+     * 
+     * @return iterable of messages that will be received on DMaap MR Topic
+     * 
+     * @throws DMaapException 
+     */
+    /*public Iterable<String> consumeFromDMaap() throws DMaapException{
+       if(null == cc){
+               try {
+                       cc = MRClientFactory.createConsumer (dmaapMrUrlObject.getConsumerProperties());
+               } catch (IOException exception) {
+                       throw new DMaapException("Problem creating consumer \nReason : " + exception.getMessage());
+               }
+               
+               try {
+                               return cc.fetch();
+                       } catch (Exception exception) {
+                               throw new DMaapException("Problem while fetching messaged from consumer \nReason : " + exception.getMessage());
+                       }
+       }
+               return () -> Collections.emptyIterator();
+       
+    }*/
+    
+    
+    /**
+     * sends the messages to DMaap MR Topic
+     * 
+     * 
+     * @throws DMaapException 
+     */
+    /*public void publishToDMaap() throws DMaapException{
+       if(null == cc){
+               try {
+                        pub = MRClientFactory.createBatchingPublisher (dmaapMrUrlObject.getPublisherProperties());
+               } catch (IOException exception) {
+                       throw new DMaapException("Problem creating consumer \nReason : " + exception.getMessage());
+               }
+               
+       }
+       
+    }*/
+    
+    
+    
+    
+       /**
+        * @return
+        */
+       public String consume(){
+               URL url;
+               StringBuffer incomingJson = null;
+               incomingJson = new StringBuffer(); 
+               try {
+                       url = new URL(dmaapMrUrlObject.getUrl());
+        
+               //open the connection to the above URL.
+               URLConnection urlcon = url.openConnection();
+               
+               Map<String, List<String>> header = urlcon.getHeaderFields();
+               
+               //print all the fields along with their value.
+               for (Map.Entry<String, List<String>> mp : header.entrySet()) 
+               {
+                   System.out.print(mp.getKey() + " : ");
+                   System.out.println(mp.getValue().toString());
+               }
+               System.out.println();
+               System.out.println("Complete source code of the URL is-");
+               System.out.println("---------------------------------");
+                
+               //get the inputstream of the open connection.
+               BufferedReader br = new BufferedReader(new InputStreamReader
+                                                   (urlcon.getInputStream()));
+               String tempString;
+               //print the source code line by line.
+               while ((tempString = br.readLine()) != null) 
+               {
+                   System.out.println(tempString);
+                   incomingJson.append(tempString);
+               }
+       
+               } catch (MalformedURLException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+               return incomingJson.toString();
+       }
+       
+       
+       
+       
+       
+       
+       
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DiskRepoConfigFileService.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DiskRepoConfigFileService.java
new file mode 100644 (file)
index 0000000..c2a30f0
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.service;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.onap.universalvesadapter.configs.DiskRepoConfiguration;
+import org.onap.universalvesadapter.exception.ConfigFileReadException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * Implementation of {@code ConfigFileService} using disk repository
+ * 
+ * @author kmalbari
+ *
+ */
+@Component
+public class DiskRepoConfigFileService implements ConfigFileService {
+
+       private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); 
+       
+       @Autowired
+       private DiskRepoConfiguration diskRepoConfiguration;
+       
+       private RestTemplate restTemplate = new RestTemplate();
+       
+       private URI uri = null;
+
+       /* (non-Javadoc)
+        * @see org.onap.universalvesadapter.service.ConfigFileService#readConfigFile(java.lang.String)
+        */
+       @Override
+       public String readConfigFile(String fileName) throws ConfigFileReadException {
+               LOGGER.debug("Reading config file for " + fileName);
+               if(null == uri){
+                       try {
+                               uri = new URI(diskRepoConfiguration.getFileRepositoryUrl()+fileName);
+                               LOGGER.debug("Read URI for " + fileName);
+                       } catch (URISyntaxException exception) {
+                               throw new ConfigFileReadException("Unable to read config file for file "
+                       + fileName + "\n Reason : " + exception.getMessage());
+                       }
+               }
+               LOGGER.debug("Calling file repo service for URI" + uri);
+               ResponseEntity<String> fileDataEntity = restTemplate.getForEntity(uri, String.class);
+               LOGGER.debug("Call completed successfully");
+               return fileDataEntity.getBody();
+       }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/MongoDbConfigFileService.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/MongoDbConfigFileService.java
new file mode 100644 (file)
index 0000000..bab304a
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.service;
+
+import org.onap.universalvesadapter.domain.ConfigFileData;
+import org.springframework.stereotype.Component;
+
+/**
+ * Service to use mongo db as config file repository
+ * 
+ * @author kmalbari
+ *
+ */
+@Component
+public class MongoDbConfigFileService implements ConfigFileService {
+
+       /* (non-Javadoc)
+        * @see org.onap.universalvesadapter.service.ConfigFileService#readConfigFile(java.lang.String)
+        */
+       public String readConfigFile(String configFileName){
+               //HERE CONFIG FILE DATA WOULD COME FROM MONGO DB
+               ConfigFileData configFileData = new ConfigFileData();
+               configFileData.setXmlFileName("");
+               configFileData.setXmlContent("<?xml version=\"1.0\" encoding=\"UTF-8\"?> <smooks-resource-list   xmlns=\"http://www.milyn.org/xsd/smooks-1.1.xsd\"       xmlns:json=\"http://www.milyn.org/xsd/smooks/json-1.1.xsd\"     xmlns:jb=\"http://www.milyn.org/xsd/smooks/javabean-1.2.xsd\">     <json:reader rootName=\"simple\"  keyWhitspaceReplacement=\"-\">    </json:reader>     <!-- <jb:bean class=\"com.example.demo.Simple\" beanId=\"simple\" createOnElement=\"simple\">        <jb:value property=\"orderId\" data=\"#/orderId\" />            <jb:value property=\"username\" data=\"#/username\" />          <jb:wiring property=\"customer\" beanIdRef=\"customer\"/>       <jb:wiring property=\"orderItems\" beanIdRef=\"orderItems\"/>                </jb:bean> -->         <jb:bean class=\"org.onap.dcaegen2.ves.domain.VesEvent\" beanId=\"vesEvent\" createOnElement=\"simple\">            <jb:wiring property=\"event\" beanIdRef=\"event\"/>     </jb:bean>       <jb:bean class=\"org.onap.dcaegen2.ves.domain.Event\" beanId=\"event\" createOnElement=\"simple\">             <jb:wiring property=\"commonEventHeader\" beanIdRef=\"commonEventHeader\"/>             <jb:wiring property=\"faultFields\" beanIdRef=\"faultFields\"/>                 <jb:wiring property=\"measurementsForVfScalingFields\" beanIdRef=\"measurementsForVfScalingFields\"/>                </jb:bean>       <jb:bean class=\"org.onap.dcaegen2.ves.domain.MeasurementsForVfScalingFields\" beanId=\"measurementsForVfScalingFields\" createOnElement=\"simple\">      <jb:wiring property=\"additionalMeasurements\" beanIdRef=\"additionalMeasurements\"/>     </jb:bean>         <jb:bean class=\"org.onap.dcaegen2.ves.domain.CommonEventHeader\" beanId=\"commonEventHeader\" createOnElement=\"simple\">         <jb:value property=\"eventId\" data=\"#/community\" />          <jb:value property=\"eventName\" data=\"#/protocol-version\" />                 <jb:value property=\"domain\" data=\"#/trap-category\" />       <jb:value property=\"sequence\" data=\"#/time-received\" decoder=\"Long\"/>             <jb:value property=\"lastEpochMicrosec\" data=\"#/community-len\"  decoder=\"Double\" />        <jb:value property=\"startEpochMicrosec\" data=\"#/notify-OID-len\"   />     </jb:bean>           <jb:bean class=\"org.onap.dcaegen2.ves.domain.FaultFields\" beanId=\"faultFields\" createOnElement=\"simple\">        <jb:value property=\"alarmCondition\" data=\"#/cambria.partition\" />           <jb:value property=\"eventSeverity\" data=\"#/notify-OID\" />           <jb:value property=\"eventSourceType\" data=\"#/agent-name\" />         <jb:value property=\"specificProblem\" data=\"#/agent-address\" />              <jb:value property=\"faultFieldsVersion\" data=\"#/epoch_serno\" decoder=\"Double\" />     </jb:bean>                   <jb:bean class=\"java.util.ArrayList\" beanId=\"additionalMeasurements\" createOnElement=\"simple\">            <jb:wiring beanIdRef=\"additionalMeasurement\"/>     </jb:bean>            <jb:bean class=\"org.onap.dcaegen2.ves.domain.AdditionalMeasurement\" beanId=\"additionalMeasurement\" createOnElement=\"varbinds/element\">         <jb:value property=\"name\" data=\"#/varbind_value\" />     </jb:bean>        </smooks-resource-list>");
+               return configFileData.getXmlContent();
+       }
+       
+       
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VesService.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VesService.java
new file mode 100644 (file)
index 0000000..81cb4b8
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.service;
+
+import javax.annotation.Resource;
+import org.onap.universalvesadapter.adapter.GenericAdapter;
+import org.onap.universalvesadapter.exception.ConfigFileReadException;
+import org.onap.universalvesadapter.exception.ConfigFileSmooksConversionException;
+import org.onap.universalvesadapter.exception.VesException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * Service that starts the universal ves adapter module to listen for events
+ * 
+ * @author kmalbari
+ *
+ */
+@Component
+public class VesService {
+       
+       private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
+       
+       private boolean isRunning = true;
+    
+    @Autowired
+    private DMaapService dmaapService;
+    
+    @Autowired
+    private AdapterService adapterService;
+    
+    @Resource(name="universalEventAdapter")
+    private GenericAdapter eventAdapter;
+
+    @Value("${messagesInBatch}")
+       private int messagesInBatch; 
+       
+       /*public void start(){
+               
+               String incomingJsonString = dmaapService.consume();
+               if(!"".equals(incomingJsonString)){
+                       GenericAdapter eventAdapter = adapterService.identifyIncomingJsonFormatAndReturnAdapter();
+                       String outgoingJsonString = eventAdapter.transform(incomingJsonString);
+                       System.out.println(outgoingJsonString);
+               }
+       }*/
+    
+    
+       /**
+        *  method triggers universal ves adapter module
+        */
+       public void start() {
+               /*ParallelTasks parallelTasks = new ParallelTasks();
+               int processingNumberOfMessage = 0;
+               while (isRunning) {
+                       try {
+                               for(String incomingJsonString : dmaapService.consumeFromDMaap()){
+                                       parallelTasks.add(() -> processReceivedJson(incomingJsonString));
+                                       processingNumberOfMessage++;
+                                       if(processingNumberOfMessage == messagesInBatch){
+                                               parallelTasks.startParallelTasks();
+                                               processingNumberOfMessage=0;
+                                               parallelTasks = new ParallelTasks();
+                                               try
+                                   {
+                                       Thread.sleep(1000);
+                                   }
+                                   catch (InterruptedException e)
+                                   {
+                                   }           
+                                       }
+                               }
+                       } catch (DMaapException e) {
+                       }
+               }*/
+               String incomingJsonString = dmaapService.consume();
+               processReceivedJson(incomingJsonString);
+       }
+
+       /**
+        * It finds mapping file for received json, transforms json to VES format 
+        * and publishes it to outgoing DMaap MR Topic
+        * 
+        * @param incomingJsonString
+        */
+       private void processReceivedJson(String incomingJsonString) {
+               try {
+                       LOGGER.debug("Received incoming message" + incomingJsonString);
+                       if (!"".equals(incomingJsonString)) {
+                               String eventType = adapterService.identifyEventTypeFromIncomingJson(incomingJsonString);
+                               LOGGER.debug("Event identified as " + eventType);
+                               String outgoingJsonString;
+                                       outgoingJsonString = eventAdapter.transform(incomingJsonString, eventType);
+                               LOGGER.debug("Output VES json to be sent " + outgoingJsonString);
+                       } 
+               } catch (ConfigFileReadException | ConfigFileSmooksConversionException | VesException exception) {
+                       LOGGER.error(exception.getMessage());
+               }
+       }
+       
+       /**
+        * method stops universal ves adapter module
+        */
+       public void stop() {
+               
+               isRunning = false;
+       }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/MapperConfigUtils.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/MapperConfigUtils.java
new file mode 100644 (file)
index 0000000..e94cdf5
--- /dev/null
@@ -0,0 +1,322 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.utils;
+
+import com.att.aft.dme2.internal.apache.commons.lang3.EnumUtils;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.util.Set;
+import java.util.TreeSet;
+import org.onap.universalvesadapter.exception.MapperConfigException;
+import org.onap.universalvesadapter.mappingconfig.Entry;
+import org.onap.universalvesadapter.mappingconfig.Evaluation;
+import org.onap.universalvesadapter.mappingconfig.MapperConfig;
+
+/**
+ * This class will be utility class to read the mapper config file and parse the
+ * config to prepare the grammar to detect the incoming json's event type.
+ * 
+ * @author kmalbari
+ *
+ */
+public class MapperConfigUtils {
+
+    private static Set<Entry> entries = new TreeSet<>((o1, o2) -> o1.getPriority().compareTo(o2.getPriority()));
+
+    private enum JoinOperator {
+        AND("AND"), OR("OR");
+
+        private final String value;
+
+        private JoinOperator(final String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    private enum ExpressionOperator {
+        EQUALS("EQUALS"), STARTSWITH("STARTSWITH"), ENDSWITH("ENDSWITH"), CONTAINS("CONTAINS");
+
+        private final String value;
+
+        private ExpressionOperator(final String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    private enum DataType {
+        STRING("STRING"), DOUBLE("DOUBLE");
+
+        private final String value;
+
+        private DataType(final String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    /**
+     * main method.
+     * 
+     * @param args
+     *            arguments
+     */
+    public static void main(String[] args) {
+
+        String mappingFile = " { " + " \"entries\": [{ " + "     \"priority\": 4, " + "     \"evaluation\": { "
+                + "         \"operand\": \"AND\", " + "         \"field\": null, " + "         \"value\": null, "
+                + "         \"datatype\": null, " + "         \"lhs\": { " + "             \"operand\": \"OR\", "
+                + "             \"field\": null, " + "             \"value\": null, "
+                + "             \"datatype\": null, " + "             \"lhs\": { "
+                + "                 \"operand\": \"EQUALS\", " + "                 \"field\": \"domain\", "
+                + "                 \"value\": \"snmp-heartbeat\", " + "                 \"datatype\": \"string\", "
+                + "                 \"lhs\": null, " + "                 \"rhs\": null " + "             }, "
+                + "             \"rhs\": { " + "                 \"operand\": \"EQUALS\", "
+                + "                 \"field\": \"domain\", " + "                 \"value\": \"snmp-fault\", "
+                + "                 \"datatype\": \"string\", " + "                 \"lhs\": null, "
+                + "                 \"rhs\": null " + "             } " + "         }, " + "         \"rhs\": { "
+                + "             \"operand\": \"EQUALS\", " + "             \"field\": \"trap version\", "
+                + "             \"value\": \"1.2\", " + "             \"datatype\": \"float\", "
+                + "             \"lhs\": null, " + "             \"rhs\": null " + "         } " + "     }, "
+                + "     \"result\": \"smooks.config\" " + " }, { " + "     \"priority\": 1, "
+                + "     \"evaluation\": { " + "         \"operand\": \"AND\", " + "         \"field\": null, "
+                + "         \"value\": null, " + "         \"datatype\": null, " + "         \"lhs\": { "
+                + "             \"operand\": \"OR\", " + "             \"field\": null, "
+                + "             \"value\": null, " + "             \"datatype\": null, " + "             \"lhs\": { "
+                + "                 \"operand\": \"EQUALS\", " + "                 \"field\": \"domain\", "
+                + "                 \"value\": \"snmp-heartbeat\", " + "                 \"datatype\": \"string\", "
+                + "                 \"lhs\": null, " + "                 \"rhs\": null " + "             }, "
+                + "             \"rhs\": { " + "                 \"operand\": \"EQUALS\", "
+                + "                 \"field\": \"domain\", " + "                 \"value\": \"snmp-fault\", "
+                + "                 \"datatype\": \"string\", " + "                 \"lhs\": null, "
+                + "                 \"rhs\": null " + "             } " + "         }, " + "         \"rhs\": { "
+                + "             \"operand\": \"EQUALS\", " + "             \"field\": \"trap version\", "
+                + "             \"value\": \"1.2\", " + "             \"datatype\": \"float\", "
+                + "             \"lhs\": null, " + "             \"rhs\": null " + "         } " + "     }, "
+                + "     \"result\": \"smooks.config\" " + " }, { " + "     \"priority\": 3, "
+                + "     \"evaluation\": { " + "         \"operand\": \"AND\", " + "         \"field\": null, "
+                + "         \"value\": null, " + "         \"datatype\": null, " + "         \"lhs\": { "
+                + "             \"operand\": \"OR\", " + "             \"field\": null, "
+                + "             \"value\": null, " + "             \"datatype\": null, " + "             \"lhs\": { "
+                + "                 \"operand\": \"EQUALS\", " + "                 \"field\": \"domain\", "
+                + "                 \"value\": \"snmp-heartbeat\", " + "                 \"datatype\": \"string\", "
+                + "                 \"lhs\": null, " + "                 \"rhs\": null " + "             }, "
+                + "             \"rhs\": { " + "                 \"operand\": \"EQUALS\", "
+                + "                 \"field\": \"domain\", " + "                 \"value\": \"snmp-fault\", "
+                + "                 \"datatype\": \"string\", " + "                 \"lhs\": null, "
+                + "                 \"rhs\": null " + "             } " + "         }, " + "         \"rhs\": { "
+                + "             \"operand\": \"EQUALS\", " + "             \"field\": \"trap version\", "
+                + "             \"value\": \"1.2\", " + "             \"datatype\": \"float\", "
+                + "             \"lhs\": null, " + "             \"rhs\": null " + "         } " + "     }, "
+                + "     \"result\": \"smooks.config\" " + " }, { " + "     \"priority\": 2, "
+                + "     \"evaluation\": { " + "         \"operand\": \"AND\", " + "         \"field\": null, "
+                + "         \"value\": null, " + "         \"datatype\": null, " + "         \"lhs\": { "
+                + "             \"operand\": \"OR\", " + "             \"field\": null, "
+                + "             \"value\": null, " + "             \"datatype\": null, " + "             \"lhs\": { "
+                + "                 \"operand\": \"EQUALS\", " + "                 \"field\": \"domain\", "
+                + "                 \"value\": \"snmp-heartbeat\", " + "                 \"datatype\": \"string\", "
+                + "                 \"lhs\": null, " + "                 \"rhs\": null " + "             }, "
+                + "             \"rhs\": { " + "                 \"operand\": \"EQUALS\", "
+                + "                 \"field\": \"domain\", " + "                 \"value\": \"snmp-fault\", "
+                + "                 \"datatype\": \"string\", " + "                 \"lhs\": null, "
+                + "                 \"rhs\": null " + "             } " + "         }, " + "         \"rhs\": { "
+                + "             \"operand\": \"EQUALS\", " + "             \"field\": \"trap version\", "
+                + "             \"value\": \"1.2\", " + "             \"datatype\": \"float\", "
+                + "             \"lhs\": null, " + "             \"rhs\": null " + "         } " + "     }, "
+                + "     \"result\": \"smooks.config\" " + " }] " + "}";
+        String incomingJsonString = "{\"domain\":\"snmp-heartbeat\",\"trap version\":1.2}";
+
+        try {
+            readMapperConfigFile(mappingFile);
+            checkIncomingJsonForMatchingDomain(incomingJsonString);
+        } catch (MapperConfigException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+
+    }
+
+    /**
+     * Checks incoming json to see which of the domain it mathces as per mapper
+     * config entries. If nothing matches, a default mapping will be used.
+     * 
+     * @param incomingJsonString
+     *            incoming json
+     * @throws MapperConfigException
+     *             if error occurs in operation
+     */
+    public static String checkIncomingJsonForMatchingDomain(String incomingJsonString) throws MapperConfigException {
+        ObjectMapper mapper = new ObjectMapper();
+        JsonNode actualObj = null;
+        try {
+            actualObj = mapper.readTree(incomingJsonString);
+        } catch (IOException exception) {
+            throw new MapperConfigException("Unable to read incoming json in a tree " + exception.getMessage(),
+                    exception);
+        }
+        for (Entry entry : entries) {
+
+            boolean result = false;
+            result = evaluateEntryMatch(entry.getEvaluation(), actualObj);
+            if (result) {
+                return entry.getResult();
+            }
+        }
+        return "default";
+    }
+
+    /**
+     * Reads the mapper config file.
+     * 
+     * @param mappingFileData
+     *            string json for mapper config
+     * @throws MapperConfigException
+     *             if error in mapper config
+     */
+    public static void readMapperConfigFile(String mappingFileData) throws MapperConfigException {
+
+        ObjectMapper name = new ObjectMapper();
+        MapperConfig config = null;
+        try {
+            config = name.readValue(mappingFileData, MapperConfig.class);
+        } catch (IOException exception) {
+            throw new MapperConfigException("Unable to read config file for reason...\n " + exception.getMessage(),
+                    exception);
+        }
+        System.out.println("Read config file content into :" + config);
+        if (null != config) {
+            entries.addAll(config.getEntries());
+        } else {
+            throw new MapperConfigException("Unable to generate configuration for different domains.");
+        }
+    }
+
+    /**
+     * Evaluates the passed in {@code Evaluation} instance and return boolean
+     * result.
+     * 
+     * @param evaluation
+     *            evaluation instance
+     * @param actualObj
+     *            Json node with values to compare with
+     * @return true if matches evaluation else false
+     * @throws MapperConfigException
+     *             error in evaluation
+     */
+    public static boolean evaluateEntryMatch(Evaluation evaluation, JsonNode actualObj) throws MapperConfigException {
+        if (null == evaluation) {
+            throw new MapperConfigException("Cannot have null evaluation");
+        }
+        if (null != evaluation.getOperand()) {
+
+            if (EnumUtils.isValidEnum(JoinOperator.class, evaluation.getOperand())) {
+                // if(JOIN_OPERATOR.contains(evaluation.getOperand())){
+                switch (JoinOperator.valueOf(evaluation.getOperand())) {
+                    case AND:
+                        return evaluateEntryMatch(evaluation.getLhs(), actualObj)
+                                && evaluateEntryMatch(evaluation.getRhs(), actualObj);
+                    case OR:
+                        return evaluateEntryMatch(evaluation.getLhs(), actualObj)
+                                || evaluateEntryMatch(evaluation.getRhs(), actualObj);
+                    default:
+                        break;
+                }
+            }
+
+            if (EnumUtils.isValidEnum(ExpressionOperator.class, evaluation.getOperand())) {
+                // if(EXPR_OPERATOR.contains(evaluation.getOperand())){
+
+                // currently it is assumed field being compared is first level
+                // child of incoming JSON structure.
+                // If needed, can write a JsonPath implementation later
+                String field = evaluation.getField();
+                if (null != field && null != evaluation.getDatatype() && actualObj.has(field)) {
+                    switch (ExpressionOperator.valueOf(evaluation.getOperand())) {
+                        case EQUALS:
+                            if (EnumUtils.isValidEnum(DataType.class, evaluation.getDatatype())) {
+                                switch (DataType.valueOf(evaluation.getDatatype())) {
+                                    case STRING:
+                                        if (null != actualObj.get(field))
+                                            return actualObj.get(field).asText().equals(evaluation.getValue());
+                                    case DOUBLE:
+                                        if (null != actualObj.get(field))
+                                            return actualObj.get(field).asDouble() == Double
+                                                    .valueOf(evaluation.getValue());
+                                    default:
+                                        return false;
+                                }
+                            } else
+                                return false;
+                        case STARTSWITH:
+                            if (EnumUtils.isValidEnum(DataType.class, evaluation.getDatatype())) {
+                                switch (DataType.valueOf(evaluation.getDatatype())) {
+                                    case STRING:
+                                        if (null != actualObj.get(field))
+                                            return actualObj.get(field).asText().startsWith(evaluation.getValue());
+                                    default:
+                                        return false;
+                                }
+                            } else
+                                return false;
+                        case ENDSWITH:
+                            if (EnumUtils.isValidEnum(DataType.class, evaluation.getDatatype())) {
+                                switch (DataType.valueOf(evaluation.getDatatype())) {
+                                    case STRING:
+                                        if (null != actualObj.get(field))
+                                            return actualObj.get(field).asText().endsWith(evaluation.getValue());
+                                    default:
+                                        return false;
+                                }
+                            } else
+                                return false;
+                        case CONTAINS:
+                            if (EnumUtils.isValidEnum(DataType.class, evaluation.getDatatype())) {
+                                switch (DataType.valueOf(evaluation.getDatatype())) {
+                                    case STRING:
+                                        if (null != actualObj.get(field))
+                                            return actualObj.get(field).asText().contains(evaluation.getValue());
+                                    default:
+                                        return false;
+                                }
+                            } else
+                                return false;
+                        default:
+                            return false;
+                    }
+                }
+            }
+        } else
+            throw new MapperConfigException("Not an expected operand as per config for " + evaluation.getField());
+
+        return false;
+    }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java
new file mode 100644 (file)
index 0000000..45fdf96
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * 
+ * Utility class to execute parallel tasks
+ * 
+ * @author kmalbari
+ *
+ */
+public class ParallelTasks
+{
+    private final Collection<Runnable> tasks = new ArrayList<Runnable>();
+
+    public ParallelTasks()
+    {
+    }
+
+    /**
+     * 
+     * Add task to be executed in parallel
+     * 
+     * @param task
+     */
+    public void add(final Runnable task)
+    {
+        tasks.add(task);
+    }
+
+    /**
+     * starts all the added tasks in parallel
+     * 
+     * @throws InterruptedException
+     */
+    public void startParallelTasks() throws InterruptedException
+    {
+        final ExecutorService threads = Executors.newFixedThreadPool(Runtime.getRuntime()
+                .availableProcessors());
+        try
+        {
+            final CountDownLatch latch = new CountDownLatch(tasks.size());
+            for (final Runnable task : tasks)
+                threads.execute(new Runnable() {
+                    public void run()
+                    {
+                        try
+                        {
+                            task.run();
+                        }
+                        finally
+                        {
+                            latch.countDown();
+                        }
+                    }
+                });
+            latch.await();
+        }
+        finally
+        {
+            threads.shutdown();
+        }
+    }
+}
\ No newline at end of file
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/SmooksUtils.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/SmooksUtils.java
new file mode 100644 (file)
index 0000000..df36da6
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DCAE
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.
+* ============LICENSE_END=========================================================
+*/
+package org.onap.universalvesadapter.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Locale;
+import javax.xml.transform.stream.StreamSource;
+import org.milyn.Smooks;
+import org.milyn.container.ExecutionContext;
+import org.milyn.payload.StringResult;
+import org.onap.dcaegen2.ves.domain.VesEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * Utility methods for smooks module
+ * 
+ * @author kmalbari
+ *
+ */
+public class SmooksUtils {
+
+       
+       private final static Logger LOGGER = LoggerFactory.getLogger(SmooksUtils.class);        
+       
+       /**
+        * converts the incoming json using passed smooks instance and return the pojo representation of VES event
+        * 
+        * @param smooks smooks object for the event type
+        * @param incomingJsonString 
+        * @return VES json's pojo representation
+        * @throws IOException
+        */
+       public static VesEvent getTransformedObjectForInput(Smooks smooks, String incomingJsonString) {
+               
+               LOGGER.debug("Transforming json " + incomingJsonString);
+               ExecutionContext executionContext = smooks.createExecutionContext();
+               LOGGER.debug("Context created");
+               Locale defaultLocale = Locale.getDefault();
+        Locale.setDefault(new Locale("en", "IE"));
+
+        StringResult result = new StringResult();
+
+        // Configure the execution context to generate a report...
+//        executionContext.setEventListener(new HtmlReportGenerator("target/report/report.html"));
+
+        // Filter the input message to the outputWriter, using the execution context...
+        smooks.filterSource(executionContext, new StreamSource(new ByteArrayInputStream(incomingJsonString.getBytes(StandardCharsets.UTF_8))), result);
+        LOGGER.debug("Transformed incoming json now");
+        Locale.setDefault(defaultLocale);
+        VesEvent vesEvent = (VesEvent) executionContext.getBeanContext().getBean("vesEvent");
+        LOGGER.debug("Converted vesEvent from incoming json"); 
+               return vesEvent;
+       }
+
+}
diff --git a/UniversalVesAdapter/src/main/resources/MapperConfig.json b/UniversalVesAdapter/src/main/resources/MapperConfig.json
new file mode 100644 (file)
index 0000000..e39c822
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "entries" : [
+               {
+                       "priority" : 1,
+                       "evaluation" : {
+                                       "operand" : "EQUALS",
+                                       "field" : "notify OID",
+                                       "value" : ".1.3.6.1.4.1.74.2.46.12.1.1",
+                                       "datatype" : "string",
+                                       "lhs" : null,
+                                       "rhs" : null    
+                               },
+                       "result" : "snmp"
+               }               
+       ]
+}
\ No newline at end of file
diff --git a/UniversalVesAdapter/src/main/resources/MapperConfigFullFormat.json b/UniversalVesAdapter/src/main/resources/MapperConfigFullFormat.json
new file mode 100644 (file)
index 0000000..059dc2e
--- /dev/null
@@ -0,0 +1,56 @@
+{
+       "entries" : [
+               {
+                       "priority" : 1,
+                       "evaluation" : {
+                                       "operand" : "EQUALS",
+                                       "field" : "notify OID",
+                                       "value" : ".1.3.6.1.4.1.74.2.46.12.1.1",
+                                       "datatype" : "string",
+                                       "lhs" : null,
+                                       "rhs" : null    
+                               },
+                       "result" : "snmpTrapToVes.xml"
+               },
+               {
+                       "priority" : 2,
+                       "evaluation" : {
+                               "operand" : "AND",
+                               "field" : null,
+                               "value" : null,
+                               "datatype" : null,
+                               "lhs" : {
+                                       "operand" : "OR",
+                                       "field" : null,
+                                       "value" : null,
+                                       "datatype" : null,
+                                       "lhs" : {
+                                               "operand" : "EQUALS",
+                                               "field" : "domain",
+                                               "value" : "snmp-heartbeat",
+                                               "datatype" : "string",
+                                               "lhs" : null,
+                                               "rhs" : null
+                                       },
+                                       "rhs" : {
+                                               "operand" : "EQUALS",
+                                               "field" : "domain",
+                                               "value" : "snmp-fault",
+                                               "datatype" : "string",
+                                               "lhs" : null,
+                                               "rhs" : null                                            
+                                       }
+                               },
+                               "rhs" : {
+                                       "operand" : "EQUALS",
+                                       "field" : "trap version",
+                                       "value" : "1.2",
+                                       "datatype" : "float",
+                                       "lhs" : null,
+                                       "rhs" : null    
+                               }
+                       },
+                       "result" : "smooks.config"
+               }               
+       ]
+}
\ No newline at end of file
diff --git a/UniversalVesAdapter/src/main/resources/application.properties b/UniversalVesAdapter/src/main/resources/application.properties
new file mode 100644 (file)
index 0000000..a0c32b4
--- /dev/null
@@ -0,0 +1,10 @@
+logging.level.org.springframework.web=ERROR
+logging.level.org.onap.universalvesadapter=DEBUG
+dmaap.url=http://localhost:8091/greeting
+snmpTrap.configFile=snmpTrapToVes.xml
+universal.configFiles=snmp:snmpTrapToVes.xml,default:defaultConfig.xml
+fileService.url=http://localhost:8888/fileAsString/
+messagesInBatch=1000
+dmaap.consumer_props=/src/main/resources/dme2/consumer.properties
+dmaap.publisher_props=/src/main/resources/dme2/publisher.properties
+server.port=8091
\ No newline at end of file
diff --git a/UniversalVesAdapter/src/main/resources/dme2/consumer.properties b/UniversalVesAdapter/src/main/resources/dme2/consumer.properties
new file mode 100644 (file)
index 0000000..6ba59d1
--- /dev/null
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+<!DOCTYPE html PUBLIC "" ""><HTML><HEAD>
+<META http-equiv="Content-Type" content="text/html; charset=utf-8"></HEAD>
+<BODY>
+<PRE>###############################################################################
+#  ============LICENSE_START=======================================================
+#  org.onap.dmaap
+#  ================================================================================
+#  Copyright ï¿½ 2017 AT&amp;T Intellectual Property. All rights reserved.
+#  ================================================================================
+#  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.
+#  ============LICENSE_END=========================================================
+#
+#  ECOMP is a trademark and service mark of AT&amp;T Intellectual Property.
+#  
+###############################################################################
+TransportType=DME2
+Latitude =47.778998
+Longitude =-122.182883
+Version =1.0
+ServiceName =dmaap-v1.dev.dmaap.dt.saat.acsi.att.com/events
+Environment =TEST
+Partner=BOT_R
+routeOffer=MR1
+SubContextPath =/
+Protocol =http
+MethodType =GET
+username =&lt;att uid&gt;
+password =&lt;password&gt;
+contenttype =application/json
+authKey=&lt;auth key&gt;
+authDate=2016-02-18T13:57:37-0800
+#host=uebsb91bodc.it.att.com:3904
+host=&lt;host&gt;:&lt;port&gt;
+topic=com.att.ecomp_test.crm.preDemo1
+group=con
+id=5
+timeout=15000
+limit=1000
+filter=
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=15000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=/src/main/resources/dme2/preferredRoute.txt
+
+
+</PRE></BODY></HTML>
diff --git a/UniversalVesAdapter/src/main/resources/dme2/preferredRoute.properties b/UniversalVesAdapter/src/main/resources/dme2/preferredRoute.properties
new file mode 100644 (file)
index 0000000..506df76
--- /dev/null
@@ -0,0 +1,5 @@
+<!DOCTYPE HTML>
+<!DOCTYPE html PUBLIC "" ""><HTML><HEAD>
+<META http-equiv="Content-Type" content="text/html; charset=utf-8"></HEAD>
+<BODY>
+<PRE>preferredRouteKey=MR1</PRE></BODY></HTML>
diff --git a/UniversalVesAdapter/src/main/resources/dme2/producer.properties b/UniversalVesAdapter/src/main/resources/dme2/producer.properties
new file mode 100644 (file)
index 0000000..fb9e639
--- /dev/null
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML>
+<!DOCTYPE html PUBLIC "" ""><HTML><HEAD>
+<META http-equiv="Content-Type" content="text/html; charset=utf-8"></HEAD>
+<BODY>
+<PRE>###############################################################################
+#  ============LICENSE_START=======================================================
+#  org.onap.dmaap
+#  ================================================================================
+#  Copyright ï¿½ 2017 AT&amp;T Intellectual Property. All rights reserved.
+#  ================================================================================
+#  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.
+#  ============LICENSE_END=========================================================
+#
+#  ECOMP is a trademark and service mark of AT&amp;T Intellectual Property.
+#  
+###############################################################################
+TransportType=DME2
+Latitude =47.778998
+Longitude =-122.182883
+Version =1.0
+ServiceName =dmaap-v1.dev.dmaap.dt.saat.acsi.att.com/events
+#com.att.acsi.saat.dt.dmaap.dev.mrclientnew1
+Environment =TEST
+Partner=BOT_R
+routeOffer=MR1
+SubContextPath =/
+Protocol =http
+MethodType =POST
+username =&lt;att uid&gt;
+password =&lt;global logon password&gt;
+contenttype = application/json
+authKey=&lt;auth key&gt;
+authDate=2016-07-20T11:30:56-0700
+host=&lt;host&gt;:&lt;port&gt;
+topic=com.att.ecomp_test.crm.preDemo1
+#host=uebsb91bodc.it.att.com:3904
+partition=1
+maxBatchSize=100
+maxAgeMs=250
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=15000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=/src/main/resources/dme2/preferredRoute.txt
+MessageSentThreadOccurance=50
+</PRE></BODY></HTML>
diff --git a/pom.xml b/pom.xml
new file mode 100644 (file)
index 0000000..15c2e26
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,675 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ ===============================LICENSE_START======================================
+  ~  mapper
+  ~ ================================================================================
+  ~    Copyright Â© 2017 AT&T Intellectual Property. All rights reserved.
+  ~ ================================================================================
+  ~  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.
+  ~  ============================LICENSE_END===========================================
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+      <groupId>org.onap.oparent</groupId>
+      <artifactId>oparent</artifactId>
+      <version>1.1.0</version>
+      <relativePath/>
+    </parent>
+
+    <groupId>org.onap.dcaegen2.services.mapper</groupId>
+    <artifactId>mapper</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>dcae-services-mapper</name>
+    <description>Universal VES mapper for DCAE Analytics Service</description>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+
+    <properties>
+
+        <!-- PROJECT SETTINGS-->
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <main.basedir>${project.basedir}</main.basedir>
+
+        <!--TEST SETTINGS -->
+        <surefire.redirectTestOutputToFile>true</surefire.redirectTestOutputToFile>
+
+        <slf4j.version>1.7.25</slf4j.version>
+        <jackson.json.version>2.9.4</jackson.json.version>
+               
+        <netty.http.version>0.16.0</netty.http.version>
+        <gson.version>2.2.4</gson.version>
+        <guava.version>13.0.1</guava.version>
+        <guice.version>3.0</guice.version>
+        <logback.version>1.0.9</logback.version>
+        <findbugs.jsr305.version>2.0.1</findbugs.jsr305.version>
+        <findbugs.annotations.version>3.0.0</findbugs.annotations.version>
+        <lombok.version>1.16.10</lombok.version>
+
+        <json.path.version>2.2.0</json.path.version>
+        <quartz.version>2.2.0</quartz.version>
+        <httpclient.version>4.5.2</httpclient.version>
+        <commons.lang3.version>3.5</commons.lang3.version>
+
+
+        <!--TESTING DEPENDENCIES -->
+        <junit.version>4.12</junit.version>
+        <jayway.jsonpath.version>2.2.0</jayway.jsonpath.version>
+        <jsonassert.version>1.4.0</jsonassert.version>
+        <mockito.version>2.5.7</mockito.version>
+        <cucumber.version>1.2.5</cucumber.version>
+
+
+        <!-- PLUGINS VERSIONS -->
+        <compiler.plugin.version>3.3</compiler.plugin.version>
+        <surefire.plugin.version>2.19.1</surefire.plugin.version>
+        <failsafe.plugin.version>2.19.1</failsafe.plugin.version>
+        <bundle.plugin.version>2.5.4</bundle.plugin.version>
+        <autorun.plugin.version>1.7</autorun.plugin.version>
+        <eclipe.plugin.version>2.10</eclipe.plugin.version>
+        <findbugs.plugin.version>3.0.2</findbugs.plugin.version>
+        <pmd.plugin.version>3.5</pmd.plugin.version>
+        <surefire.report.plugin.version>2.19.1</surefire.report.plugin.version>
+        <checkstyle.plugin.version>2.16</checkstyle.plugin.version>
+        <javadoc.plugin.version>2.10.4</javadoc.plugin.version>
+        <source.plugin.version>2.4</source.plugin.version>
+        <jar.plugin.version>2.4</jar.plugin.version>
+        <lombok.plugin.version>1.16.10.0</lombok.plugin.version>
+        <jgitflow.plugin.version>1.0-m5.1</jgitflow.plugin.version>
+        <gitcommitid.plugin.version>2.2.3</gitcommitid.plugin.version>
+        <maven.site.plugin>3.5.1</maven.site.plugin>
+        <jxr.plugin.version>2.5</jxr.plugin.version>
+        <project.info.reports.plugin.version>2.7</project.info.reports.plugin.version>
+
+        <!--PLUGIN SETTINGS -->
+        <!-- <compiler.source.version>1.7</compiler.source.version>
+        <compiler.target.version>1.7</compiler.target.version> -->
+         <compiler.source.version>1.8</compiler.source.version>
+        <compiler.target.version>1.8</compiler.target.version> 
+        <unit.test.pattern>**/*Test.java</unit.test.pattern>
+        <skip.unit.tests>false</skip.unit.tests>
+        <integration.test.pattern>**/*IT.java</integration.test.pattern>
+        <skip.integration.tests>true</skip.integration.tests>
+       <!--  <pmd.violation.buildfail>true</pmd.violation.buildfail> -->
+        <findbugs.failOnError>true</findbugs.failOnError>
+        <checkstyle.failOnViolation>true</checkstyle.failOnViolation>
+        <checkstyle.file.name>checkstyle.xml</checkstyle.file.name>
+        <checkstyle.suppression.file.name>suppressions.xml</checkstyle.suppression.file.name>       
+        <dependency.locations.enabled>false</dependency.locations.enabled>
+        <nexusproxy>https://nexus.onap.org</nexusproxy>
+        <snapshots.path>content/repositories/snapshots/</snapshots.path>
+        <releases.path>content/repositories/releases/</releases.path>
+        <site.path>
+            content/sites/site/org/onap/dcaegen2/services/mapper/${project.artifactId}/${project.version}
+        </site.path>
+    </properties>
+
+    <dependencyManagement>
+
+        <dependencies>
+
+            <!-- LOGGING -->
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>${slf4j.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+
+            <!-- UTILITIES -->
+            <dependency>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-lang3</artifactId>
+                <version>${commons.lang3.version}</version>
+            </dependency>
+
+            <!-- JACKSON JSON -->
+          <!-- <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-core</artifactId>
+                <version>${jackson.json.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-databind</artifactId>
+                <version>${jackson.json.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-annotations</artifactId>
+                <version>${jackson.json.version}</version>
+            </dependency>
+
+            JSON PATH
+            <dependency>
+                <groupId>com.jayway.jsonpath</groupId>
+                <artifactId>json-path</artifactId>
+                <version>${json.path.version}</version>
+            </dependency>  -->
+
+
+            <!-- TEST DEPENDENCIES -->
+
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>${junit.version}</version>
+                <scope>test</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.mockito</groupId>
+                <artifactId>mockito-core</artifactId>
+                <version>${mockito.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.jayway.jsonpath</groupId>
+                <artifactId>json-path-assert</artifactId>
+                <version>${jayway.jsonpath.version}</version>
+                <scope>test</scope>
+            </dependency>
+
+        </dependencies>
+        
+    </dependencyManagement>
+
+
+    <build>
+
+        <resources>
+            <resource>
+                <directory>${project.basedir}/src/main/resources</directory>
+            </resource>
+            <resource>
+                <directory>${project.build.directory}/git</directory>
+            </resource>
+        </resources>
+
+        <extensions>
+            <extension>
+                <groupId>org.apache.maven.wagon</groupId>
+                <artifactId>wagon-webdav-jackrabbit</artifactId>
+                <version>1.0-beta-7</version>
+            </extension>
+        </extensions>
+
+        <pluginManagement>
+
+            <plugins>
+
+                <!-- COMPILER PLUGIN -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>${compiler.plugin.version}</version>
+                    <configuration>
+                        <source>${compiler.target.version}</source>
+                        <target>${compiler.source.version}</target>
+                    </configuration>
+                </plugin>
+
+                <!-- MAVEN SOURCE PLUGIN -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <version>${source.plugin.version}</version>
+                    <configuration>
+                        <excludeResources>true</excludeResources>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <id>attach-sources</id>
+                            <phase>verify</phase>
+                            <goals>
+                                <goal>jar-no-fork</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+
+
+                <!-- MAVEN JAVADOC PLUGIN -->
+               <!--  <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-javadoc-plugin</artifactId>
+                    <version>${javadoc.plugin.version}</version>
+                    <configuration>
+                        minimize console output messages
+                        <quiet>true</quiet>
+                        <verbose>false</verbose>
+                        <useStandardDocletOptions>false</useStandardDocletOptions>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <id>aggregate</id>
+                            <phase>site</phase>
+                            <goals>
+                                <goal>aggregate</goal>
+                            </goals>
+                        </execution>
+                        <execution>
+                            <id>attach-javadoc</id>
+                            <goals>
+                                <goal>jar</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin> -->
+
+                <!-- MAVEN BUNDLE PLUGIN -->
+                <plugin>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>maven-bundle-plugin</artifactId>
+                    <version>${bundle.plugin.version}</version>
+                    <extensions>true</extensions>
+                    <configuration>
+                        <instructions>
+                            <Embed-Dependency>*;inline=false;scope=compile</Embed-Dependency>
+                            <Embed-Transitive>true</Embed-Transitive>
+                            <Embed-Directory>lib</Embed-Directory>
+                        </instructions>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <id>Bundling mapper Jar</id>
+                            <phase>package</phase>
+                            <goals>
+                                <goal>bundle</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+
+                <!-- MAVEN AUTO RUN PLUGIN -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-antrun-plugin</artifactId>
+                    <version>${autorun.plugin.version}</version>
+                </plugin>
+
+                <!-- SUREFIRE TEST PLUGIN -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>${surefire.plugin.version}</version>
+                    <configuration>
+                        <skipTests>${skip.unit.tests}</skipTests>
+                        <argLine>-Xmx2048m -Djava.awt.headless=true -XX:+UseConcMarkSweepGC
+                            -XX:OnOutOfMemoryError="kill -9 %p" -XX:+HeapDumpOnOutOfMemoryError
+                        </argLine>
+                        <redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>
+                        <parallel>methods</parallel>
+                        <threadCount>8</threadCount>
+                        <forkCount>8</forkCount>
+                        <reuseForks>true</reuseForks>
+                        <reportFormat>xml</reportFormat>
+                        <trimStackTrace>false</trimStackTrace>
+                        <systemPropertyVariables>
+                            <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
+                            <logback.configurationFile>
+                                ${basedir}/src/test/resources/logback-test.xml
+                            </logback.configurationFile>
+                            <HADOOP_HOME>${project.build.directory}</HADOOP_HOME>
+                        </systemPropertyVariables>
+                        <includes>
+                            <include>${unit.test.pattern}</include>
+                        </includes>
+                        <excludes>
+                            <exclude>${integration.test.pattern}</exclude>
+                        </excludes>
+                        <!-- Sets the VM argument line used when unit tests are run. -->
+                        <argLine>${surefireArgLine}</argLine>
+                    </configuration>
+                    <dependencies>
+                        <dependency>
+                            <groupId>org.apache.maven.surefire</groupId>
+                            <artifactId>surefire-junit47</artifactId>
+                            <version>${surefire.plugin.version}</version>
+                        </dependency>
+                    </dependencies>
+                </plugin>
+
+                <!-- FAIL SAFE PLUGIN FOR INTEGRATION TEST -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-failsafe-plugin</artifactId>
+                    <version>${failsafe.plugin.version}</version>
+                    <executions>
+                        <execution>
+                            <id>integration-tests</id>
+                            <goals>
+                                <goal>integration-test</goal>
+                                <goal>verify</goal>
+                            </goals>
+                            <configuration>
+                                <skipTests>${skip.integration.tests}</skipTests>
+                                <!-- Sets the VM argument line used when integration tests are run. -->
+                                <!--suppress MavenModelInspection -->
+                                <argLine>${failsafeArgLine}</argLine>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+
+                <!-- FIND BUGS (STATIC CODE ANALYSIS) PLUGIN -->
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>findbugs-maven-plugin</artifactId>
+                    <version>${findbugs.plugin.version}</version>
+                    <configuration>
+                        <effort>Max</effort>
+                        <threshold>Low</threshold>
+                        <xmlOutput>true</xmlOutput>
+                        <!-- BUILD FAIL ON FINDBUGS ERRORS -->
+                        <failOnError>${findbugs.failOnError}</failOnError>
+                        <excludeFilterFile>${main.basedir}/findbugs-exclude.xml</excludeFilterFile>
+                        <outputDirectory>${project.reporting.outputDirectory}/findbugs</outputDirectory>
+                        <findbugsXmlOutputDirectory>${project.reporting.outputDirectory}/findbugs
+                        </findbugsXmlOutputDirectory>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <id>analyze-compile</id>
+                            <phase>compile</phase>
+                            <goals>
+                                <goal>check</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+
+                <!-- PMD PLUGIN SETUP -->
+               <!--  <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-pmd-plugin</artifactId>
+                    <version>${pmd.plugin.version}</version>
+                    <configuration>
+                        <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
+                        <targetJdk>${compiler.target.version}</targetJdk>
+                        <linkXRef>false</linkXRef>
+                        <excludes>
+                            IGNORE PMD & CPD ANALYTICS MODEL FACADE OBJECTS
+                            <exclude>**/model/facade/**/*.java</exclude>
+                        </excludes>
+                        BUILD FAIL ON PMD VIOLATION
+                        <failOnViolation>${pmd.violation.buildfail}</failOnViolation>
+                        <targetDirectory>${project.reporting.outputDirectory}/pmd</targetDirectory>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <id>pmd-check</id>
+                            <goals>
+                                <goal>check</goal>
+                            </goals>
+                            <configuration>
+                                <printFailingErrors>true</printFailingErrors>
+                                <excludeFromFailureFile>${main.basedir}/pmd-exclude.properties</excludeFromFailureFile>
+                            </configuration>
+                        </execution>
+                        <execution>
+                            <id>cpd-check</id>
+                            <goals>
+                                <goal>cpd-check</goal>
+                            </goals>
+                            <configuration>
+                                <printFailingErrors>true</printFailingErrors>
+                                <excludeFromFailureFile>${main.basedir}/cpd-exclude.properties</excludeFromFailureFile>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin> -->
+
+                <!-- CHECKSTYLE PLUGIN -->
+               <!--  <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-checkstyle-plugin</artifactId>
+                    <version>${checkstyle.plugin.version}</version>
+                    <executions>
+                        <execution>
+                            <id>validate</id>
+                            <phase>validate</phase>
+                            <configuration>
+                                <configLocation>${checkstyle.file.name}</configLocation>
+                                <suppressionsLocation>${checkstyle.suppression.file.name}</suppressionsLocation>
+                                <encoding>UTF-8</encoding>
+                                <consoleOutput>true</consoleOutput>
+                                BUILD FAIL ON CHECKSTYLE VIOLATION
+                                <failOnViolation>${checkstyle.failOnViolation}</failOnViolation>
+                                <includeTestSourceDirectory>true</includeTestSourceDirectory>
+                                <outputFile>${project.reporting.outputDirectory}/checkstyle</outputFile>
+                            </configuration>
+                            <goals>
+                                <goal>check</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <dependencies>
+                        <dependency>
+                            <groupId>com.puppycrawl.tools</groupId>
+                            <artifactId>checkstyle</artifactId>
+                            <version>6.19</version>
+                        </dependency>
+                    </dependencies>
+                </plugin>
+ -->
+                <!-- ECLIPSE PLUGIN -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-eclipse-plugin</artifactId>
+                    <version>${eclipe.plugin.version}</version>
+                </plugin>
+
+
+
+                <!-- GIT COMMIT ID PLUGIN -->
+                <plugin>
+                    <groupId>pl.project13.maven</groupId>
+                    <artifactId>git-commit-id-plugin</artifactId>
+                    <version>${gitcommitid.plugin.version}</version>
+                    <executions>
+                        <execution>
+                            <id>generate-git-properties</id>
+                            <phase>generate-resources</phase>
+                            <goals>
+                                <goal>revision</goal>
+                            </goals>
+                            <configuration>
+                                <failOnNoGitDirectory>false</failOnNoGitDirectory>
+                                <generateGitPropertiesFile>true</generateGitPropertiesFile>
+                                <generateGitPropertiesFilename>
+                                    ${project.build.directory}/git/git.properties
+                                </generateGitPropertiesFilename>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+
+
+                <!-- JAR PLUGIN -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>${jar.plugin.version}</version>
+                    <configuration>
+                        <archive>
+                            <manifest>
+                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                            </manifest>
+                            <manifestEntries>
+                                <Implementation-Build-Version>${project.version}</Implementation-Build-Version>
+                            </manifestEntries>
+                        </archive>
+                    </configuration>
+                </plugin>
+
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-site-plugin</artifactId>
+                    <version>${maven.site.plugin}</version>
+                </plugin>
+
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jxr-plugin</artifactId>
+                    <version>${jxr.plugin.version}</version>
+                </plugin>
+
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-project-info-reports-plugin</artifactId>
+                    <version>${project.info.reports.plugin.version}</version>
+                    <configuration>
+                        <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
+                        <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
+                    </configuration>
+                </plugin>
+
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-report-plugin</artifactId>
+                    <version>${surefire.report.plugin.version}</version>
+                </plugin>
+
+            </plugins>
+
+        </pluginManagement>
+
+        <plugins>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+            </plugin>
+
+           <!--  <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+            </plugin> -->
+
+           <!--  <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-pmd-plugin</artifactId>
+            </plugin> -->
+
+           <!--  <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>findbugs-maven-plugin</artifactId>
+            </plugin>
+ -->
+           <!--  <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <inherited>false</inherited>
+            </plugin> -->
+
+            <plugin>
+                <groupId>pl.project13.maven</groupId>
+                <artifactId>git-commit-id-plugin</artifactId>
+            </plugin>
+
+        </plugins>
+    </build>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-site-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <configuration>
+                    <configLocation>${checkstyle.file.name}</configLocation>
+                    <suppressionsLocation>${checkstyle.suppression.file.name}</suppressionsLocation>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jxr-plugin</artifactId>
+            </plugin>
+           <!--  <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-pmd-plugin</artifactId>
+            </plugin> -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-report-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </reporting>
+
+    <profiles>
+        <profile>
+            <id>doclint-java8-disable</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <!-- <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                        <configuration>
+                            <additionalparam>-Xdoclint:none</additionalparam>
+                        </configuration>
+                    </plugin> -->
+                </plugins>
+            </build>
+        </profile>
+    </profiles>  
+
+    <modules>
+        <module>UniversalVesAdapter</module>
+       <!--  <module></module> -->
+    </modules>
+
+</project>