aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPooja03 <PM00501616@techmahindra.com>2018-03-23 17:49:26 +0530
committerPooja03 <PM00501616@techmahindra.com>2018-03-23 17:49:26 +0530
commitd407638086b08c3de199cbef5e717fb16556077c (patch)
treeae56b4f5cf80eaa1b06bd60fa3de046f22212f29
parent97991213fa2883fe6658862cf5bb0151246f7361 (diff)
Added UniversalVesAdapter in the Mapper
Adding full UniversalVesAdapter Module in Mapper Change-Id: I7edece763546b91700983554ffcf38f8ab945ae2 Issue-ID: DCAEGEN2-335 Signed-off-by: Pooja03 <PM00501616@techmahindra.com>
-rw-r--r--.gitignore4
-rw-r--r--LICENSE.txt19
-rw-r--r--UniversalVesAdapter/.gitignore1
-rw-r--r--UniversalVesAdapter/SampleofMappingFile/snmpTrapToVes.xml54
-rw-r--r--UniversalVesAdapter/pom.xml94
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AdditionalField.java77
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AlarmAdditionalInformation.java100
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/ArrayOfField_.java100
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/CommonEventHeader.java282
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/Event.java102
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/FaultFields.java192
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/HeartbeatFields.java114
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/InternalHeaderFields.java74
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/VesEvent.java65
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/Application.java31
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/GenericAdapter.java51
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/UniversalEventAdapter.java136
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/Configuration.java24
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaapMrUrlConfiguration.java56
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DiskRepoConfiguration.java42
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/UniversalEventConfiguration.java73
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/MockDmaapController.java37
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/VesController.java64
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/ConfigFileData.java57
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Domains.java55
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Priorities.java35
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Severity.java36
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/State.java33
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/SysLogSeverity.java50
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertAction.java33
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertType.java34
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaCounterCriticality.java33
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaEventSeverity.java36
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/VnfStatus.java37
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileReadException.java38
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileSmooksConversionException.java40
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/DMaapException.java41
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/MapperConfigException.java45
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/VesException.java40
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Entry.java114
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Evaluation.java208
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/MapperConfig.java88
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/AdapterService.java57
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/ConfigFileService.java41
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DMaapService.java155
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DiskRepoConfigFileService.java73
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/MongoDbConfigFileService.java46
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VesService.java128
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/MapperConfigUtils.java322
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java87
-rw-r--r--UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/SmooksUtils.java76
-rw-r--r--UniversalVesAdapter/src/main/resources/MapperConfig.json16
-rw-r--r--UniversalVesAdapter/src/main/resources/MapperConfigFullFormat.json56
-rw-r--r--UniversalVesAdapter/src/main/resources/application.properties10
-rw-r--r--UniversalVesAdapter/src/main/resources/dme2/consumer.properties61
-rw-r--r--UniversalVesAdapter/src/main/resources/dme2/preferredRoute.properties5
-rw-r--r--UniversalVesAdapter/src/main/resources/dme2/producer.properties59
-rw-r--r--pom.xml675
58 files changed, 4712 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..19499ef
--- /dev/null
+++ b/.gitignore
@@ -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
index 0000000..f12b304
--- /dev/null
+++ b/LICENSE.txt
@@ -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
index 0000000..b83d222
--- /dev/null
+++ b/UniversalVesAdapter/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/UniversalVesAdapter/SampleofMappingFile/snmpTrapToVes.xml b/UniversalVesAdapter/SampleofMappingFile/snmpTrapToVes.xml
new file mode 100644
index 0000000..5fad2c9
--- /dev/null
+++ b/UniversalVesAdapter/SampleofMappingFile/snmpTrapToVes.xml
@@ -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
index 0000000..d66b090
--- /dev/null
+++ b/UniversalVesAdapter/pom.xml
@@ -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
index 0000000..850b39b
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AdditionalField.java
@@ -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
index 0000000..fe60761
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/AlarmAdditionalInformation.java
@@ -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
index 0000000..4e28be7
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/ArrayOfField_.java
@@ -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
index 0000000..f5d56a4
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/CommonEventHeader.java
@@ -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
index 0000000..b83cf93
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/Event.java
@@ -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
index 0000000..d9d014c
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/FaultFields.java
@@ -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
index 0000000..a73da4e
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/HeartbeatFields.java
@@ -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
index 0000000..e504011
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/InternalHeaderFields.java
@@ -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
index 0000000..4106943
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/VesEvent.java
@@ -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
index 0000000..4db5e28
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/Application.java
@@ -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
index 0000000..fa3b89c
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/GenericAdapter.java
@@ -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
index 0000000..318c8cd
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/UniversalEventAdapter.java
@@ -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
index 0000000..e47af70
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/Configuration.java
@@ -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
index 0000000..2b9a820
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaapMrUrlConfiguration.java
@@ -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
index 0000000..b1daf0d
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DiskRepoConfiguration.java
@@ -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
index 0000000..3edca56
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/UniversalEventConfiguration.java
@@ -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
index 0000000..e844270
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/MockDmaapController.java
@@ -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
index 0000000..588c912
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/controller/VesController.java
@@ -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
index 0000000..796fe70
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/ConfigFileData.java
@@ -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
index 0000000..55812c4
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Domains.java
@@ -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
index 0000000..6b3ddfd
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Priorities.java
@@ -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
index 0000000..1e200f5
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/Severity.java
@@ -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
index 0000000..b6b8851
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/State.java
@@ -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
index 0000000..5cee6ad
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/SysLogSeverity.java
@@ -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
index 0000000..928698f
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertAction.java
@@ -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
index 0000000..5130378
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaAlertType.java
@@ -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
index 0000000..9f8e126
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaCounterCriticality.java
@@ -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
index 0000000..6e73fa2
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/TcaEventSeverity.java
@@ -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
index 0000000..828c71e
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/domain/VnfStatus.java
@@ -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
index 0000000..3a64247
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileReadException.java
@@ -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
index 0000000..1daa939
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/ConfigFileSmooksConversionException.java
@@ -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
index 0000000..5af0205
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/DMaapException.java
@@ -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
index 0000000..a8414d8
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/MapperConfigException.java
@@ -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
index 0000000..31134c8
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/exception/VesException.java
@@ -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
index 0000000..54a77a0
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Entry.java
@@ -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
index 0000000..e34b98a
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/Evaluation.java
@@ -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
index 0000000..6055e86
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/mappingconfig/MapperConfig.java
@@ -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
index 0000000..14c5a83
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/AdapterService.java
@@ -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
index 0000000..09e2592
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/ConfigFileService.java
@@ -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
index 0000000..0b318eb
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DMaapService.java
@@ -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
index 0000000..c2a30f0
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/DiskRepoConfigFileService.java
@@ -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
index 0000000..bab304a
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/MongoDbConfigFileService.java
@@ -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
index 0000000..81cb4b8
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VesService.java
@@ -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
index 0000000..e94cdf5
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/MapperConfigUtils.java
@@ -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
index 0000000..45fdf96
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/ParallelTasks.java
@@ -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
index 0000000..df36da6
--- /dev/null
+++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/SmooksUtils.java
@@ -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
index 0000000..e39c822
--- /dev/null
+++ b/UniversalVesAdapter/src/main/resources/MapperConfig.json
@@ -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
index 0000000..059dc2e
--- /dev/null
+++ b/UniversalVesAdapter/src/main/resources/MapperConfigFullFormat.json
@@ -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
index 0000000..a0c32b4
--- /dev/null
+++ b/UniversalVesAdapter/src/main/resources/application.properties
@@ -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
index 0000000..6ba59d1
--- /dev/null
+++ b/UniversalVesAdapter/src/main/resources/dme2/consumer.properties
@@ -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
index 0000000..506df76
--- /dev/null
+++ b/UniversalVesAdapter/src/main/resources/dme2/preferredRoute.properties
@@ -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
index 0000000..fb9e639
--- /dev/null
+++ b/UniversalVesAdapter/src/main/resources/dme2/producer.properties
@@ -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
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>