diff options
author | 2019-04-15 20:40:26 +0530 | |
---|---|---|
committer | 2019-04-15 20:40:26 +0530 | |
commit | 8aa9abf52d06288025735d922d6f984c5b30d9e1 (patch) | |
tree | bacb7aaa9e725e13c819d6f1eb33cfe3c9ce33e3 | |
parent | 4cc3807634313eabcb859191108201efc386b7d5 (diff) |
Cloudify blueprint for VES mapper
Adding Cloudify blueprint for VES mapper and some updates on code
Change-Id: Idcbd9ec080717a80d04263a4baa6e4de9ce143c9
Issue-ID: DCAEGEN2-1176
Signed-off-by: Pooja03 <pm00501616@techmahindra.com>
18 files changed, 2748 insertions, 2506 deletions
diff --git a/UniversalVesAdapter/dpo/blueprints/k8s-vesmapper.yaml-template.yaml b/UniversalVesAdapter/dpo/blueprints/k8s-vesmapper.yaml-template.yaml new file mode 100644 index 0000000..6821fa2 --- /dev/null +++ b/UniversalVesAdapter/dpo/blueprints/k8s-vesmapper.yaml-template.yaml @@ -0,0 +1,98 @@ +#
+# ============LICENSE_START====================================================
+# =============================================================================
+# Copyright (c) 2019 TechMahindra. 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======================================================
+
+description: "This blueprint deploys the UniversalVESAdapter(UVA) as a Docker container\n"
+imports:
+ - "http://www.getcloudify.org/spec/cloudify/3.4/types.yaml"
+ - "https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R3/k8splugin/1.4.4/k8splugin_types.yaml"
+inputs:
+ rcc_notification_url:
+ default: "http://message-router.onap.svc.cluster.local:3904/events/unathenticated.DCAE_RCC_OUTPUT"
+ type: string
+ snmp_notification_url:
+ default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.ONAP-COLLECTOR-SNMPTRAP"
+ type: string
+ tag_version:
+ default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.mapper.vesadapter.universalvesadaptor:latest"
+ type: string
+ universal_mapper_name:
+ default: dcaegen2-svc-mapper
+ type: string
+ ves_fault_publish_url:
+ default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.SEC_FAULT_OUTPUT"
+ type: string
+ ves_measurement_publish_url:
+ default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.VES_MEASUREMENT_OUTPUT"
+ type: string
+ ves_notification_publish_url:
+ default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.VES_NOTIFICATION_OUTPUT"
+ type: string
+ ves_pnfRegistration_publish_url:
+ default: "http://message-router.onap.svc.cluster.local:3904/events/unauthenticated.VES_PNFREG_OUTPUT"
+ type: string
+node_templates:
+ universalvesadapter:
+ interfaces:
+ cloudify.interfaces.lifecycle:
+ start:
+ inputs:
+ envs:
+ CONFIG_BINDING_SERVICE: config_binding_service
+ max_wait: 3600
+ ports:
+ - "80:0"
+ properties:
+ application_config:
+ app_preferences:
+ collectors:
+ -
+ identifier: notification-id
+ mapping-files:
+ -
+ defaultMappingFile-rcc-notification: "<?xml version='1.0' encoding='UTF-8'?><smooks-resource-list xmlns='http://www.milyn.org/xsd/smooks-1.1.xsd' xmlns:jb='http://www.milyn.org/xsd/smooks/javabean-1.4.xsd' xmlns:json='http://www.milyn.org/xsd/smooks/json-1.1.xsd'><json:reader rootName='vesevent' keyWhitspaceReplacement='-'><json:keyMap><json:key from='date&time' to='date-and-time' /></json:keyMap></json:reader><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.VesEvent' beanId='vesEvent' createOnElement='vesevent'><jb:wiring property='event' beanIdRef='event' /></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.Event' beanId='event' createOnElement='vesevent'><jb:wiring property='commonEventHeader' beanIdRef='commonEventHeader' /><jb:wiring property='pnfRegistrationFields' beanIdRef='pnfRegistrationFields' /></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader' beanId='commonEventHeader' createOnElement='vesevent'><jb:expression property='version'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Version._4_0_1</jb:expression><jb:expression property='eventType'>'pnfRegistration'</jb:expression><jb:expression property='vesEventListenerVersion'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.VesEventListenerVersion._7_0_1</jb:expression><jb:expression property='eventId' execOnElement='vesevent'>'registration_'+commonEventHeader.ts1</jb:expression><jb:expression property='reportingEntityName'>'VESMapper'</jb:expression><jb:expression property='domain'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Domain.PNF_REGISTRATION</jb:expression><jb:expression property='eventName' execOnElement='vesevent'>commonEventHeader.domain</jb:expression><jb:value property='sequence' data='0' default='0' decoder='Long' /><jb:expression property='lastEpochMicrosec' execOnElement='vesevent'>commonEventHeader.ts1</jb:expression><jb:expression property='startEpochMicrosec' execOnElement='vesevent'>commonEventHeader.ts1</jb:expression><jb:expression property='priority'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Priority.NORMAL</jb:expression><jb:expression property='sourceName' execOnElement='vesevent'>pnfRegistrationFields.vendorName+'-'+pnfRegistrationFields.serialNumber</jb:expression></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields' beanId='pnfRegistrationFields' createOnElement='vesevent'><jb:expression property='pnfRegistrationFieldsVersion'>org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields.PnfRegistrationFieldsVersion._2_0</jb:expression><jb:value property='serialNumber' data='pnfRegistration/serialNumber' /><jb:value property='lastServiceDate' data='pnfRegistration/lastServiceDate' /><jb:value property='manufactureDate' data='pnfRegistration/manufactureDate' /><jb:value property='modelNumber' data='pnfRegistration/modelNumber' /><jb:value property='oamV4IpAddress' data='pnfRegistration/oamV4IpAddress' /><jb:value property='oamV6IpAddress' data='pnfRegistration/oamV6IpAddress' /><jb:value property='softwareVersion' data='pnfRegistration/softwareVersion' /><jb:value property='unitFamily' data='pnfRegistration/unitFamily' /><jb:value property='unitType' data='pnfRegistration/unitType' /><jb:value property='vendorName' data='pnfRegistration/vendorName' /><jb:wiring property='additionalFields' beanIdRef='alarmAdditionalInformation' /></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.AlarmAdditionalInformation' beanId='alarmAdditionalInformation' createOnElement='vesevent'><jb:wiring property='additionalProperties' beanIdRef='additionalFields2' /></jb:bean><jb:bean beanId='additionalFields2' class='java.util.HashMap' createOnElement='vesevent/pnfRegistration/additionalFields'><jb:value data='pnfRegistration/additionalFields/*'/></jb:bean></smooks-resource-list>"
+ stream_publisher: ves-pnfRegistration
+ stream_subscriber: rcc-notification
+ streams_publishes:
+ ves-fault:
+ dmaap_info:
+ topic_url:
+ get_input: ves_fault_publish_url
+ type: message_router
+ ves-pnfRegistration:
+ dmaap_info:
+ topic_url:
+ get_input: ves_pnfRegistration_publish_url
+ type: message_router
+ streams_subscribes:
+ rcc-notification:
+ dmaap_info:
+ topic_url:
+ get_input: rcc_notification_url
+ type: message_router
+ snmp-notification:
+ dmaap_info:
+ topic_url:
+ get_input: snmp_notification_url
+ type: message_router
+ docker_config: {}
+ image:
+ get_input: tag_version
+ service_component_type:
+ get_input: universal_mapper_name
+ type: dcae.nodes.ContainerizedServiceComponent
+tosca_definitions_version: cloudify_dsl_1_3
diff --git a/UniversalVesAdapter/kv.json b/UniversalVesAdapter/kv.json deleted file mode 100644 index 9e245d1..0000000 --- a/UniversalVesAdapter/kv.json +++ /dev/null @@ -1,24 +0,0 @@ -{
- "app_preferences":{
- "collectors":[
- {
- "identifier":"notification-id",
- "subscriberTopic":"ONAP-COLLECTOR-RESTCONFTRAP",
- "mapping-files":[
- {
- "defaultMappingFile-ONAP-COLLECTOR-RESTCONFTRAP":"<?xml version='1.0' encoding='UTF-8'?><smooks-resource-list xmlns='http://www.milyn.org/xsd/smooks-1.1.xsd' xmlns:jb='http://www.milyn.org/xsd/smooks/javabean-1.4.xsd' xmlns:json='http://www.milyn.org/xsd/smooks/json-1.1.xsd'><json:reader rootName='vesevent' keyWhitspaceReplacement='-'><json:keyMap><json:key from='date&time' to='date-and-time' /><\/json:keyMap><\/json:reader><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.VesEvent' beanId='vesEvent' createOnElement='vesevent'><jb:wiring property='event' beanIdRef='event' /><\/jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.Event' beanId='event' createOnElement='vesevent'><jb:wiring property='commonEventHeader' beanIdRef='commonEventHeader' /><jb:wiring property='pnfRegistrationFields' beanIdRef='pnfRegistrationFields' /><\/jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader' beanId='commonEventHeader' createOnElement='vesevent'><jb:expression property='version'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Version._4_0_1<\/jb:expression><jb:expression property='eventType'>'pnfRegistration'<\/jb:expression><jb:expression property='vesEventListenerVersion'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.VesEventListenerVersion._7_0_1<\/jb:expression><jb:expression property='eventId' execOnElement='vesevent'>'registration_'+commonEventHeader.ts1<\/jb:expression><jb:expression property='reportingEntityName'>'VESMapper'<\/jb:expression><jb:expression property='domain'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Domain.PNF_REGISTRATION<\/jb:expression><jb:expression property='eventName' execOnElement='vesevent'>commonEventHeader.domain<\/jb:expression><jb:value property='sequence' data='0' default='0' decoder='Long' /><jb:expression property='lastEpochMicrosec' execOnElement='vesevent'>commonEventHeader.ts1<\/jb:expression><jb:expression property='startEpochMicrosec' execOnElement='vesevent'>commonEventHeader.ts1<\/jb:expression><jb:expression property='priority'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Priority.NORMAL<\/jb:expression><jb:value property='sourceName' data='notification/message/target' /><\/jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields' beanId='pnfRegistrationFields' createOnElement='vesevent'><jb:expression property='pnfRegistrationFieldsVersion'>org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields.PnfRegistrationFieldsVersion._2_0<\/jb:expression><jb:value property='serialNumber' data='notification/message/content/onu/sn' /><\/jb:bean><\/smooks-resource-list>"
- }
- ]
- },
- {
- "identifier":"notify OID",
- "subscriberTopic":"ONAP-COLLECTOR-SNMPTRAP",
- "mapping-files":[
- {
- "defaultMappingFile-ONAP-COLLECTOR-SNMPTRAP":"<?xml version='1.0' encoding='UTF-8'?><smooks-resource-list xmlns='http://www.milyn.org/xsd/smooks-1.1.xsd' xmlns:jb='http://www.milyn.org/xsd/smooks/javabean-1.4.xsd' xmlns:json='http://www.milyn.org/xsd/smooks/json-1.1.xsd'><json:reader rootName='vesevent' keyWhitspaceReplacement='-'><json:keyMap><json:key from='date&time' to='date-and-time' /></json:keyMap></json:reader><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.VesEvent' beanId='vesEvent' createOnElement='vesevent'><jb:wiring property='event' beanIdRef='event' /></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.Event' beanId='event' createOnElement='vesevent'><jb:wiring property='commonEventHeader' beanIdRef='commonEventHeader' /><jb:wiring property='faultFields' beanIdRef='faultFields'/></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader' beanId='commonEventHeader' createOnElement='vesevent'><jb:expression property='version'>'3.0'</jb:expression><jb:expression property='eventType'>'FaultField'</jb:expression><jb:expression property='eventId' execOnElement='vesevent'>'XXXX'</jb:expression><jb:expression property='reportingEntityName'>'VESMapper'</jb:expression><jb:expression property='domain'>org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader.Domain.FAULT</jb:expression><jb:expression property='eventName' execOnElement='vesevent'>commonEventHeader.domain</jb:expression><jb:value property='sequence' data='0' default='0' decoder='Long' /><jb:value property='lastEpochMicrosec' data='#/time-received' /><jb:value property='startEpochMicrosec' data='#/time-received' /><jb:expression property='priority'>org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader.Priority.NORMAL</jb:expression><jb:expression property='sourceName'>'VesAdapter'</jb:expression></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.FaultFields' beanId='faultFields' createOnElement='vesevent'><jb:value property='faultFieldsVersion' data='2.0' default='2.0' decoder='Double' /><jb:value property='alarmCondition' data='#/trap-category' /><jb:expression property='specificProblem'>'SNMP Fault'</jb:expression><jb:expression property='vfStatus'>org.onap.dcaegen2.ves.domain.ves54.FaultFields.VfStatus.ACTIVE</jb:expression><jb:expression property='eventSeverity'>org.onap.dcaegen2.ves.domain.ves54.FaultFields.EventSeverity.MINOR</jb:expression><jb:wiring property='alarmAdditionalInformation' beanIdRef='alarmAdditionalInformationroot'/></jb:bean><jb:bean class='java.util.ArrayList' beanId='alarmAdditionalInformationroot' createOnElement='vesevent'><jb:wiring beanIdRef='alarmAdditionalInformation'/></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.AlarmAdditionalInformation' beanId='alarmAdditionalInformation' createOnElement='varbinds/element'><jb:value property='name' data='#/varbind_oid'/><jb:value property='value' data='#/varbind_value' /></jb:bean></smooks-resource-list>"
- }
- ]
- }
- ]
- }
-}
\ No newline at end of file diff --git a/UniversalVesAdapter/pom.xml b/UniversalVesAdapter/pom.xml index 3be31a3..8ef49c7 100644 --- a/UniversalVesAdapter/pom.xml +++ b/UniversalVesAdapter/pom.xml @@ -1,467 +1,467 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -* ============LICENSE_START======================================================= -* ONAP : DCAEGEN2 -* ================================================================================ -* Copyright 2018-2019 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========================================================= - --> -<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>1.0.0-SNAPSHOT</version> - - - <parent> - <groupId>org.onap.dcaegen2.services.mapper</groupId> - <artifactId>mapper</artifactId> - <version>1.0.0-SNAPSHOT</version> - </parent> - - <properties> - - <!-- PROJECT SETTINGS --> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> - <java.version>8</java.version> - <docker.image.name>onap/org.onap.dcaegen2.services.mapper.vesadapter.universalvesadaptor</docker.image.name> - - <!-- PLUGIN SETTINGS --> - <dependency.locations.enabled>false</dependency.locations.enabled> - - <!-- NEXUS RELATED SETTINGS --> - <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> - <maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format> - - </properties> - <dependencies> - <!-- Junit, Mockito, PowerMock --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.12</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <version>2.0.5-beta</version> - <scope>test</scope> -</dependency> - - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-api-mockito</artifactId> - <version>1.6.2</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.powermock</groupId> - <artifactId>powermock-module-junit4</artifactId> - <version>1.6.2</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.javassist</groupId> - <artifactId>javassist</artifactId> - <version>3.18.2-GA</version> - </dependency> - <dependency> - <groupId>com.googlecode.json-simple</groupId> - <artifactId>json-simple</artifactId> - <version>1.1.1</version> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </dependency> - <dependency> - <groupId>commons-configuration</groupId> - <artifactId>commons-configuration</artifactId> - <version>1.10</version> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - <version>2.8.5</version> - </dependency> - <dependency> - <groupId>com.google.inject</groupId> - <artifactId>guice</artifactId> - <version>4.2.0</version> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - <version>3.5</version> - </dependency> - <dependency> - <groupId>com.google.inject.extensions</groupId> - <artifactId>guice-assistedinject</artifactId> - <version>4.2.0</version> - </dependency> - <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> - <exclusion> - <groupId>ognl</groupId> - <artifactId>ognl</artifactId> - </exclusion> - <exclusion> - <groupId>javax.jms</groupId> - <artifactId>jms</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>ognl</groupId> - <artifactId>ognl</artifactId> - <version>3.1.12</version> - </dependency> - <dependency> - <groupId>org.onap.dmaap.messagerouter.dmaapclient</groupId> - <artifactId>dmaapClient</artifactId> - <version>1.1.3</version> - <exclusions> - <exclusion> - <groupId>javax.jms</groupId> - <artifactId>jms</artifactId> - </exclusion> - </exclusions> - </dependency> - <!-- Database dependency --> - <dependency> - <groupId>org.postgresql</groupId> - <artifactId>postgresql</artifactId> - <version>42.2.5</version> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-jdbc</artifactId> - <version>5.1.3.RELEASE</version> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - <version>2.1.1.RELEASE</version> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-test</artifactId> - <version>2.1.1.RELEASE</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.springframework.data</groupId> - <artifactId>spring-data-commons</artifactId> - <version>2.1.3.RELEASE</version> - </dependency> - <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>1.7.25</version> - </dependency> - <dependency> - <groupId>org.codehaus.groovy</groupId> - <artifactId>groovy-all</artifactId> - <version>2.4.14</version> - </dependency> - <dependency> - <groupId>com.jayway.jsonpath</groupId> - <artifactId>json-path</artifactId> - <version>2.4.0</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-databind</artifactId> - <version>2.9.7</version> - </dependency> - <dependency> - <groupId>hsqldb</groupId> - <artifactId>hsqldb</artifactId> - <version>1.8.0.10</version> - <scope>test</scope> - </dependency> - <!-- https://mvnrepository.com/artifact/xalan/xalan --> - <dependency> - <groupId>xalan</groupId> - <artifactId>xalan</artifactId> - <version>2.7.2</version> - </dependency> - <!-- https://mvnrepository.com/artifact/xerces/xercesImpl --> - <dependency> - <groupId>xerces</groupId> - <artifactId>xercesImpl</artifactId> - <version>2.12.0</version> - </dependency> - <!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream --> - <dependency> - <groupId>com.thoughtworks.xstream</groupId> - <artifactId>xstream</artifactId> - <version>1.4.10</version> - </dependency> - <!-- https://mvnrepository.com/artifact/xml-apis/xml-apis --> - <dependency> - <groupId>xml-apis</groupId> - <artifactId>xml-apis</artifactId> - <version>1.4.01</version> - </dependency> - <!-- http client --> - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> - <version>${httpclient.version}</version> - <scope>compile</scope> - </dependency> - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpmime</artifactId> - <version>${httpclient.version}</version> - <scope>compile</scope> - </dependency> - <!-- <dependency> <groupId>org.onap.aai.event-client</groupId> <artifactId>event-client-dmaap</artifactId> - <version>1.2.0</version> </dependency> --> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-configuration-processor</artifactId> - <optional>true</optional> - <version>2.1.1.RELEASE</version> - </dependency> - </dependencies> - - <build> - <pluginManagement> - <plugins> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <version>3.1.0</version> - </plugin> - <plugin> - <groupId>com.spotify</groupId> - <artifactId>docker-maven-plugin</artifactId> - <version>1.0.0</version> - </plugin> - </plugins> - </pluginManagement> - <plugins> - <!-- <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <configuration> - <reuseForks>false</reuseForks> - <forkCount>1</forkCount> - </configuration> - </plugin> --> - - - - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <descriptors> - <descriptor>src/assembly/dep.xml</descriptor> - </descriptors> - <attach>false</attach> - <appendAssemblyId>false</appendAssemblyId> - <updateOnly>true</updateOnly> - </configuration> - <executions> - <execution> - <id>make-assembly</id> - <phase>package</phase> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - </plugin> - <plugin> - <groupId>com.spotify</groupId> - <artifactId>docker-maven-plugin</artifactId> - <version>1.0.0</version> - <configuration> - <skipDockerBuild>false</skipDockerBuild> - <serverId>${onap.nexus.dockerregistry.daily}</serverId> - <imageName>${onap.nexus.dockerregistry.daily}/${docker.image.name}</imageName> - <imageTags> - <tag>latest</tag> - <tag>${project.version}-${maven.build.timestamp}Z</tag> - <tag>${project.version}</tag> - </imageTags> - <baseImage>ubuntu:16.04</baseImage> - <env> - <HOSTALIASES>/etc/host.aliases</HOSTALIASES> - </env> - <workdir>/opt/app/VESAdapter</workdir> - <resources> - <resource> - <targetPath>.</targetPath> - <directory>${project.build.directory}/${project.artifactId}-${project.version}</directory> - </resource> - </resources> - <runs> - <run>chmod +x bin/run.sh</run> - <run> - <![CDATA[apt-get update && apt-get install -y curl && apt-get install -y openjdk-8-jdk && apt-get install -y vim && apt-get clean all]]> - </run> - </runs> - <exposes> - <expose>8080</expose> - <expose>8443</expose> - </exposes> - <entryPoint>bin/run.sh</entryPoint> - - </configuration> - <!--<executions> - <execution> - <id>build-image</id> - <phase>package</phase> - <goals> - <goal>build</goal> - </goals> - </execution> - <execution> - <id>tag-and-push-image-latest</id> - <phase>deploy</phase> - <goals> - <goal>tag</goal> - </goals> - <configuration> - <image>${docker.image.name}:latest</image> - <newName>${onap.nexus.dockerregistry.daily}/${docker.image.name}:latest</newName> - <pushImage>true</pushImage> - </configuration> - </execution> - <execution> - <id>tag-and-push-image-with-version</id> - <phase>deploy</phase> - <goals> - <goal>tag</goal> - </goals> - <configuration> - <image>${docker.image.name}:latest</image> - <newName>${onap.nexus.dockerregistry.daily}/${docker.image.name}:${project.version} - </newName> - <pushImage>true</pushImage> - </configuration> - </execution> - <execution> - <id>tag-and-push-image-with-version-and-date</id> - <phase>deploy</phase> - <goals> - <goal>tag</goal> - </goals> - <configuration> - <image>${docker.image.name}:latest</image> - <newName> - ${onap.nexus.dockerregistry.daily}/${docker.image.name}:${project.version}-${maven.build.timestamp}Z - </newName> - <pushImage>true</pushImage> - </configuration> - </execution> - </executions>--> - </plugin> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <version>2.1.1.RELEASE</version> - <executions> - <execution> - <goals> - <goal>repackage</goal> - </goals> - <configuration> - <mainClass>org.onap.universalvesadapter.Application</mainClass> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <version>1.9.1</version> - <executions> - <execution> - <id>add-source</id> - <phase>generate-sources</phase> - <goals> - <goal>add-source</goal> - </goals> - <configuration> - <sources> - <source>src/gen/java</source> - </sources> - </configuration> - </execution> - <!-- <execution> <id>regex-property</id> <goals> <goal>regex-property</goal> - </goals> <configuration> <name>docker.version</name> <value>${project.version}</value> - <regex>(^[0-9]+.[0-9]+.[0-9]+$)</regex> <replacement>$1-STAGING</replacement> - <failIfNoMatch>false</failIfNoMatch> </configuration> </execution> --> - </executions> - </plugin> - </plugins> - <!-- <finalName>UniversalVesAdapter</finalName> --> - </build> - - <profiles> - <profile> - <id>with-system-proxy</id> - <build> - <plugins> - <plugin> - <groupId>com.spotify</groupId> - <artifactId>docker-maven-plugin</artifactId> - <configuration> - <buildArgs> - <http_proxy>${env.http_proxy}</http_proxy> - </buildArgs> - </configuration> - </plugin> - </plugins> - </build> - </profile> - </profiles> - - - <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> +<?xml version="1.0" encoding="UTF-8"?>
+<!--
+* ============LICENSE_START=======================================================
+* ONAP : DCAEGEN2
+* ================================================================================
+* Copyright 2018-2019 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=========================================================
+ -->
+<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>1.0.0-SNAPSHOT</version>
+
+
+ <parent>
+ <groupId>org.onap.dcaegen2.services.mapper</groupId>
+ <artifactId>mapper</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <properties>
+
+ <!-- PROJECT SETTINGS -->
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <java.version>8</java.version>
+ <docker.image.name>onap/org.onap.dcaegen2.services.mapper.vesadapter.universalvesadaptor</docker.image.name>
+
+ <!-- PLUGIN SETTINGS -->
+ <dependency.locations.enabled>false</dependency.locations.enabled>
+
+ <!-- NEXUS RELATED SETTINGS -->
+ <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>
+ <maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format>
+
+ </properties>
+ <dependencies>
+ <!-- Junit, Mockito, PowerMock -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>2.0.5-beta</version>
+ <scope>test</scope>
+</dependency>
+
+ <dependency>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-api-mockito</artifactId>
+ <version>1.6.2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-module-junit4</artifactId>
+ <version>1.6.2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.javassist</groupId>
+ <artifactId>javassist</artifactId>
+ <version>3.18.2-GA</version>
+ </dependency>
+ <dependency>
+ <groupId>com.googlecode.json-simple</groupId>
+ <artifactId>json-simple</artifactId>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-configuration</groupId>
+ <artifactId>commons-configuration</artifactId>
+ <version>1.10</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.8.5</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ <version>4.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <version>3.5</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject.extensions</groupId>
+ <artifactId>guice-assistedinject</artifactId>
+ <version>4.2.0</version>
+ </dependency>
+ <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>
+ <exclusion>
+ <groupId>ognl</groupId>
+ <artifactId>ognl</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>javax.jms</groupId>
+ <artifactId>jms</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>ognl</groupId>
+ <artifactId>ognl</artifactId>
+ <version>3.1.12</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.dmaap.messagerouter.dmaapclient</groupId>
+ <artifactId>dmaapClient</artifactId>
+ <version>1.1.3</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.jms</groupId>
+ <artifactId>jms</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!-- Database dependency -->
+ <dependency>
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <version>42.2.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <version>5.1.3.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>2.1.1.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <version>2.1.1.RELEASE</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.data</groupId>
+ <artifactId>spring-data-commons</artifactId>
+ <version>2.1.3.RELEASE</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.7.25</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-all</artifactId>
+ <version>2.4.14</version>
+ </dependency>
+ <dependency>
+ <groupId>com.jayway.jsonpath</groupId>
+ <artifactId>json-path</artifactId>
+ <version>2.4.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.9.7</version>
+ </dependency>
+ <dependency>
+ <groupId>hsqldb</groupId>
+ <artifactId>hsqldb</artifactId>
+ <version>1.8.0.10</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/xalan/xalan -->
+ <dependency>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
+ <version>2.7.2</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.12.0</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
+ <dependency>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.4.10</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/xml-apis/xml-apis -->
+ <dependency>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ <version>1.4.01</version>
+ </dependency>
+ <!-- http client -->
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>${httpclient.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpmime</artifactId>
+ <version>${httpclient.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- <dependency> <groupId>org.onap.aai.event-client</groupId> <artifactId>event-client-dmaap</artifactId>
+ <version>1.2.0</version> </dependency> -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-configuration-processor</artifactId>
+ <optional>true</optional>
+ <version>2.1.1.RELEASE</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>3.1.0</version>
+ </plugin>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <version>1.0.0</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <!-- <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <reuseForks>false</reuseForks>
+ <forkCount>1</forkCount>
+ </configuration>
+ </plugin> -->
+
+
+
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptors>
+ <descriptor>src/assembly/dep.xml</descriptor>
+ </descriptors>
+ <attach>false</attach>
+ <appendAssemblyId>false</appendAssemblyId>
+ <updateOnly>true</updateOnly>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <skipDockerBuild>false</skipDockerBuild>
+ <serverId>${onap.nexus.dockerregistry.daily}</serverId>
+ <imageName>${onap.nexus.dockerregistry.daily}/${docker.image.name}</imageName>
+ <imageTags>
+ <tag>latest</tag>
+ <tag>${project.version}-${maven.build.timestamp}Z</tag>
+ <tag>${project.version}</tag>
+ </imageTags>
+ <baseImage>ubuntu:16.04</baseImage>
+ <env>
+ <HOSTALIASES>/etc/host.aliases</HOSTALIASES>
+ </env>
+ <workdir>/opt/app/VESAdapter</workdir>
+ <resources>
+ <resource>
+ <targetPath>.</targetPath>
+ <directory>${project.build.directory}/${project.artifactId}-${project.version}</directory>
+ </resource>
+ </resources>
+ <runs>
+ <run>chmod +x bin/run.sh</run>
+ <run>
+ <![CDATA[apt-get update && apt-get install -y curl && apt-get install -y openjdk-8-jdk && apt-get install -y vim && apt-get clean all]]>
+ </run>
+ </runs>
+ <exposes>
+ <expose>8080</expose>
+ <expose>8443</expose>
+ </exposes>
+ <entryPoint>bin/run.sh</entryPoint>
+
+ </configuration>
+ <!--<executions>
+ <execution>
+ <id>build-image</id>
+ <phase>package</phase>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>tag-and-push-image-latest</id>
+ <phase>deploy</phase>
+ <goals>
+ <goal>tag</goal>
+ </goals>
+ <configuration>
+ <image>${docker.image.name}:latest</image>
+ <newName>${onap.nexus.dockerregistry.daily}/${docker.image.name}:latest</newName>
+ <pushImage>true</pushImage>
+ </configuration>
+ </execution>
+ <execution>
+ <id>tag-and-push-image-with-version</id>
+ <phase>deploy</phase>
+ <goals>
+ <goal>tag</goal>
+ </goals>
+ <configuration>
+ <image>${docker.image.name}:latest</image>
+ <newName>${onap.nexus.dockerregistry.daily}/${docker.image.name}:${project.version}
+ </newName>
+ <pushImage>true</pushImage>
+ </configuration>
+ </execution>
+ <execution>
+ <id>tag-and-push-image-with-version-and-date</id>
+ <phase>deploy</phase>
+ <goals>
+ <goal>tag</goal>
+ </goals>
+ <configuration>
+ <image>${docker.image.name}:latest</image>
+ <newName>
+ ${onap.nexus.dockerregistry.daily}/${docker.image.name}:${project.version}-${maven.build.timestamp}Z
+ </newName>
+ <pushImage>true</pushImage>
+ </configuration>
+ </execution>
+ </executions>-->
+ </plugin>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>2.1.1.RELEASE</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ <configuration>
+ <mainClass>org.onap.universalvesadapter.Application</mainClass>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.9.1</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>src/gen/java</source>
+ </sources>
+ </configuration>
+ </execution>
+ <!-- <execution> <id>regex-property</id> <goals> <goal>regex-property</goal>
+ </goals> <configuration> <name>docker.version</name> <value>${project.version}</value>
+ <regex>(^[0-9]+.[0-9]+.[0-9]+$)</regex> <replacement>$1-STAGING</replacement>
+ <failIfNoMatch>false</failIfNoMatch> </configuration> </execution> -->
+ </executions>
+ </plugin>
+ </plugins>
+ <!-- <finalName>UniversalVesAdapter</finalName> -->
+ </build>
+
+ <profiles>
+ <profile>
+ <id>with-system-proxy</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <configuration>
+ <buildArgs>
+ <http_proxy>${env.http_proxy}</http_proxy>
+ </buildArgs>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+
+ <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/ves70/AlarmAdditionalInformation.java b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/ves70/AlarmAdditionalInformation.java index afc63f8..b4760fd 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/ves70/AlarmAdditionalInformation.java +++ b/UniversalVesAdapter/src/main/java/org/onap/dcaegen2/ves/domain/ves70/AlarmAdditionalInformation.java @@ -58,6 +58,11 @@ public class AlarmAdditionalInformation { public void setAdditionalProperty(String name, String value) {
this.additionalProperties.put(name, value);
}
+ @JsonAnySetter
+ public void setAdditionalProperties(Map<String, String> h) {
+ this.additionalProperties =h;
+ }
+
@Override
public int hashCode() {
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/UniversalEventAdapter.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/UniversalEventAdapter.java index 09e85a0..483b19b 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/UniversalEventAdapter.java +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/adapter/UniversalEventAdapter.java @@ -1,22 +1,23 @@ -/*
-* ============LICENSE_START=======================================================
-* ONAP : DCAE
-* ================================================================================
-* Copyright 2018-2019 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=========================================================
-*/
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : DCAE
+ * ================================================================================
+ * Copyright 2018-2019 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;
@@ -29,7 +30,6 @@ import java.util.concurrent.ConcurrentHashMap; import javax.annotation.PreDestroy;
import org.milyn.Smooks;
-import org.onap.dcaegen2.ves.domain.ves70.VesEvent;
import org.onap.universalvesadapter.exception.ConfigFileSmooksConversionException;
import org.onap.universalvesadapter.exception.VesException;
import org.onap.universalvesadapter.service.VESAdapterInitializer;
@@ -58,128 +58,143 @@ import com.google.gson.JsonSyntaxException; @Component
public class UniversalEventAdapter implements GenericAdapter {
- private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger");
- private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
-
- @Value("${defaultConfigFilelocation}")
- private String defaultConfigFilelocation;
- private String collectorIdentifierValue;
- private String collectorIdentifierKey;
- private Map<String, Smooks> eventToSmooksMapping = new ConcurrentHashMap<>();
-
- public UniversalEventAdapter() {
-
- }
-
- /**
- * transforms JSON to VES format and and returns the ves Event
- *
- * @param IncomingJason,eventType
- * @return ves Event
- */
- @Override
- public String transform(String incomingJsonString)
- throws ConfigFileSmooksConversionException, VesException {
- String result = "";
- String configFileData;
-
- String identifier[]= CollectorConfigPropertyRetrival.getProperyArray("identifier",defaultConfigFilelocation );
- String defaultMappingFile="defaultMappingFile-"+Thread.currentThread().getName();
- try {
-
- Gson gson = new Gson();
- JsonObject body = gson.fromJson(incomingJsonString, JsonObject.class);
-
- JsonElement results;
- for(int i=0;i<identifier.length;i++)
- {
- JsonObject obj;
- if((obj=keyObject(body,identifier[i])).has(identifier[i]))
- {
- collectorIdentifierKey=identifier[i];
- results=obj.get(identifier[i]);
- collectorIdentifierValue=results.getAsString();
-
- }
-
- }
- //collectorIdentifierValue = collectorIdentifierValue.substring(0, collectorIdentifierValue.length() - 4);
- if(collectorIdentifierKey.equals("notify OID"))
- {
- collectorIdentifierValue = collectorIdentifierValue.substring(0, collectorIdentifierValue.length() - 4);
- }
-
-
- if (VESAdapterInitializer.getMappingFiles().containsKey(collectorIdentifierValue)) {
- configFileData = VESAdapterInitializer.getMappingFiles().get(collectorIdentifierValue);
- debugLogger.debug("Using Mapping file as Mapping file is available for collector identifier:{}",collectorIdentifierValue);
-
- } else {
-
- configFileData = VESAdapterInitializer.getMappingFiles().get(defaultMappingFile);
-
- debugLogger.debug("Using Default Mapping file as Mapping file is not available for Enterprise Id:{}",collectorIdentifierValue);
- }
-
- Smooks smooksTemp = new Smooks(new ByteArrayInputStream(configFileData.getBytes(StandardCharsets.UTF_8)));
- eventToSmooksMapping.put(collectorIdentifierKey, smooksTemp);
-
- Object vesEvent = SmooksUtils.getTransformedObjectForInput(smooksTemp,incomingJsonString);
- debugLogger.info("Incoming json transformed to VES format successfully:"+Thread.currentThread().getName());
- ObjectMapper objectMapper = new ObjectMapper();
- result = objectMapper.writeValueAsString(vesEvent);
- debugLogger.info("Serialized VES json");
- } catch (JsonProcessingException exception) {
- throw new VesException("Unable to convert pojo to VES format, Reason :{}", exception);
- } catch (SAXException | IOException exception) {
- //Invalid Mapping file
- exception.printStackTrace();
- errorLogger.error("Dropping this Trap :{},Reason:{}", incomingJsonString, exception.getMessage());
-
- } catch (JsonSyntaxException exception) {
- // Invalid Trap
- errorLogger.error("Dropping this Invalid json Trap :{}, Reason:{}", incomingJsonString, exception);
- }catch (JsonParseException exception) {
- // Invalid Trap
- errorLogger.error("Dropping this Invalid json Trap :{}, Reason:{}", incomingJsonString, exception);
- }
- catch (RuntimeException exception) {
-
- exception.printStackTrace();
- errorLogger.error("Dropping this Trap :{},Reason:{}", incomingJsonString, exception.getMessage());
-
- }
- return result;
- }
-
- /**
- * Closes all open smooks' instances before bean is destroyed
- */
- @PreDestroy
- public void destroy() {
- for (Smooks smooks : eventToSmooksMapping.values())
- smooks.close();
- debugLogger.warn("All Smooks objects closed");
- }
-
- public JsonObject keyObject(JsonObject object, String searchedKey) {
- boolean exists = object.has(searchedKey);
- JsonObject jsonObject = object;
-
- if(!exists) {
- Iterator<?> keys = object.keySet().iterator();
- while( keys.hasNext() ) {
- String key = (String)keys.next();
- if ( object.get(key) instanceof JsonObject ) {
-
- jsonObject=(JsonObject) object.get(key);
- JsonObject obj = keyObject(jsonObject, searchedKey);
- exists = obj.has(searchedKey);
- }
- }
- }
-
- return jsonObject;
- }
-
+ private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger");
+ private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
+
+ @Value("${defaultConfigFilelocation}")
+ private String defaultConfigFilelocation;
+ private String collectorIdentifierValue;
+ private String collectorIdentifierKey;
+ private Map<String, Smooks> eventToSmooksMapping = new ConcurrentHashMap<>();
+
+ public UniversalEventAdapter() {
+
+ }
+
+ /**
+ * transforms JSON to VES format and and returns the ves Event
+ *
+ * @param IncomingJason,eventType
+ * @return ves Event
+ */
+ @Override
+ public String transform(String incomingJsonString)
+ throws ConfigFileSmooksConversionException, VesException {
+ String result = "";
+ String configFileData;
+
+ String identifier[] = CollectorConfigPropertyRetrival.getProperyArray("identifier",
+ defaultConfigFilelocation);
+ String defaultMappingFile =
+ "defaultMappingFile-" + Thread.currentThread().getName();
+ try {
+
+ Gson gson = new Gson();
+ JsonObject body = gson.fromJson(incomingJsonString, JsonObject.class);
+
+ JsonElement results;
+ for (int i = 0; i < identifier.length; i++) {
+ JsonObject obj;
+ if ((obj = keyObject(body, identifier[i])).has(identifier[i])) {
+ collectorIdentifierKey = identifier[i];
+ results = obj.get(identifier[i]);
+ collectorIdentifierValue = results.getAsString();
+
+ }
+
+ }
+ // collectorIdentifierValue = collectorIdentifierValue.substring(0,
+ // collectorIdentifierValue.length() - 4);
+ if (collectorIdentifierKey.equals("notify OID")) {
+ collectorIdentifierValue = collectorIdentifierValue.substring(0,
+ collectorIdentifierValue.length() - 4);
+ }
+
+
+ if (VESAdapterInitializer.getMappingFiles()
+ .containsKey(collectorIdentifierValue)) {
+ configFileData = VESAdapterInitializer.getMappingFiles()
+ .get(collectorIdentifierValue);
+ debugLogger.debug(
+ "Using Mapping file as Mapping file is available for collector identifier:{}",
+ collectorIdentifierValue);
+
+ } else {
+
+ configFileData = VESAdapterInitializer.getMappingFiles()
+ .get(defaultMappingFile);
+
+ debugLogger.debug(
+ "Using Default Mapping file as Mapping file is not available for Enterprise Id / identifer ID:{}",
+ collectorIdentifierValue);
+ }
+
+ Smooks smooksTemp = new Smooks(new ByteArrayInputStream(
+ configFileData.getBytes(StandardCharsets.UTF_8)));
+ eventToSmooksMapping.put(collectorIdentifierKey, smooksTemp);
+
+ Object vesEvent = SmooksUtils.getTransformedObjectForInput(smooksTemp,
+ incomingJsonString);
+ debugLogger.info("Incoming json transformed to VES format successfully:"
+ + Thread.currentThread().getName());
+ ObjectMapper objectMapper = new ObjectMapper();
+ result = objectMapper.writeValueAsString(vesEvent);
+ debugLogger.info("Serialized VES json");
+ } catch (JsonProcessingException exception) {
+ throw new VesException("Unable to convert pojo to VES format, Reason :{}",
+ exception);
+ } catch (SAXException | IOException exception) {
+ // Invalid Mapping file
+ exception.printStackTrace();
+ errorLogger.error("Dropping this Trap :{},Reason:{}", incomingJsonString,
+ exception.getMessage());
+
+ } catch (JsonSyntaxException exception) {
+ // Invalid Trap
+ errorLogger.error("Dropping this Invalid json Trap :{}, Reason:{}",
+ incomingJsonString, exception);
+ } catch (JsonParseException exception) {
+ // Invalid Trap
+ errorLogger.error("Dropping this Invalid json Trap :{}, Reason:{}",
+ incomingJsonString, exception);
+ } catch (RuntimeException exception) {
+
+ exception.printStackTrace();
+ errorLogger.error("Dropping this Trap :{},Reason:{}", incomingJsonString,
+ exception.getMessage());
+
+ }
+ return result;
+ }
+
+ /**
+ * Closes all open smooks' instances before bean is destroyed
+ */
+ @PreDestroy
+ public void destroy() {
+ for (Smooks smooks : eventToSmooksMapping.values())
+ smooks.close();
+ debugLogger.warn("All Smooks objects closed");
+ }
+
+ public JsonObject keyObject(JsonObject object, String searchedKey) {
+ boolean exists = object.has(searchedKey);
+ JsonObject jsonObject = object;
+
+ if (!exists) {
+ Iterator<?> keys = object.keySet().iterator();
+ while (keys.hasNext()) {
+ String key = (String) keys.next();
+ if (object.get(key) instanceof JsonObject) {
+
+ jsonObject = (JsonObject) object.get(key);
+ JsonObject obj = keyObject(jsonObject, searchedKey);
+ exists = obj.has(searchedKey);
+ }
+ }
+ }
+
+ return jsonObject;
+ }
+
}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaaPMRPublisherConfig.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaaPMRPublisherConfig.java index 137e3af..4b15f55 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaaPMRPublisherConfig.java +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaaPMRPublisherConfig.java @@ -1,252 +1,253 @@ -/* - * ===============================LICENSE_START====================================== - * dcae-analytics - * ================================================================================ - * 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=========================================== - */ - - -//TO-DO Lisence Issue ASK to Kedar??????????? -package org.onap.universalvesadapter.configs; - -import java.io.IOException; -import javax.annotation.Nonnull; -import org.onap.universalvesadapter.utils.DmaapConfig; -import com.att.aft.dme2.internal.springframework.context.annotation.ComponentScan; -import com.google.common.base.Objects; - -/** - * <p> - * Immutable DMaaP MR Configuration for DMaaP MR Publisher. - * <p> - * Use {@link DMaaPMRPublisherConfig.Builder} to construct Subscriber - * Configuration - * </p> - * <p> - * - * @author Rajiv Singla . Creation Date: 10/12/2016. - * - */ -@ComponentScan -public class DMaaPMRPublisherConfig extends DMaaPMRBaseConfig { - - - /** - * Publisher batching queue size - */ - private int maxBatchSize; - - /** - * Publisher Recovery Queue Size - */ - private int maxRecoveryQueueSize; - - /** - * Default uri path prefix - */ - private String dmaapUriPathPrefix ; - - private DMaaPMRPublisherConfig(Builder builder) { - this.hostName = builder.hostName; - this.portNumber = builder.portNumber; - this.topicName = builder.topicName; - this.protocol = builder.protocol; - this.userName = builder.userName; - this.userPassword = builder.userPassword; - this.contentType = builder.contentType; - this.maxBatchSize = builder.maxBatchSize; - this.maxRecoveryQueueSize = builder.maxRecoveryQueueSize; - this.dmaapUriPathPrefix = builder.dmaapUriPathPrefix; - } - - /** - * Builder to initialize immutable {@link DMaaPMRPublisherConfig} object - */ - public static class Builder { - - private String hostName; - private Integer portNumber; - private String topicName; - private String userName; - private String userPassword; - private String protocol; - private String contentType; - private int maxBatchSize; - private int maxRecoveryQueueSize; - private String dmaapUriPathPrefix ; - - - - public Builder(@Nonnull String hostName, @Nonnull String topicName, DmaapConfig dmaapConfig) throws IOException { - this.hostName = hostName; - this.topicName = topicName; - // Default values - this.portNumber = dmaapConfig.getDEFAULT_PORT_NUMBER(); - this.userName = dmaapConfig.getDEFAULT_USER_NAME(); - this.userPassword = dmaapConfig.getDEFAULT_USER_PASSWORD(); - this.protocol =dmaapConfig.getDEFAULT_PROTOCOL(); - this.contentType = dmaapConfig.getDEFAULT_CONTENT_TYPE(); - - this.maxBatchSize =dmaapConfig.getPublisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE(); - this.maxRecoveryQueueSize = dmaapConfig.getPublisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE(); - this.dmaapUriPathPrefix=dmaapConfig.getDMAAP_URI_PATH_PREFIX(); - } - - /** - * Setup for custom host port number - Defaults to 80. - * - * @param portNumber - * custom port number - * @return Builder object itself for chaining - */ - public Builder setPortNumber(@Nonnull Integer portNumber) { - this.portNumber = portNumber; - return this; - } - - /** - * Setup user name for authentication. If no username is provided authentication - * will be disabled - * - * @param userName - * user name for DMaaP Topic Authentication - * @return Builder object itself for chaining - */ - public Builder setUserName(@Nonnull String userName) { - this.userName = userName; - return this; - } - - /** - * Setup user password for authentication. If no password is provided - * authentication will be disabled - * - * @param userPassword - * user password for DMaaP Topic Authentication - * @return Builder object itself for chaining - */ - public Builder setUserPassword(@Nonnull String userPassword) { - this.userPassword = userPassword; - return this; - } - - /** - * Setup custom Publisher protocol - Defaults to https. Note: Only http and - * https are currently supported. - * - * @param protocol - * protocol e.g. https - * @return Builder object itself for chaining - */ - public Builder setProtocol(@Nonnull String protocol) { - this.protocol = normalizeValidateProtocol(protocol); - return this; - } - - /** - * Setup custom Publisher content-type - Defaults to application/json - * - * @param contentType - * content type e.g. application/json - * @return Builder object itself for chaining - */ - public Builder setContentType(@Nonnull String contentType) { - final String normalizedContentType = normalizeValidateContentType(contentType); - this.contentType = normalizedContentType; - return this; - } - - /** - * Setup custom Publisher Max Batch Size - Defaults to 100 - * - * @param maxBatchSize - * max Batch Size - * @return Builder object itself for chaining - */ - public Builder setMaxBatchSize(int maxBatchSize) { - this.maxBatchSize = maxBatchSize; - return this; - } - - /** - * Setup custom Maximum Recovery Queue Size. Recovery Queue is used to hold - * messages temporarily in case DMaaP MR Publisher topic is not responding for - * any reason. Defaults to 100,000 - * - * @param maxRecoveryQueueSize - * max recovery queue size - * @return Builder object itself for chaining - */ - public Builder setMaxRecoveryQueueSize(int maxRecoveryQueueSize) { - this.maxRecoveryQueueSize = maxRecoveryQueueSize; - return this; - } - - - /** - * Creates immutable instance of {@link DMaaPMRPublisherConfig} - * - * @return Builds and returns thread safe, immutable - * {@link DMaaPMRPublisherConfig} object - */ - public DMaaPMRPublisherConfig build() { - return new DMaaPMRPublisherConfig(this); - } - - } - public String getDmaapUriPathPrefix() { - return dmaapUriPathPrefix; - } - - /** - * Returns max Publisher Batch Queue Size - * - * @return max Publisher Batch Queue size - */ - public int getMaxBatchSize() { - return maxBatchSize; - } - - /** - * Returns max Publisher Recovery Queue Size - * - * @return max Recovery Queue size - */ - public int getMaxRecoveryQueueSize() { - return maxRecoveryQueueSize; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - DMaaPMRPublisherConfig that = (DMaaPMRPublisherConfig) o; - return maxBatchSize == that.maxBatchSize && maxRecoveryQueueSize == that.maxRecoveryQueueSize; - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), maxBatchSize, maxRecoveryQueueSize); - } - -} +/*
+ * ===============================LICENSE_START======================================
+ * dcae-analytics
+ * ================================================================================
+ * 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===========================================
+ */
+
+
+//TO-DO Lisence Issue ASK to Kedar???????????
+package org.onap.universalvesadapter.configs;
+
+import java.io.IOException;
+import javax.annotation.Nonnull;
+import org.onap.universalvesadapter.utils.DmaapConfig;
+import com.att.aft.dme2.internal.springframework.context.annotation.ComponentScan;
+import com.google.common.base.Objects;
+
+/**
+ * <p>
+ * Immutable DMaaP MR Configuration for DMaaP MR Publisher.
+ * <p>
+ * Use {@link DMaaPMRPublisherConfig.Builder} to construct Subscriber
+ * Configuration
+ * </p>
+ * <p>
+ *
+ * @author Rajiv Singla . Creation Date: 10/12/2016.
+ *
+ */
+@ComponentScan
+public class DMaaPMRPublisherConfig extends DMaaPMRBaseConfig {
+
+
+ /**
+ * Publisher batching queue size
+ */
+ private int maxBatchSize;
+
+ /**
+ * Publisher Recovery Queue Size
+ */
+ private int maxRecoveryQueueSize;
+
+ /**
+ * Default uri path prefix
+ */
+ private String dmaapUriPathPrefix ;
+
+ private DMaaPMRPublisherConfig(Builder builder) {
+ this.hostName = builder.hostName;
+ this.portNumber = builder.portNumber;
+ this.topicName = builder.topicName;
+ this.protocol = builder.protocol;
+ this.userName = builder.userName;
+ this.userPassword = builder.userPassword;
+ this.contentType = builder.contentType;
+ this.maxBatchSize = builder.maxBatchSize;
+ this.maxRecoveryQueueSize = builder.maxRecoveryQueueSize;
+ this.dmaapUriPathPrefix = builder.dmaapUriPathPrefix;
+ }
+
+ /**
+ * Builder to initialize immutable {@link DMaaPMRPublisherConfig} object
+ */
+ public static class Builder {
+
+ private String hostName;
+ private Integer portNumber;
+ private String topicName;
+ private String userName;
+ private String userPassword;
+ private String protocol;
+ private String contentType;
+ private int maxBatchSize;
+ private int maxRecoveryQueueSize;
+ private String dmaapUriPathPrefix ;
+
+
+
+ public Builder(@Nonnull String topicName, DmaapConfig dmaapConfig) throws IOException {
+this.topicName = topicName;
+this.hostName = dmaapConfig.getDmaaphost();
+ this.portNumber = dmaapConfig.getDEFAULT_PORT_NUMBER();
+ // Default values
+
+ this.userName = dmaapConfig.getDEFAULT_USER_NAME();
+ this.userPassword = dmaapConfig.getDEFAULT_USER_PASSWORD();
+ this.protocol =dmaapConfig.getDEFAULT_PROTOCOL();
+ this.contentType = dmaapConfig.getDEFAULT_CONTENT_TYPE();
+
+ this.maxBatchSize =dmaapConfig.getPublisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE();
+ this.maxRecoveryQueueSize = dmaapConfig.getPublisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE();
+ this.dmaapUriPathPrefix=dmaapConfig.getDMAAP_URI_PATH_PREFIX();
+ }
+
+ /**
+ * Setup for custom host port number - Defaults to 80.
+ *
+ * @param portNumber
+ * custom port number
+ * @return Builder object itself for chaining
+ */
+ public Builder setPortNumber(@Nonnull Integer portNumber) {
+ this.portNumber = portNumber;
+ return this;
+ }
+
+ /**
+ * Setup user name for authentication. If no username is provided authentication
+ * will be disabled
+ *
+ * @param userName
+ * user name for DMaaP Topic Authentication
+ * @return Builder object itself for chaining
+ */
+ public Builder setUserName(@Nonnull String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ /**
+ * Setup user password for authentication. If no password is provided
+ * authentication will be disabled
+ *
+ * @param userPassword
+ * user password for DMaaP Topic Authentication
+ * @return Builder object itself for chaining
+ */
+ public Builder setUserPassword(@Nonnull String userPassword) {
+ this.userPassword = userPassword;
+ return this;
+ }
+
+ /**
+ * Setup custom Publisher protocol - Defaults to https. Note: Only http and
+ * https are currently supported.
+ *
+ * @param protocol
+ * protocol e.g. https
+ * @return Builder object itself for chaining
+ */
+ public Builder setProtocol(@Nonnull String protocol) {
+ this.protocol = normalizeValidateProtocol(protocol);
+ return this;
+ }
+
+ /**
+ * Setup custom Publisher content-type - Defaults to application/json
+ *
+ * @param contentType
+ * content type e.g. application/json
+ * @return Builder object itself for chaining
+ */
+ public Builder setContentType(@Nonnull String contentType) {
+ final String normalizedContentType = normalizeValidateContentType(contentType);
+ this.contentType = normalizedContentType;
+ return this;
+ }
+
+ /**
+ * Setup custom Publisher Max Batch Size - Defaults to 100
+ *
+ * @param maxBatchSize
+ * max Batch Size
+ * @return Builder object itself for chaining
+ */
+ public Builder setMaxBatchSize(int maxBatchSize) {
+ this.maxBatchSize = maxBatchSize;
+ return this;
+ }
+
+ /**
+ * Setup custom Maximum Recovery Queue Size. Recovery Queue is used to hold
+ * messages temporarily in case DMaaP MR Publisher topic is not responding for
+ * any reason. Defaults to 100,000
+ *
+ * @param maxRecoveryQueueSize
+ * max recovery queue size
+ * @return Builder object itself for chaining
+ */
+ public Builder setMaxRecoveryQueueSize(int maxRecoveryQueueSize) {
+ this.maxRecoveryQueueSize = maxRecoveryQueueSize;
+ return this;
+ }
+
+
+ /**
+ * Creates immutable instance of {@link DMaaPMRPublisherConfig}
+ *
+ * @return Builds and returns thread safe, immutable
+ * {@link DMaaPMRPublisherConfig} object
+ */
+ public DMaaPMRPublisherConfig build() {
+ return new DMaaPMRPublisherConfig(this);
+ }
+
+ }
+ public String getDmaapUriPathPrefix() {
+ return dmaapUriPathPrefix;
+ }
+
+ /**
+ * Returns max Publisher Batch Queue Size
+ *
+ * @return max Publisher Batch Queue size
+ */
+ public int getMaxBatchSize() {
+ return maxBatchSize;
+ }
+
+ /**
+ * Returns max Publisher Recovery Queue Size
+ *
+ * @return max Recovery Queue size
+ */
+ public int getMaxRecoveryQueueSize() {
+ return maxRecoveryQueueSize;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ if (!super.equals(o)) {
+ return false;
+ }
+ DMaaPMRPublisherConfig that = (DMaaPMRPublisherConfig) o;
+ return maxBatchSize == that.maxBatchSize && maxRecoveryQueueSize == that.maxRecoveryQueueSize;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(super.hashCode(), maxBatchSize, maxRecoveryQueueSize);
+ }
+
+}
\ No newline at end of file diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaaPMRSubscriberConfig.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaaPMRSubscriberConfig.java index 703684f..a00091a 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaaPMRSubscriberConfig.java +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/configs/DMaaPMRSubscriberConfig.java @@ -1,319 +1,319 @@ -/* - * ===============================LICENSE_START====================================== - * dcae-analytics - * ================================================================================ - * 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=========================================== - */ - -package org.onap.universalvesadapter.configs; - -import java.io.IOException; - -import javax.annotation.Nonnull; - -import org.onap.universalvesadapter.utils.DmaapConfig; - -import com.google.common.base.Objects; - -/** - * <p> - * Immutable DMaaP MR Configuration for Subscriber. - * <p> - * Use {@link DMaaPMRSubscriberConfig.Builder} to construct Subscriber Configuration - * <p> - * - * @author Rajiv Singla . Creation Date: 10/12/2016. - */ -public final class DMaaPMRSubscriberConfig extends DMaaPMRBaseConfig { - - private final String consumerId; - private final String consumerGroup; - private final int timeoutMS; - private final int messageLimit; - private String timeoutMSParam; - private String messageLimitParam; - private String uriPrefix; - - public DMaaPMRSubscriberConfig(Builder builder) { - this.hostName = builder.hostName; - this.portNumber = builder.portNumber; - this.topicName = builder.topicName; - this.protocol = builder.protocol; - this.userName = builder.userName; - this.userPassword = builder.userPassword; - this.contentType = builder.contentType; - this.consumerId = builder.consumerId; - this.consumerGroup = builder.consumerGroup; - this.timeoutMS = builder.timeoutMS; - this.messageLimit = builder.messageLimit; - this.timeoutMSParam = builder.timeoutMSParam; - this.messageLimitParam = builder.messageLimitParam; - this.uriPrefix = builder.uriPreifix; - } - - /** - * Builder to initialize immutable {@link DMaaPMRSubscriberConfig} object - */ - public static class Builder { - - private String hostName; - private Integer portNumber; - private String topicName; - private String userName; - private String userPassword; - private String protocol; - private String contentType; - private String consumerId; - private String consumerGroup; - private int timeoutMS; - private int messageLimit; - private String timeoutMSParam; - private String messageLimitParam; - private String uriPreifix; - - - - public Builder(@Nonnull String hostName, - @Nonnull String topicName, DmaapConfig dmaapConfig) throws IOException { - - // Required Values - this.hostName = hostName; - this.topicName = topicName; - // Default values - this.portNumber = dmaapConfig.getDEFAULT_PORT_NUMBER(); - this.userName = dmaapConfig.getDEFAULT_USER_NAME(); - this.userPassword = dmaapConfig.getDEFAULT_USER_PASSWORD(); - this.protocol = dmaapConfig.getDEFAULT_PROTOCOL(); - this.contentType = dmaapConfig.getDEFAULT_CONTENT_TYPE(); - this.consumerId = dmaapConfig.getDMAAP_DEFAULT_CONSUMER_ID(); - this.consumerGroup = dmaapConfig.getsubscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX(); - this.timeoutMS =dmaapConfig.getsubscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS(); - this.messageLimit = dmaapConfig.getsubscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT(); - this.timeoutMSParam=dmaapConfig.getsubscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME(); - this.messageLimitParam=dmaapConfig.getsubscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME(); - this.uriPreifix=dmaapConfig.getDMAAP_URI_PATH_PREFIX(); - - } - - - /** - * Setup for custom host port number - Defaults to 80. - * - * @param portNumber custom port number - * @return Builder object itself for chaining - */ - public Builder setPortNumber(@Nonnull Integer portNumber) { - this.portNumber = portNumber; - return this; - } - - - /** - * Setup user name for authentication. If no username is provided authentication will be disabled - * - * @param userName user name for DMaaP Topic Authentication - * @return Builder object itself for chaining - */ - public Builder setUserName(@Nonnull String userName) { - this.userName = userName; - return this; - } - - - /** - * Setup user password for authentication. If no password is provided authentication will be disabled - * - * @param userPassword user password for DMaaP Topic Authentication - * @return Builder object itself for chaining - */ - public Builder setUserPassword(@Nonnull String userPassword) { - this.userPassword = userPassword; - return this; - } - - - /** - * Setup custom Subscriber protocol - Defaults to https. - * Note: Only http and https are currently supported. - * - * @param protocol protocol e.g. https or http - * @return Builder object itself for chaining - */ - public Builder setProtocol(@Nonnull String protocol) { - - this.protocol = normalizeValidateProtocol(protocol); - return this; - } - - /** - * Setup custom Subscriber content-type - Defaults to application/json - * - * @param contentType content type e.g. application/json - * @return Builder object itself for chaining - */ - public Builder setContentType(@Nonnull String contentType) { - final String normalizedContentType = normalizeValidateContentType(contentType); - this.contentType = normalizedContentType; - return this; - } - - - /** - * Setup custom Consumer Id - Defaults to random Id - * - * @param consumerId - custom consumer ID - * @return Builder object itself for chaining - */ - public Builder setConsumerId(@Nonnull String consumerId) { - this.consumerId = consumerId; - return this; - } - - /** - * Setup custom Consumer Group - Default to OpenDCAE-DMaaPSub-ConsumerID - * - * @param consumerGroup - custom Consumer Group - * @return Builder object itself for chaining - */ - public Builder setConsumerGroup(@Nonnull String consumerGroup) { - this.consumerGroup = consumerGroup; - return this; - } - - /** - * Setup Custom Subscriber timeout in ms - Default to no timeout limit - * - * @param timeoutMS timeout in milliseconds - * @return Builder object itself for chaining - */ - public Builder setTimeoutMS(@Nonnull int timeoutMS) { - this.timeoutMS = timeoutMS; - return this; - } - - /** - * Setup custom Subscriber Message Limit - Default to no limit - * - * @param messageLimit message Limit - * @return Builder object itself for chaining - */ - public Builder setMessageLimit(@Nonnull int messageLimit) { - this.messageLimit = messageLimit; - return this; - } - - /** - * Builds Immutable instance of {@link DMaaPMRSubscriberConfig} - * - * @return immutable DMaaP Subscriber Config Object - */ - public DMaaPMRSubscriberConfig build() { - return new DMaaPMRSubscriberConfig(this); - } - - } - - - public String getTimeoutMSParam() { - return timeoutMSParam; - } - - public void setTimeoutMSParam(String timeoutMSParam) { - this.timeoutMSParam = timeoutMSParam; - } - - public String getMessageLimitParam() { - return messageLimitParam; - } - - public void setMessageLimitParam(String messageLimitParam) { - this.messageLimitParam = messageLimitParam; - } - - public String getUriPrefix() { - return uriPrefix; - } - - public void setUriPrefix(String uriPreifix) { - this.uriPrefix = uriPreifix; - } - - /** - * DMaaP MR Subscriber Consumer Id - * - * @return consumer Id - */ - public String getConsumerId() { - return consumerId; - } - - /** - * DMaaP MR Subscriber Consumer Group - * - * @return consumer group - */ - public String getConsumerGroup() { - return consumerGroup; - } - - /** - * DMaaP MR Subscriber Timeout in ms - * - * @return subscriber timeout ms - */ - public int getTimeoutMS() { - return timeoutMS; - } - - /** - * DMaaP MR Subscriber message limit - * - * @return subscriber message limit - */ - public int getMessageLimit() { - return messageLimit; - } - - /** - * DMaaP property file - * - * @return Properties - */ - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - if (!super.equals(o)) { - return false; - } - DMaaPMRSubscriberConfig that = (DMaaPMRSubscriberConfig) o; - return Objects.equal(consumerId, that.consumerId) && - Objects.equal(consumerGroup, that.consumerGroup) && - Objects.equal(timeoutMS, that.timeoutMS) && - Objects.equal(messageLimit, that.messageLimit); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), consumerId, consumerGroup, timeoutMS, messageLimit); - } - -} +/*
+ * ===============================LICENSE_START======================================
+ * dcae-analytics
+ * ================================================================================
+ * 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===========================================
+ */
+
+package org.onap.universalvesadapter.configs;
+
+import java.io.IOException;
+
+import javax.annotation.Nonnull;
+
+import org.onap.universalvesadapter.utils.DmaapConfig;
+
+import com.google.common.base.Objects;
+
+/**
+ * <p>
+ * Immutable DMaaP MR Configuration for Subscriber.
+ * <p>
+ * Use {@link DMaaPMRSubscriberConfig.Builder} to construct Subscriber Configuration
+ * <p>
+ *
+ * @author Rajiv Singla . Creation Date: 10/12/2016.
+ */
+public final class DMaaPMRSubscriberConfig extends DMaaPMRBaseConfig {
+
+ private final String consumerId;
+ private final String consumerGroup;
+ private final int timeoutMS;
+ private final int messageLimit;
+ private String timeoutMSParam;
+ private String messageLimitParam;
+ private String uriPrefix;
+
+ public DMaaPMRSubscriberConfig(Builder builder) {
+ this.hostName = builder.hostName;
+ this.portNumber = builder.portNumber;
+ this.topicName = builder.topicName;
+ this.protocol = builder.protocol;
+ this.userName = builder.userName;
+ this.userPassword = builder.userPassword;
+ this.contentType = builder.contentType;
+ this.consumerId = builder.consumerId;
+ this.consumerGroup = builder.consumerGroup;
+ this.timeoutMS = builder.timeoutMS;
+ this.messageLimit = builder.messageLimit;
+ this.timeoutMSParam = builder.timeoutMSParam;
+ this.messageLimitParam = builder.messageLimitParam;
+ this.uriPrefix = builder.uriPreifix;
+ }
+
+ /**
+ * Builder to initialize immutable {@link DMaaPMRSubscriberConfig} object
+ */
+ public static class Builder {
+
+ private String hostName;
+ private Integer portNumber;
+ private String topicName;
+ private String userName;
+ private String userPassword;
+ private String protocol;
+ private String contentType;
+ private String consumerId;
+ private String consumerGroup;
+ private int timeoutMS;
+ private int messageLimit;
+ private String timeoutMSParam;
+ private String messageLimitParam;
+ private String uriPreifix;
+
+
+
+ public Builder(@Nonnull String topicName, DmaapConfig dmaapConfig) throws IOException {
+
+ // Required Values
+ this.hostName = dmaapConfig.getDmaaphost();
+ this.portNumber = dmaapConfig.getDEFAULT_PORT_NUMBER();
+ this.topicName = topicName;
+ // Default values
+
+ this.userName = dmaapConfig.getDEFAULT_USER_NAME();
+ this.userPassword = dmaapConfig.getDEFAULT_USER_PASSWORD();
+ this.protocol = dmaapConfig.getDEFAULT_PROTOCOL();
+ this.contentType = dmaapConfig.getDEFAULT_CONTENT_TYPE();
+ this.consumerId = dmaapConfig.getDMAAP_DEFAULT_CONSUMER_ID();
+ this.consumerGroup = dmaapConfig.getsubscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX();
+ this.timeoutMS =dmaapConfig.getsubscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS();
+ this.messageLimit = dmaapConfig.getsubscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT();
+ this.timeoutMSParam=dmaapConfig.getsubscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME();
+ this.messageLimitParam=dmaapConfig.getsubscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME();
+ this.uriPreifix=dmaapConfig.getDMAAP_URI_PATH_PREFIX();
+
+ }
+
+
+ /**
+ * Setup for custom host port number - Defaults to 80.
+ *
+ * @param portNumber custom port number
+ * @return Builder object itself for chaining
+ */
+ public Builder setPortNumber(@Nonnull Integer portNumber) {
+ this.portNumber = portNumber;
+ return this;
+ }
+
+
+ /**
+ * Setup user name for authentication. If no username is provided authentication will be disabled
+ *
+ * @param userName user name for DMaaP Topic Authentication
+ * @return Builder object itself for chaining
+ */
+ public Builder setUserName(@Nonnull String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+
+ /**
+ * Setup user password for authentication. If no password is provided authentication will be disabled
+ *
+ * @param userPassword user password for DMaaP Topic Authentication
+ * @return Builder object itself for chaining
+ */
+ public Builder setUserPassword(@Nonnull String userPassword) {
+ this.userPassword = userPassword;
+ return this;
+ }
+
+
+ /**
+ * Setup custom Subscriber protocol - Defaults to https.
+ * Note: Only http and https are currently supported.
+ *
+ * @param protocol protocol e.g. https or http
+ * @return Builder object itself for chaining
+ */
+ public Builder setProtocol(@Nonnull String protocol) {
+
+ this.protocol = normalizeValidateProtocol(protocol);
+ return this;
+ }
+
+ /**
+ * Setup custom Subscriber content-type - Defaults to application/json
+ *
+ * @param contentType content type e.g. application/json
+ * @return Builder object itself for chaining
+ */
+ public Builder setContentType(@Nonnull String contentType) {
+ final String normalizedContentType = normalizeValidateContentType(contentType);
+ this.contentType = normalizedContentType;
+ return this;
+ }
+
+
+ /**
+ * Setup custom Consumer Id - Defaults to random Id
+ *
+ * @param consumerId - custom consumer ID
+ * @return Builder object itself for chaining
+ */
+ public Builder setConsumerId(@Nonnull String consumerId) {
+ this.consumerId = consumerId;
+ return this;
+ }
+
+ /**
+ * Setup custom Consumer Group - Default to OpenDCAE-DMaaPSub-ConsumerID
+ *
+ * @param consumerGroup - custom Consumer Group
+ * @return Builder object itself for chaining
+ */
+ public Builder setConsumerGroup(@Nonnull String consumerGroup) {
+ this.consumerGroup = consumerGroup;
+ return this;
+ }
+
+ /**
+ * Setup Custom Subscriber timeout in ms - Default to no timeout limit
+ *
+ * @param timeoutMS timeout in milliseconds
+ * @return Builder object itself for chaining
+ */
+ public Builder setTimeoutMS(@Nonnull int timeoutMS) {
+ this.timeoutMS = timeoutMS;
+ return this;
+ }
+
+ /**
+ * Setup custom Subscriber Message Limit - Default to no limit
+ *
+ * @param messageLimit message Limit
+ * @return Builder object itself for chaining
+ */
+ public Builder setMessageLimit(@Nonnull int messageLimit) {
+ this.messageLimit = messageLimit;
+ return this;
+ }
+
+ /**
+ * Builds Immutable instance of {@link DMaaPMRSubscriberConfig}
+ *
+ * @return immutable DMaaP Subscriber Config Object
+ */
+ public DMaaPMRSubscriberConfig build() {
+ return new DMaaPMRSubscriberConfig(this);
+ }
+
+ }
+
+
+ public String getTimeoutMSParam() {
+ return timeoutMSParam;
+ }
+
+ public void setTimeoutMSParam(String timeoutMSParam) {
+ this.timeoutMSParam = timeoutMSParam;
+ }
+
+ public String getMessageLimitParam() {
+ return messageLimitParam;
+ }
+
+ public void setMessageLimitParam(String messageLimitParam) {
+ this.messageLimitParam = messageLimitParam;
+ }
+
+ public String getUriPrefix() {
+ return uriPrefix;
+ }
+
+ public void setUriPrefix(String uriPreifix) {
+ this.uriPrefix = uriPreifix;
+ }
+
+ /**
+ * DMaaP MR Subscriber Consumer Id
+ *
+ * @return consumer Id
+ */
+ public String getConsumerId() {
+ return consumerId;
+ }
+
+ /**
+ * DMaaP MR Subscriber Consumer Group
+ *
+ * @return consumer group
+ */
+ public String getConsumerGroup() {
+ return consumerGroup;
+ }
+
+ /**
+ * DMaaP MR Subscriber Timeout in ms
+ *
+ * @return subscriber timeout ms
+ */
+ public int getTimeoutMS() {
+ return timeoutMS;
+ }
+
+ /**
+ * DMaaP MR Subscriber message limit
+ *
+ * @return subscriber message limit
+ */
+ public int getMessageLimit() {
+ return messageLimit;
+ }
+
+ /**
+ * DMaaP property file
+ *
+ * @return Properties
+ */
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ if (!super.equals(o)) {
+ return false;
+ }
+ DMaaPMRSubscriberConfig that = (DMaaPMRSubscriberConfig) o;
+ return Objects.equal(consumerId, that.consumerId) &&
+ Objects.equal(consumerGroup, that.consumerGroup) &&
+ Objects.equal(timeoutMS, that.timeoutMS) &&
+ Objects.equal(messageLimit, that.messageLimit);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(super.hashCode(), consumerId, consumerGroup, timeoutMS, messageLimit);
+ }
+
+}
\ No newline at end of file diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/dmaap/Creator.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/dmaap/Creator.java index ce75a6e..1393e1b 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/dmaap/Creator.java +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/dmaap/Creator.java @@ -1,91 +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.dmaap; - -import java.io.IOException; - -import org.onap.universalvesadapter.configs.DMaaPMRPublisherConfig; -import org.onap.universalvesadapter.configs.DMaaPMRSubscriberConfig; -import org.onap.universalvesadapter.dmaap.MRPublisher.DMaaPMRPublisher; -import org.onap.universalvesadapter.dmaap.MRSubcriber.DMaaPMRSubscriber; -import org.onap.universalvesadapter.utils.DmaapConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -@Component -public class Creator { - - private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger"); - private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger"); - private DMaaPMRFactory dMaaPMRFactoryInstance; - private String dmaaphost; - private String publisherTopic; - @Autowired - private DmaapConfig dmaapConfig; - - // prop initializer - - public void propertyFileInitializer() { - - this.dmaaphost = dmaapConfig.getDmaaphost(); - this.publisherTopic = dmaapConfig.getPublisherTopic(); - this.dMaaPMRFactoryInstance = DMaaPMRFactory.create(); - debugLogger.info("The Hostname of DMaap is :" + dmaaphost); - - - } - - // publisher - public DMaaPMRPublisher getDMaaPMRPublisher(){ - propertyFileInitializer(); - DMaaPMRPublisherConfig dMaaPMRPublisherConfig = null; - try { - dMaaPMRPublisherConfig = new DMaaPMRPublisherConfig.Builder(dmaaphost, publisherTopic,dmaapConfig).build(); - } catch (IOException e) { - errorLogger.error("failed or interrupted I/O operations while creating publisher config:{}",e.getCause()); - } - return dMaaPMRFactoryInstance.createPublisher(dMaaPMRPublisherConfig); - } - - // subscriber - public DMaaPMRSubscriber getDMaaPMRSubscriber(String subcriberTopic){ - propertyFileInitializer(); - DMaaPMRSubscriberConfig dMaaPMRSubscriberConfig = null; - try { - dMaaPMRSubscriberConfig = new DMaaPMRSubscriberConfig.Builder(dmaaphost, subcriberTopic, dmaapConfig).build(); - } catch (IOException e) { - - errorLogger.error("failed or interrupted I/O operations while creating subcriber config:{}",e.getCause()); - } - - return dMaaPMRFactoryInstance.createSubscriber(dMaaPMRSubscriberConfig); - - } - public void setDmaapConfig(DmaapConfig dmaapConfig) { - this.dmaapConfig = dmaapConfig; - } - - public DmaapConfig getDmaapConfig() { - return dmaapConfig; - } - -} +/*
+* ============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.dmaap;
+
+import java.io.IOException;
+
+import org.onap.universalvesadapter.configs.DMaaPMRPublisherConfig;
+import org.onap.universalvesadapter.configs.DMaaPMRSubscriberConfig;
+import org.onap.universalvesadapter.dmaap.MRPublisher.DMaaPMRPublisher;
+import org.onap.universalvesadapter.dmaap.MRSubcriber.DMaaPMRSubscriber;
+import org.onap.universalvesadapter.utils.DmaapConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class Creator {
+
+ private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger");
+ private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
+ private DMaaPMRFactory dMaaPMRFactoryInstance;
+
+
+ @Autowired
+ private DmaapConfig dmaapConfig;
+
+ // prop initializer
+
+ public void propertyFileInitializer() {
+
+ this.dMaaPMRFactoryInstance = DMaaPMRFactory.create();
+
+ }
+
+ // publisher
+ public DMaaPMRPublisher getDMaaPMRPublisher(String publisherTopic){
+ propertyFileInitializer();
+ DMaaPMRPublisherConfig dMaaPMRPublisherConfig = null;
+ try {
+ dMaaPMRPublisherConfig = new DMaaPMRPublisherConfig.Builder(publisherTopic,dmaapConfig).build();
+ } catch (IOException e) {
+ errorLogger.error("failed or interrupted I/O operations while creating publisher config:{}",e.getCause());
+ }
+ return dMaaPMRFactoryInstance.createPublisher(dMaaPMRPublisherConfig);
+ }
+
+ // subscriber
+ public DMaaPMRSubscriber getDMaaPMRSubscriber(String subcriberTopic){
+ propertyFileInitializer();
+ DMaaPMRSubscriberConfig dMaaPMRSubscriberConfig = null;
+ try {
+ dMaaPMRSubscriberConfig = new DMaaPMRSubscriberConfig.Builder(subcriberTopic, dmaapConfig).build();
+ } catch (IOException e) {
+
+ errorLogger.error("failed or interrupted I/O operations while creating subcriber config:{}",e.getCause());
+ }
+
+ return dMaaPMRFactoryInstance.createSubscriber(dMaaPMRSubscriberConfig);
+
+ }
+ public void setDmaapConfig(DmaapConfig dmaapConfig) {
+ this.dmaapConfig = dmaapConfig;
+ }
+
+ public DmaapConfig getDmaapConfig() {
+ return dmaapConfig;
+ }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VESAdapterInitializer.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VESAdapterInitializer.java index 671fcc3..f2adc9b 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VESAdapterInitializer.java +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VESAdapterInitializer.java @@ -1,290 +1,262 @@ -/* -* ============LICENSE_START======================================================= -* ONAP : DCAE -* ================================================================================ -* Copyright 2018-2019 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.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.onap.universalvesadapter.dmaap.Creator; -import org.onap.universalvesadapter.utils.CollectorConfigPropertyRetrival; -import org.onap.universalvesadapter.utils.DmaapConfig; -import org.onap.universalvesadapter.utils.FetchDynamicConfig; -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.boot.CommandLineRunner; -import org.springframework.boot.SpringApplication; -import org.springframework.context.ApplicationContext; -import org.springframework.core.Ordered; -import org.springframework.stereotype.Component; - -//AdapterInitializer -@Component -public class VESAdapterInitializer implements CommandLineRunner, Ordered { - private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger"); - private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger"); - - @Autowired - private Creator creator; - @Autowired - private DmaapConfig dmaapConfig; - @Value("${defaultConfigFilelocation}") - String defaultConfigFilelocation; - @Value("${server.port}") - String serverPort; - - private static Map<String, String> mappingFiles = new HashMap<String, String>(); - private static Map<String, String> env; - - @Autowired - private ApplicationContext applicationContext; - - @Override - public void run(String... args) throws Exception { - debugLogger.info("The Default Config file Location:" + defaultConfigFilelocation.trim()); - - if (ClassLoader.getSystemResource(defaultConfigFilelocation.trim()) == null) { - errorLogger.error("Default Config file " + defaultConfigFilelocation.trim() + " is missing"); - System.exit(SpringApplication.exit(applicationContext, () -> { - errorLogger.error("Application stoped due to missing default Config file"); - return -1; - })); - } - env = System.getenv(); - for (Map.Entry<String, String> entry : env.entrySet()) { - debugLogger.debug(entry.getKey() + ":" + entry.getValue()); - } - - //checks for DMaaP Host and Port No - if( (env.get("DMAAPHOST")==null ||(env.get("MR_DEFAULT_PORT_NUMBER")==null))) { - - errorLogger.error("DMAAPHOST,MR_DEFAULT_PORT_NUMBER environment parameter is missing. Sample Usage is -\n sudo docker run -d -p 8085:8085/tcp --env MR_DEFAULT_PORT_NUMBER=3904 --env CONSUL_HOST=10.53.172.109 --env HOSTNAME=mvp-dcaegen2-service-mua --env CONFIG_BINDING_SERVICE=config_binding_service --env DMAAPHOST='10.53.172.156' nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.mapper.vesadapter.universalvesadaptor:latest"); - - System.exit(SpringApplication.exit(applicationContext, () -> {errorLogger.error("Application stoped due missing DMAAPHOST or MR_DEFAULT_PORT_NUMBER environment varibales.Please refer above example for environment varibales to pass ");return-1;})); - } - - dmaapConfig.setDmaaphost(env.get("DMAAPHOST")); - dmaapConfig.setDEFAULT_PORT_NUMBER(Integer.parseInt(env.get("MR_DEFAULT_PORT_NUMBER"))); - creator.setDmaapConfig(dmaapConfig); - //check for consul details - if (env.containsKey("CONSUL_HOST") && env.containsKey("CONFIG_BINDING_SERVICE") && env.containsKey("HOSTNAME")) { - debugLogger.info(">>>Dynamic configuration to be used"); - FetchDynamicConfig.cbsCall(defaultConfigFilelocation); - - } else { - debugLogger.info(">>>Static configuration to be used"); - - } - readJsonToMap(defaultConfigFilelocation); - - //prepareDatabase(); - //fetchMappingFile(); - - debugLogger.info("Triggering controller's start url "); - executecurl("http://localhost:"+serverPort+"/start"); - } - - - private static String executecurl(String url) { - - debugLogger.info("Running curl command for url:{}",url); - String[] command = { "curl", "-v", url }; - ProcessBuilder process = new ProcessBuilder(command); - Process p; - String result = null; - try { - p = process.start(); - try(InputStreamReader ipr = new InputStreamReader(p.getInputStream()); - BufferedReader reader = new BufferedReader(ipr)){ - StringBuilder builder = new StringBuilder(); - String line; - - while ((line = reader.readLine()) != null) { - builder.append(line); - } - result = builder.toString(); - } - } catch (IOException e) { - errorLogger.error("error", e); - } - return result; - - } - - private void readJsonToMap(String configFile) { - try { - JSONArray collectorArray=CollectorConfigPropertyRetrival.collectorConfigArray(configFile); - - for (int i = 0; i < collectorArray.size(); i++) { - JSONObject obj2 = (JSONObject) collectorArray.get(i); - - if (obj2.containsKey("mapping-files")) { - - JSONArray a1 = (JSONArray) obj2.get("mapping-files"); - - for (int j = 0; j < a1.size(); j++) { - JSONObject obj3 = (JSONObject) a1.get(j); - Set<Entry<String, String>> set = obj3.entrySet(); - - for (Entry<String, String> entry : set) { - - mappingFiles.put(entry.getKey(), entry.getValue()); - } - } - - } - } - - } catch (Exception e) { - errorLogger.error("Exception occured while reading Collector config file cause: ",e.getCause()); - } - - } - - - /* private void prepareDatabase() throws IOException { - - - debugLogger.info("The Default Mapping file Location:" + defaultMappingFileLocation.trim()); - - if (ClassLoader.getSystemResource(defaultMappingFileLocation.trim()) == null) { - errorLogger.error( - "Default mapping file " + defaultMappingFileLocation.trim() + " is missing"); - System.exit(SpringApplication.exit(applicationContext, () -> { - errorLogger.error("Application stoped due to missing default mapping file"); - return -1; - })); - } - - File file = new File( - ClassLoader.getSystemResource(defaultMappingFileLocation.trim()).getFile()); - - try (FileInputStream fileInputStream = new FileInputStream(file)) { - bytesArray = new byte[(int) file.length()]; - fileInputStream.read(bytesArray); - - } catch (IOException e1) { - errorLogger.error("Exception Occured while reading the default mapping file ,Cause: " - + e1.getMessage(), e1); - // exit on missing default mapping file - System.exit(SpringApplication.exit(applicationContext, () -> { - errorLogger.error("Application stoped due to missing default mapping file"); - return -1; - })); - } - - try (Connection con = DriverManager.getConnection(dBurl, user, pwd); - // creating table if not exist - PreparedStatement pstmt11 = - con.prepareStatement("CREATE TABLE IF NOT EXISTS public." - + MappingFileTableName + "\r\n" + "(\r\n" - + " enterpriseid character varying COLLATE pg_catalog.\"default\" NOT NULL,\r\n" - + " mappingfilecontents bytea,\r\n" - + " mimetype character varying COLLATE pg_catalog.\"default\",\r\n" - + " file_name character varying COLLATE pg_catalog.\"default\",\r\n" - + " CONSTRAINT mapping_file_pkey5 PRIMARY KEY (enterpriseid)\r\n" - + ")\r\n" + "WITH (\r\n" + " OIDS = FALSE\r\n" + ")\r\n" - + "TABLESPACE pg_default;")) { - - metricsLogger.info("Postgresql Connection successful..."); - debugLogger.debug("Connection object:{}" , con.toString()); - - pstmt11.executeUpdate(); - debugLogger.info("CREATE TABLE IF NOT EXISTS executed successfully...."); - - if ((bytesArray.length > 0) && (!Arrays.toString(bytesArray).equals(""))) { - - try (PreparedStatement pstmt = con.prepareStatement("INSERT INTO " - + MappingFileTableName - + "(enterpriseid, mappingfilecontents, mimetype, File_Name) VALUES (?, ?, ?, ?) ON CONFLICT (enterpriseid) DO NOTHING;")) { - pstmt.setString(1, defaultEnterpriseId); - pstmt.setBytes(2, bytesArray); - pstmt.setString(3, "text/xml"); - pstmt.setString(4, file.getName()); - - pstmt.executeUpdate(); - debugLogger.info("Made sure that default mapping file is present in table"); - } - } else { - errorLogger.error(file.getName() + " is empty"); - // exit on empty mapping file - System.exit(SpringApplication.exit(applicationContext, () -> { - errorLogger.error("Application stoped beacuase default mapping file is empty.."); - return -1; - })); - } - - } catch (SQLException e) { - errorLogger.error("Received exception : " + e.getMessage(), e); - // exit on SqlException - System.exit(SpringApplication.exit(applicationContext, () -> { - errorLogger.error("Application Stoped due to ", e.getCause()); - return -1; - })); - } - - }*/ - /*public void fetchMappingFile() { - - try (Connection con = DriverManager.getConnection(dBurl, user, pwd)) { - debugLogger.info("Retrieving data from DB"); - PreparedStatement pstmt = con.prepareStatement("SELECT * FROM mapping_file"); - ResultSet rs = pstmt.executeQuery(); - // parsing the column each time is a linear search - int column1Pos = rs.findColumn("enterpriseid"); - int column2Pos = rs.findColumn("mappingfilecontents"); - String hexString; - while (rs.next()) { - String column1 = rs.getString(column1Pos); - String column2 = rs.getString(column2Pos); - hexString = column2.substring(2); - byte[] bytes = Hex.decodeHex(hexString.toCharArray()); - String data = new String(bytes, "UTF-8"); - mappingFiles.put(column1, data); - } - debugLogger.info("DB Initialization Completed, Total # Mappingfiles are" + mappingFiles.size()); - } catch (Exception e) { - errorLogger.error("Error occured due to :" + e.getMessage()); - e.printStackTrace(); - } - - }*/ - - public static Map<String, String> getMappingFiles() { - return mappingFiles; - } - - public static void setMappingFiles(Map<String, String> mappingFiles) { - VESAdapterInitializer.mappingFiles = mappingFiles; - } - - @Override - public int getOrder() { - return 0; - } - -} +/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : DCAE
+ * ================================================================================
+ * Copyright 2018-2019 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.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.onap.universalvesadapter.utils.CollectorConfigPropertyRetrival;
+import org.onap.universalvesadapter.utils.FetchDynamicConfig;
+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.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.context.ApplicationContext;
+import org.springframework.core.Ordered;
+import org.springframework.stereotype.Component;
+
+// AdapterInitializer
+@Component
+public class VESAdapterInitializer implements CommandLineRunner, Ordered {
+ private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger");
+ private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
+
+ @Value("${defaultConfigFilelocation}")
+ String defaultConfigFilelocation;
+ @Value("${server.port}")
+ String serverPort;
+
+ private static Map<String, String> mappingFiles = new HashMap<String, String>();
+ private static Map<String, String> env;
+
+ @Autowired
+ private ApplicationContext applicationContext;
+
+ @Override
+ public void run(String... args) throws Exception {
+ debugLogger.info("The Default Config file Location:"
+ + defaultConfigFilelocation.trim());
+ // final Path configFilePath =
+ // Paths.get(defaultConfigFilelocation.trim()).toAbsolutePath();
+ // File f = new File(configFilePath.toString());
+
+ if (ClassLoader.getSystemResource(defaultConfigFilelocation.trim()) == null) {
+ errorLogger.error("Default Config file " + defaultConfigFilelocation.trim()
+ + " is missing");
+ System.exit(SpringApplication.exit(applicationContext, () -> {
+ errorLogger.error(
+ "Application stoped due to missing default Config file");
+ return -1;
+ }));
+ }
+ env = System.getenv();
+ for (Map.Entry<String, String> entry : env.entrySet()) {
+ debugLogger.debug(entry.getKey() + ":" + entry.getValue());
+ }
+
+ // check for consul details
+ if (env.containsKey("CONSUL_HOST") && env.containsKey("CONFIG_BINDING_SERVICE")
+ && env.containsKey("HOSTNAME")) {
+ debugLogger.info(">>>Dynamic configuration to be used");
+ FetchDynamicConfig.cbsCall(defaultConfigFilelocation);
+
+ } else {
+ debugLogger.info(">>>Static configuration to be used");
+
+ }
+ readJsonToMap(defaultConfigFilelocation);
+
+ // prepareDatabase();
+ // fetchMappingFile();
+
+ debugLogger.info("Triggering controller's start url ");
+ executecurl("http://localhost:" + serverPort + "/start");
+ }
+
+
+ private static String executecurl(String url) {
+
+ debugLogger.info("Running curl command for url:{}", url);
+ String[] command = {"curl", "-v", url};
+ ProcessBuilder process = new ProcessBuilder(command);
+ Process p;
+ String result = null;
+ try {
+ p = process.start();
+ try (InputStreamReader ipr = new InputStreamReader(p.getInputStream());
+ BufferedReader reader = new BufferedReader(ipr)) {
+ StringBuilder builder = new StringBuilder();
+ String line;
+
+ while ((line = reader.readLine()) != null) {
+ builder.append(line);
+ }
+ result = builder.toString();
+ }
+ } catch (IOException e) {
+ errorLogger.error("error", e);
+ }
+ return result;
+
+ }
+
+ private void readJsonToMap(String configFile) {
+ try {
+ JSONArray collectorArray = CollectorConfigPropertyRetrival
+ .collectorConfigArray(configFile);
+
+ for (int i = 0; i < collectorArray.size(); i++) {
+ JSONObject obj2 = (JSONObject) collectorArray.get(i);
+
+ if (obj2.containsKey("mapping-files")) {
+
+ JSONArray a1 = (JSONArray) obj2.get("mapping-files");
+
+ for (int j = 0; j < a1.size(); j++) {
+ JSONObject obj3 = (JSONObject) a1.get(j);
+ Set<Entry<String, String>> set = obj3.entrySet();
+
+ for (Entry<String, String> entry : set) {
+
+ mappingFiles.put(entry.getKey(),
+ entry.getValue());
+ }
+ }
+
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ errorLogger.error(
+ "Exception occured while reading Collector config file cause: ",
+ e.getCause());
+ }
+
+ }
+
+
+ /*
+ * private void prepareDatabase() throws IOException {
+ *
+ *
+ * debugLogger.info("The Default Mapping file Location:" +
+ * defaultMappingFileLocation.trim());
+ *
+ * if (ClassLoader.getSystemResource(defaultMappingFileLocation.trim()) == null) {
+ * errorLogger.error( "Default mapping file " + defaultMappingFileLocation.trim() +
+ * " is missing"); System.exit(SpringApplication.exit(applicationContext, () -> {
+ * errorLogger.error("Application stoped due to missing default mapping file"); return -1;
+ * })); }
+ *
+ * File file = new File(
+ * ClassLoader.getSystemResource(defaultMappingFileLocation.trim()).getFile());
+ *
+ * try (FileInputStream fileInputStream = new FileInputStream(file)) { bytesArray = new
+ * byte[(int) file.length()]; fileInputStream.read(bytesArray);
+ *
+ * } catch (IOException e1) {
+ * errorLogger.error("Exception Occured while reading the default mapping file ,Cause: " +
+ * e1.getMessage(), e1); // exit on missing default mapping file
+ * System.exit(SpringApplication.exit(applicationContext, () -> {
+ * errorLogger.error("Application stoped due to missing default mapping file"); return -1;
+ * })); }
+ *
+ * try (Connection con = DriverManager.getConnection(dBurl, user, pwd); // creating table if
+ * not exist PreparedStatement pstmt11 =
+ * con.prepareStatement("CREATE TABLE IF NOT EXISTS public." + MappingFileTableName + "\r\n"
+ * + "(\r\n" +
+ * " enterpriseid character varying COLLATE pg_catalog.\"default\" NOT NULL,\r\n" +
+ * " mappingfilecontents bytea,\r\n" +
+ * " mimetype character varying COLLATE pg_catalog.\"default\",\r\n" +
+ * " file_name character varying COLLATE pg_catalog.\"default\",\r\n" +
+ * " CONSTRAINT mapping_file_pkey5 PRIMARY KEY (enterpriseid)\r\n" + ")\r\n" +
+ * "WITH (\r\n" + " OIDS = FALSE\r\n" + ")\r\n" + "TABLESPACE pg_default;")) {
+ *
+ * metricsLogger.info("Postgresql Connection successful...");
+ * debugLogger.debug("Connection object:{}" , con.toString());
+ *
+ * pstmt11.executeUpdate();
+ * debugLogger.info("CREATE TABLE IF NOT EXISTS executed successfully....");
+ *
+ * if ((bytesArray.length > 0) && (!Arrays.toString(bytesArray).equals(""))) {
+ *
+ * try (PreparedStatement pstmt = con.prepareStatement("INSERT INTO " + MappingFileTableName
+ * +
+ * "(enterpriseid, mappingfilecontents, mimetype, File_Name) VALUES (?, ?, ?, ?) ON CONFLICT (enterpriseid) DO NOTHING;"
+ * )) { pstmt.setString(1, defaultEnterpriseId); pstmt.setBytes(2, bytesArray);
+ * pstmt.setString(3, "text/xml"); pstmt.setString(4, file.getName());
+ *
+ * pstmt.executeUpdate();
+ * debugLogger.info("Made sure that default mapping file is present in table"); } } else {
+ * errorLogger.error(file.getName() + " is empty"); // exit on empty mapping file
+ * System.exit(SpringApplication.exit(applicationContext, () -> {
+ * errorLogger.error("Application stoped beacuase default mapping file is empty.."); return
+ * -1; })); }
+ *
+ * } catch (SQLException e) { errorLogger.error("Received exception : " + e.getMessage(),
+ * e); // exit on SqlException System.exit(SpringApplication.exit(applicationContext, () ->
+ * { errorLogger.error("Application Stoped due to ", e.getCause()); return -1; })); }
+ *
+ * }
+ */
+ /*
+ * public void fetchMappingFile() {
+ *
+ * try (Connection con = DriverManager.getConnection(dBurl, user, pwd)) {
+ * debugLogger.info("Retrieving data from DB"); PreparedStatement pstmt =
+ * con.prepareStatement("SELECT * FROM mapping_file"); ResultSet rs = pstmt.executeQuery();
+ * // parsing the column each time is a linear search int column1Pos =
+ * rs.findColumn("enterpriseid"); int column2Pos = rs.findColumn("mappingfilecontents");
+ * String hexString; while (rs.next()) { String column1 = rs.getString(column1Pos); String
+ * column2 = rs.getString(column2Pos); hexString = column2.substring(2); byte[] bytes =
+ * Hex.decodeHex(hexString.toCharArray()); String data = new String(bytes, "UTF-8");
+ * mappingFiles.put(column1, data); }
+ * debugLogger.info("DB Initialization Completed, Total # Mappingfiles are" +
+ * mappingFiles.size()); } catch (Exception e) { errorLogger.error("Error occured due to :"
+ * + e.getMessage()); e.printStackTrace(); }
+ *
+ * }
+ */
+
+ public static Map<String, String> getMappingFiles() {
+ return mappingFiles;
+ }
+
+ public static void setMappingFiles(Map<String, String> mappingFiles) {
+ VESAdapterInitializer.mappingFiles = mappingFiles;
+ }
+
+ @Override
+ public int getOrder() {
+ return 0;
+ }
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VesService.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VesService.java index a5b88ec..cbfeead 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VesService.java +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/service/VesService.java @@ -1,164 +1,220 @@ -/* -* ============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.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; - -import org.onap.universalvesadapter.adapter.UniversalEventAdapter; -import org.onap.universalvesadapter.dmaap.Creator; -import org.onap.universalvesadapter.dmaap.MRPublisher.DMaaPMRPublisher; -import org.onap.universalvesadapter.dmaap.MRSubcriber.DMaaPMRSubscriber; -import org.onap.universalvesadapter.exception.DMaapException; -import org.onap.universalvesadapter.exception.MapperConfigException; -import org.onap.universalvesadapter.exception.VesException; -import org.onap.universalvesadapter.utils.CollectorConfigPropertyRetrival; -import org.onap.universalvesadapter.utils.DmaapConfig; -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 static final Logger metricsLogger = LoggerFactory.getLogger("metricsLogger"); - private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger"); - private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger"); - - private boolean isRunning = true; - @Value("${defaultConfigFilelocation}") - private String defaultConfigFilelocation; - @Autowired - private Creator creator; - @Autowired - private UniversalEventAdapter eventAdapter; - @Autowired - private DmaapConfig dmaapConfig; - private static List<String> list = new LinkedList<String>(); - - - /** - * method triggers universal VES adapter module. - */ - public void start() throws MapperConfigException { - debugLogger.info("Creating Subcriber and Publisher with creator............."); - - - DMaaPMRPublisher publisher = creator.getDMaaPMRPublisher(); - - String topicArray[]= CollectorConfigPropertyRetrival.getProperyArray("subscriberTopic",defaultConfigFilelocation); - - - ExecutorService executorService=Executors.newFixedThreadPool(topicArray.length); - for(int i=0;i<topicArray.length;i++) { - String topicName =topicArray[i]; - DMaaPMRSubscriber subcriber = creator.getDMaaPMRSubscriber(topicArray[i]); - - executorService.submit(new Runnable() { - - @Override - public void run(){ - - Thread.currentThread().setName(topicName); - metricsLogger.info("fetch and publish from and to Dmaap started:"+Thread.currentThread().getName()); - int pollingInternalInt=dmaapConfig.getPollingInterval(); - debugLogger.info("The Polling Interval in Milli Second is :{}" +pollingInternalInt); - debugLogger.info("starting subscriber & publisher thread:{}", Thread.currentThread().getName()); - while (true) { - synchronized (this) { - for (String incomingJsonString : subcriber.fetchMessages().getFetchedMessages()) { - list.add(incomingJsonString); - - } - - if (list.isEmpty()) { - try { - Thread.sleep(pollingInternalInt); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - debugLogger.debug("number of messages to be converted :{}", list.size()); - - if (!list.isEmpty()) { - String val = ((LinkedList<String>) list).removeFirst(); - List<String> messages = new ArrayList<>(); - String vesEvent = processReceivedJson(val); - if (vesEvent!=null && (!(vesEvent.isEmpty() || vesEvent.equals("")))) { - messages.add(vesEvent); - publisher.publish(messages); - metricsLogger.info("Message successfully published to DMaaP Topic"); - } - - } - - } - } - - - - } - }); - } - - - - } - - /** - * method stops universal ves adapter module - */ - public void stop() { - isRunning = false; - } - - private String processReceivedJson(String incomingJsonString) { - String outgoingJsonString = null; - if (!"".equals(incomingJsonString)) { - - try { - - outgoingJsonString = eventAdapter.transform(incomingJsonString); - - } catch (VesException exception) { - errorLogger.error("Received exception : {},{}" + exception.getMessage(), exception); - debugLogger.warn("APPLICATION WILL BE SHUTDOWN UNTIL ABOVE ISSUE IS RESOLVED."); - } catch (DMaapException e) { - errorLogger.error("Received exception : {}", e.getMessage()); - } - } - return outgoingJsonString; - } -} - +/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : DCAE
+ * ================================================================================
+ * Copyright 2018-2019 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.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import org.onap.universalvesadapter.adapter.UniversalEventAdapter;
+import org.onap.universalvesadapter.dmaap.Creator;
+import org.onap.universalvesadapter.dmaap.MRPublisher.DMaaPMRPublisher;
+import org.onap.universalvesadapter.dmaap.MRSubcriber.DMaaPMRSubscriber;
+import org.onap.universalvesadapter.exception.DMaapException;
+import org.onap.universalvesadapter.exception.MapperConfigException;
+import org.onap.universalvesadapter.exception.VesException;
+import org.onap.universalvesadapter.utils.CollectorConfigPropertyRetrival;
+import org.onap.universalvesadapter.utils.DmaapConfig;
+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
+ *
+ */
+/**
+ * @author PM00501616
+ *
+ */
+/**
+ * @author PM00501616
+ *
+ */
+@Component
+public class VesService {
+
+ private static final Logger metricsLogger = LoggerFactory.getLogger("metricsLogger");
+ private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger");
+ private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
+
+ private boolean isRunning = true;
+ @Value("${defaultConfigFilelocation}")
+ private String defaultConfigFilelocation;
+ @Autowired
+ private Creator creator;
+ @Autowired
+ private UniversalEventAdapter eventAdapter;
+ @Autowired
+ private DmaapConfig dmaapConfig;
+ @Autowired
+ private CollectorConfigPropertyRetrival collectorConfigPropertyRetrival;
+ private static List<String> list = new LinkedList<String>();
+
+
+ /**
+ * method triggers universal VES adapter module.
+ */
+ public void start() throws MapperConfigException {
+ debugLogger.info("Creating Subcriber and Publisher with creator.............");
+ String topicName = null;
+ String publisherTopic = null;
+ // Hashmap of subscriber and publisher details in correspondence to the respective
+ // collectors in kv file
+ Map<String, String> dmaapTopics = collectorConfigPropertyRetrival.getDmaapTopics(
+ "stream_subscriber", "stream_publisher", defaultConfigFilelocation);
+
+ ExecutorService executorService = Executors.newFixedThreadPool(dmaapTopics.size());
+ for (Map.Entry<String, String> entry : dmaapTopics.entrySet()) {
+ String threadName = entry.getKey();
+ // subcriber and corresponding publisher topics in a Map
+ Map<String, String> subpubTopics = collectorConfigPropertyRetrival
+ .getTopics(entry.getKey(), entry.getValue(),
+ defaultConfigFilelocation);
+ for (Map.Entry<String, String> entry2 : subpubTopics.entrySet()) {
+ topicName = entry2.getKey();
+ publisherTopic = entry2.getValue();
+ }
+
+
+ // Publisher and subcriber as per each collector
+ DMaaPMRSubscriber subcriber = creator.getDMaaPMRSubscriber(topicName);
+
+ DMaaPMRPublisher publisher = creator.getDMaaPMRPublisher(publisherTopic);
+ debugLogger.info("Created scriber topic:" + topicName + "publisher topic:"
+ + publisherTopic);
+
+ executorService.submit(new Runnable() {
+
+ @Override
+ public void run() {
+
+ Thread.currentThread().setName(threadName);
+ metricsLogger.info(
+ "fetch and publish from and to Dmaap started:"
+ + Thread.currentThread()
+ .getName());
+ int pollingInternalInt = dmaapConfig.getPollingInterval();
+ debugLogger.info(
+ "The Polling Interval in Milli Second is :{}"
+ + pollingInternalInt);
+ debugLogger.info(
+ "starting subscriber & publisher thread:{}",
+ Thread.currentThread().getName());
+ while (true) {
+ synchronized (this) {
+ for (String incomingJsonString : subcriber
+ .fetchMessages()
+ .getFetchedMessages()) {
+ list.add(incomingJsonString);
+
+ }
+
+ if (list.isEmpty()) {
+ try {
+ Thread.sleep(pollingInternalInt);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ debugLogger.debug(
+ "number of messages to be converted :{}",
+ list.size());
+
+ if (!list.isEmpty()) {
+ String val = ((LinkedList<String>) list)
+ .removeFirst();
+ List<String> messages =
+ new ArrayList<>();
+ String vesEvent =
+ processReceivedJson(
+ val);
+ if (vesEvent != null && (!(vesEvent
+ .isEmpty()
+ || vesEvent.equals(
+ "")))) {
+ messages.add(vesEvent);
+ publisher.publish(messages);
+
+ metricsLogger.info(
+ "Message successfully published to DMaaP Topic-\n"
+ + vesEvent);
+ }
+
+ }
+
+ }
+ }
+
+
+
+ }
+ });
+ }
+
+
+
+ }
+
+ /**
+ * method stops universal ves adapter module
+ */
+ public void stop() {
+ isRunning = false;
+ }
+
+
+ /**
+ * method for processing the incoming json to ves
+ *
+ * @param incomingJsonString
+ * @return ves
+ */
+ private String processReceivedJson(String incomingJsonString) {
+ String outgoingJsonString = null;
+ if (!"".equals(incomingJsonString)) {
+
+ try {
+
+ outgoingJsonString = eventAdapter.transform(incomingJsonString);
+
+ } catch (VesException exception) {
+ errorLogger.error(
+ "Received exception : {},{}"
+ + exception.getMessage(),
+ exception);
+ debugLogger.warn(
+ "APPLICATION WILL BE SHUTDOWN UNTIL ABOVE ISSUE IS RESOLVED.");
+ } catch (DMaapException e) {
+ errorLogger.error("Received exception : {}", e.getMessage());
+ }
+ }
+ return outgoingJsonString;
+ }
+}
+
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/CollectorConfigPropertyRetrival.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/CollectorConfigPropertyRetrival.java index 2262b9b..afa5c7c 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/CollectorConfigPropertyRetrival.java +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/CollectorConfigPropertyRetrival.java @@ -1,88 +1,172 @@ -/* -* ============LICENSE_START======================================================= -* ONAP : DCAE -* ================================================================================ -* Copyright 2019 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.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; -import org.json.simple.parser.ParseException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -@Component -public class CollectorConfigPropertyRetrival { - - @Value("${defaultConfigFilelocation}") - public String defaultConfigFilelocation; - private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger"); - private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger"); - private static JSONArray array; - - public static JSONArray collectorConfigArray(String configFile) { - try { - JSONParser parser = new JSONParser(); - - File file = new File(ClassLoader.getSystemResource(configFile.trim()).getFile()); - - FileReader fileReader = new FileReader(file); - JSONObject obj = (JSONObject) parser.parse(fileReader); - JSONObject appobj = (JSONObject) obj.get("app_preferences"); - array = (JSONArray) appobj.get("collectors"); - - debugLogger.info("Retrieved JsonArray from Collector Config File"); - - } catch (ParseException e) { - errorLogger.error("ParseException occured at position:", e.getPosition()); - } catch (FileNotFoundException e) { - - errorLogger.error("Collector Config File is not found..", e.getMessage()); - } catch (IOException e) { - - errorLogger.error("Error occured due to :", e.getMessage()); - } - - return array; - - } - - public static String[] getProperyArray(String properyName, String defaultConfigFilelocation) { - JSONArray jsonArray = collectorConfigArray(defaultConfigFilelocation); - - String[] propertyArray = new String[jsonArray.size()]; - - for (int k = 0; k < jsonArray.size(); k++) { - - JSONObject collJson = (JSONObject) jsonArray.get(k); - - propertyArray[k] = (String) collJson.get(properyName); - } - debugLogger.info("returning " + properyName + " array from Collector Config"); - return propertyArray; - - } - -} +/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : DCAE
+ * ================================================================================
+ * Copyright 2018-2019 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.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ResourceUtils;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@Component
+public class CollectorConfigPropertyRetrival {
+
+
+ private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger");
+ private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
+ private static JSONArray array;
+ @Autowired
+ private DmaapConfig dmaapConfig;
+
+ public static JSONArray collectorConfigArray(String configFile) {
+ try {
+ JSONParser parser = new JSONParser();
+ String content = readFile(configFile);
+ JSONObject obj = (JSONObject) parser.parse(content);
+ JSONObject appobj = (JSONObject) obj.get("app_preferences");
+ array = (JSONArray) appobj.get("collectors");
+
+ debugLogger.info("Retrieved JsonArray from Collector Config File");
+
+ } catch (ParseException e) {
+ errorLogger.error("ParseException occured at position:", e.getPosition());
+ }
+
+
+ return array;
+
+ }
+
+ public static String[] getProperyArray(String properyName,
+ String defaultConfigFilelocation) {
+ JSONArray jsonArray = collectorConfigArray(defaultConfigFilelocation);
+
+ String[] propertyArray = new String[jsonArray.size()];
+
+ for (int k = 0; k < jsonArray.size(); k++) {
+
+ JSONObject collJson = (JSONObject) jsonArray.get(k);
+
+ propertyArray[k] = (String) collJson.get(properyName);
+ }
+ debugLogger.info("returning " + properyName + " array from Collector Config");
+ return propertyArray;
+
+ }
+
+ public Map<String, String> getDmaapTopics(String subscriber, String publisher,
+ String defaultConfigFilelocation) {
+ JSONArray jsonArray = collectorConfigArray(defaultConfigFilelocation);
+
+ Map<String, String> dmaapTopics = new HashMap<>();
+
+ for (int k = 0; k < jsonArray.size(); k++) {
+
+ JSONObject collJson = (JSONObject) jsonArray.get(k);
+
+ dmaapTopics.put(collJson.get(subscriber).toString(),
+ collJson.get(publisher).toString());
+
+ }
+ debugLogger.info("returning Dmaap topics from Collector Config");
+ return dmaapTopics;
+
+ }
+
+ public Map<String, String> getTopics(String subscriber, String publisher,
+ String defaultConfigFilelocation) {
+ Map<String, String> dmaapTopics = new HashMap<>();
+
+ try {
+
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFile(defaultConfigFilelocation);
+ // read JSON like DOM Parser
+ JsonNode rootNode = objectMapper.readTree(content);
+ JsonNode subscriberUrl = rootNode.path("streams_subscribes")
+ .path(subscriber).path("dmaap_info").path("topic_url");
+ JsonNode publisherUrl = rootNode.path("streams_publishes").path(publisher)
+ .path("dmaap_info").path("topic_url");
+
+ dmaapTopics.put(getTopicName(subscriberUrl.asText()),
+ getTopicName(publisherUrl.asText()));
+ setDmaapConfig(subscriberUrl.asText());
+ } catch (IOException ex) {
+ errorLogger.error("IOException occured:" + ex.getMessage());
+
+ } catch (URISyntaxException e) {
+
+ errorLogger.error("Invalid URI :" + e.getInput() + ": " + e.getReason());
+ }
+
+ return dmaapTopics;
+
+ }
+
+ public String getTopicName(String url) throws URISyntaxException {
+ URI uri = new URI(url);
+ String path = uri.getPath();
+ String idStr = path.substring(path.lastIndexOf('/') + 1);
+ return idStr;
+
+ }
+
+ public void setDmaapConfig(String url) throws URISyntaxException {
+ URI uri = new URI(url);
+ dmaapConfig.setDmaaphost(uri.getHost());
+ dmaapConfig.setDEFAULT_PORT_NUMBER(uri.getPort());
+
+ }
+
+ public static String readFile(String configFileName) {
+ String content = null;
+ File file = null;
+
+ try {
+ file = ResourceUtils.getFile("classpath:" + configFileName);
+ content = new String(Files.readAllBytes(file.toPath()));
+ } catch (FileNotFoundException e) {
+ errorLogger.error("colud not find file :", configFileName);
+
+ } catch (IOException e) {
+ errorLogger.error("unable to read the file , reason:", e.getCause());
+ }
+
+ return content;
+
+ }
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/DmaapConfig.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/DmaapConfig.java index 02b54c9..82c23b3 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/DmaapConfig.java +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/DmaapConfig.java @@ -1,287 +1,272 @@ -/* - * ===============================LICENSE_START====================================== - * dcae-analytics - * ================================================================================ - * 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=========================================== - */ -package org.onap.universalvesadapter.utils; - -import javax.validation.constraints.NotEmpty; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.PropertySource; -import org.springframework.stereotype.Component; - -@Component -@PropertySource(value = {"classpath:application.properties","classpath:mapper.properties"}) -@ConfigurationProperties -public class DmaapConfig { - - // Hostname of DMaaP to be taken from ENV var - @NotEmpty - private String dmaaphost; - - // default port number to be taken from ENV var - @NotEmpty - private int DEFAULT_PORT_NUMBER; - - @Value("${mr.POLLING_INTERVAL}") - @NotEmpty - private int pollingInterval; - - // default to no username - @Value("${mr.DEFAULT_USER_NAME}") - private String DEFAULT_USER_NAME; - - - //defaults to no userPassword - @Value("${mr.DEFAULT_USER_PASSWORD}") - private String DEFAULT_USER_PASSWORD; - - //defaults to using https protocol - @Value("${mr.DEFAULT_PROTOCOL}") - @NotEmpty - private String DEFAULT_PROTOCOL; - - //defaults to json content type - @Value("${mr.DEFAULT_CONTENT_TYPE}") - @NotEmpty - private String DEFAULT_CONTENT_TYPE; - - @Value("${mr.DMAAP_URI_PATH_PREFIX}") - @NotEmpty - private String DMAAP_URI_PATH_PREFIX; - - @Value("${mr.DMAAP_DEFAULT_CONSUMER_ID}") - @NotEmpty - private String DMAAP_DEFAULT_CONSUMER_ID; - - @Value("${mr.DMAAP_GROUP_PREFIX}") - @NotEmpty - private String DMAAP_GROUP_PREFIX; - - // Publisher Constants - - //Dmaap Publisher Topic - @Value("${mr.publisher.topic}") - @NotEmpty - private String publisherTopic; - - //disable batching by default - @Value("${mr.publisher.DEFAULT_PUBLISHER_MAX_BATCH_SIZE}") - @NotEmpty - private int publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE; - - //default recovery messages size - @Value("${mr.publisher.DEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE}") - @NotEmpty - private int publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE; - -//number of retries when flushing messages - @Value("${mr.publisher.PUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE}") - @NotEmpty - private int publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE; - - //delay in retrying for flushing messages - @Value("${mr.publisher.PUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE}") - @NotEmpty - private int publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE; - - // Subscriber Constants - - @Value("${mr.subscriber.DEFAULT_SUBSCRIBER_TIMEOUT_MS}") - @NotEmpty - private int subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS; - - @Value("${mr.subscriber.DEFAULT_SUBSCRIBER_MESSAGE_LIMIT}") - @NotEmpty - private int subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT; - - @Value("${mr.subscriber.DEFAULT_SUBSCRIBER_GROUP_PREFIX}") - @NotEmpty - private String subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX; - - @Value("${mr.subscriber.SUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME}") - @NotEmpty - private String subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME; - - @Value("${mr.subscriber.SUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME}") - @NotEmpty - private String subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME; - - public void setDmaaphost(String dmaaphost) { - this.dmaaphost = dmaaphost; - } - - public String getDmaaphost() { - return dmaaphost; - } - - public int getDEFAULT_PORT_NUMBER() { - return DEFAULT_PORT_NUMBER; - } - - public void setDEFAULT_PORT_NUMBER(int dEFAULT_PORT_NUMBER) { - DEFAULT_PORT_NUMBER = dEFAULT_PORT_NUMBER; - } - - public String getDEFAULT_USER_NAME() { - return DEFAULT_USER_NAME; - } - - public void setDEFAULT_USER_NAME(String dEFAULT_USER_NAME) { - DEFAULT_USER_NAME = dEFAULT_USER_NAME; - } - - public String getDEFAULT_USER_PASSWORD() { - return DEFAULT_USER_PASSWORD; - } - - public void setDEFAULT_USER_PASSWORD(String dEFAULT_USER_PASSWORD) { - DEFAULT_USER_PASSWORD = dEFAULT_USER_PASSWORD; - } - - public String getDEFAULT_PROTOCOL() { - return DEFAULT_PROTOCOL; - } - - public void setDEFAULT_PROTOCOL(String dEFAULT_PROTOCOL) { - DEFAULT_PROTOCOL = dEFAULT_PROTOCOL; - } - - public String getDEFAULT_CONTENT_TYPE() { - return DEFAULT_CONTENT_TYPE; - } - - public void setDEFAULT_CONTENT_TYPE(String dEFAULT_CONTENT_TYPE) { - DEFAULT_CONTENT_TYPE = dEFAULT_CONTENT_TYPE; - } - - public String getDMAAP_URI_PATH_PREFIX() { - return DMAAP_URI_PATH_PREFIX; - } - - public void setDMAAP_URI_PATH_PREFIX(String dMAAP_URI_PATH_PREFIX) { - DMAAP_URI_PATH_PREFIX = dMAAP_URI_PATH_PREFIX; - } - - public String getDMAAP_DEFAULT_CONSUMER_ID() { - return DMAAP_DEFAULT_CONSUMER_ID; - } - - public void setDMAAP_DEFAULT_CONSUMER_ID(String dMAAP_DEFAULT_CONSUMER_ID) { - DMAAP_DEFAULT_CONSUMER_ID = dMAAP_DEFAULT_CONSUMER_ID; - } - - public String getDMAAP_GROUP_PREFIX() { - return DMAAP_GROUP_PREFIX; - } - - public void setDMAAP_GROUP_PREFIX(String dMAAP_GROUP_PREFIX) { - DMAAP_GROUP_PREFIX = dMAAP_GROUP_PREFIX; - } - - public String getPublisherTopic() { - return publisherTopic; - } - - public void setPublisherTopic(String publisherTopic) { - this.publisherTopic = publisherTopic; - } - - public int getPublisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE() { - return publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE; - } - - public void setPublisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE(int publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE) { - this.publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE = publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE; - } - - public int getPublisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE() { - return publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE; - } - - public void setPublisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE( - int publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE) { - this.publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE = publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE; - } - - public int getPublisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE() { - return publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE; - } - - public void setPublisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE(int publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE) { - this.publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE = publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE; - } - - public int getPublisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE() { - return publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE; - } - - public void setPublisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE(int publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE) { - this.publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE = publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE; - } - - public int getsubscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS() { - return subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS; - } - - public void setsubscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS(int subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS) { - this.subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS = subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS; - } - - public int getsubscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT() { - return subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT; - } - - public void setsubscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT(int subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT) { - this.subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT = subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT; - } - - public String getsubscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX() { - return subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX; - } - - public void setsubscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX(String subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX) { - this.subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX = subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX; - } - - public String getsubscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME() { - return subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME; - } - - public void setsubscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME(String subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME) { - this.subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME = subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME; - } - - public String getsubscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME() { - return subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME; - } - - public void setsubscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME(String subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME) { - this.subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME = subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME; - } - - public int getPollingInterval() { - return pollingInterval; - } - - public void setPollingInterval(int pollingInterval) { - this.pollingInterval = pollingInterval; - } - - -} +/*
+ * ===============================LICENSE_START======================================
+ * dcae-analytics
+ * ================================================================================
+ * 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===========================================
+ */
+package org.onap.universalvesadapter.utils;
+
+import javax.validation.constraints.NotEmpty;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Component;
+
+@Component
+@PropertySource(value = {"classpath:application.properties","classpath:mapper.properties"})
+@ConfigurationProperties
+public class DmaapConfig {
+
+ @NotEmpty
+ private String dmaaphost;
+
+ @NotEmpty
+ private int DEFAULT_PORT_NUMBER;
+
+ @Value("${mr.POLLING_INTERVAL}")
+ @NotEmpty
+ private int pollingInterval;
+
+ // default to no username
+ @Value("${mr.DEFAULT_USER_NAME}")
+ private String DEFAULT_USER_NAME;
+
+
+ //defaults to no userPassword
+ @Value("${mr.DEFAULT_USER_PASSWORD}")
+ private String DEFAULT_USER_PASSWORD;
+
+ //defaults to using https protocol
+ @Value("${mr.DEFAULT_PROTOCOL}")
+ @NotEmpty
+ private String DEFAULT_PROTOCOL;
+
+ //defaults to json content type
+ @Value("${mr.DEFAULT_CONTENT_TYPE}")
+ @NotEmpty
+ private String DEFAULT_CONTENT_TYPE;
+
+ @Value("${mr.DMAAP_URI_PATH_PREFIX}")
+ @NotEmpty
+ private String DMAAP_URI_PATH_PREFIX;
+
+ @Value("${mr.DMAAP_DEFAULT_CONSUMER_ID}")
+ @NotEmpty
+ private String DMAAP_DEFAULT_CONSUMER_ID;
+
+ @Value("${mr.DMAAP_GROUP_PREFIX}")
+ @NotEmpty
+ private String DMAAP_GROUP_PREFIX;
+
+ // Publisher Constants
+
+ //disable batching by default
+ @Value("${mr.publisher.DEFAULT_PUBLISHER_MAX_BATCH_SIZE}")
+ @NotEmpty
+ private int publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE;
+
+ //default recovery messages size
+ @Value("${mr.publisher.DEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE}")
+ @NotEmpty
+ private int publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE;
+
+//number of retries when flushing messages
+ @Value("${mr.publisher.PUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE}")
+ @NotEmpty
+ private int publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE;
+
+ //delay in retrying for flushing messages
+ @Value("${mr.publisher.PUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE}")
+ @NotEmpty
+ private int publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE;
+
+ // Subscriber Constants
+
+ @Value("${mr.subscriber.DEFAULT_SUBSCRIBER_TIMEOUT_MS}")
+ @NotEmpty
+ private int subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS;
+
+ @Value("${mr.subscriber.DEFAULT_SUBSCRIBER_MESSAGE_LIMIT}")
+ @NotEmpty
+ private int subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT;
+
+ @Value("${mr.subscriber.DEFAULT_SUBSCRIBER_GROUP_PREFIX}")
+ @NotEmpty
+ private String subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX;
+
+ @Value("${mr.subscriber.SUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME}")
+ @NotEmpty
+ private String subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME;
+
+ @Value("${mr.subscriber.SUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME}")
+ @NotEmpty
+ private String subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME;
+
+ public void setDmaaphost(String dmaaphost) {
+ this.dmaaphost = dmaaphost;
+ }
+
+ public String getDmaaphost() {
+ return dmaaphost;
+ }
+
+ public int getDEFAULT_PORT_NUMBER() {
+ return DEFAULT_PORT_NUMBER;
+ }
+
+ public void setDEFAULT_PORT_NUMBER(int dEFAULT_PORT_NUMBER) {
+ DEFAULT_PORT_NUMBER = dEFAULT_PORT_NUMBER;
+ }
+
+ public String getDEFAULT_USER_NAME() {
+ return DEFAULT_USER_NAME;
+ }
+
+ public void setDEFAULT_USER_NAME(String dEFAULT_USER_NAME) {
+ DEFAULT_USER_NAME = dEFAULT_USER_NAME;
+ }
+
+ public String getDEFAULT_USER_PASSWORD() {
+ return DEFAULT_USER_PASSWORD;
+ }
+
+ public void setDEFAULT_USER_PASSWORD(String dEFAULT_USER_PASSWORD) {
+ DEFAULT_USER_PASSWORD = dEFAULT_USER_PASSWORD;
+ }
+
+ public String getDEFAULT_PROTOCOL() {
+ return DEFAULT_PROTOCOL;
+ }
+
+ public void setDEFAULT_PROTOCOL(String dEFAULT_PROTOCOL) {
+ DEFAULT_PROTOCOL = dEFAULT_PROTOCOL;
+ }
+
+ public String getDEFAULT_CONTENT_TYPE() {
+ return DEFAULT_CONTENT_TYPE;
+ }
+
+ public void setDEFAULT_CONTENT_TYPE(String dEFAULT_CONTENT_TYPE) {
+ DEFAULT_CONTENT_TYPE = dEFAULT_CONTENT_TYPE;
+ }
+
+ public String getDMAAP_URI_PATH_PREFIX() {
+ return DMAAP_URI_PATH_PREFIX;
+ }
+
+ public void setDMAAP_URI_PATH_PREFIX(String dMAAP_URI_PATH_PREFIX) {
+ DMAAP_URI_PATH_PREFIX = dMAAP_URI_PATH_PREFIX;
+ }
+
+ public String getDMAAP_DEFAULT_CONSUMER_ID() {
+ return DMAAP_DEFAULT_CONSUMER_ID;
+ }
+
+ public void setDMAAP_DEFAULT_CONSUMER_ID(String dMAAP_DEFAULT_CONSUMER_ID) {
+ DMAAP_DEFAULT_CONSUMER_ID = dMAAP_DEFAULT_CONSUMER_ID;
+ }
+
+ public String getDMAAP_GROUP_PREFIX() {
+ return DMAAP_GROUP_PREFIX;
+ }
+
+ public void setDMAAP_GROUP_PREFIX(String dMAAP_GROUP_PREFIX) {
+ DMAAP_GROUP_PREFIX = dMAAP_GROUP_PREFIX;
+ }
+
+ public int getPublisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE() {
+ return publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE;
+ }
+
+ public void setPublisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE(int publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE) {
+ this.publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE = publisherDEFAULT_PUBLISHER_MAX_BATCH_SIZE;
+ }
+
+ public int getPublisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE() {
+ return publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE;
+ }
+
+ public void setPublisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE(
+ int publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE) {
+ this.publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE = publisherDEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE;
+ }
+
+ public int getPublisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE() {
+ return publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE;
+ }
+
+ public void setPublisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE(int publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE) {
+ this.publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE = publisherPUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE;
+ }
+
+ public int getPublisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE() {
+ return publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE;
+ }
+
+ public void setPublisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE(int publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE) {
+ this.publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE = publisherPUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE;
+ }
+
+ public int getsubscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS() {
+ return subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS;
+ }
+
+ public void setsubscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS(int subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS) {
+ this.subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS = subscriberDEFAULT_SUBSCRIBER_TIMEOUT_MS;
+ }
+
+ public int getsubscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT() {
+ return subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT;
+ }
+
+ public void setsubscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT(int subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT) {
+ this.subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT = subscriberDEFAULT_SUBSCRIBER_MESSAGE_LIMIT;
+ }
+
+ public String getsubscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX() {
+ return subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX;
+ }
+
+ public void setsubscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX(String subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX) {
+ this.subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX = subscriberDEFAULT_SUBSCRIBER_GROUP_PREFIX;
+ }
+
+ public String getsubscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME() {
+ return subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME;
+ }
+
+ public void setsubscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME(String subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME) {
+ this.subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME = subscriberSUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME;
+ }
+
+ public String getsubscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME() {
+ return subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME;
+ }
+
+ public void setsubscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME(String subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME) {
+ this.subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME = subscriberSUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME;
+ }
+
+ public int getPollingInterval() {
+ return pollingInterval;
+ }
+
+ public void setPollingInterval(int pollingInterval) {
+ this.pollingInterval = pollingInterval;
+ }
+
+
+}
diff --git a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/FetchDynamicConfig.java b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/FetchDynamicConfig.java index af219ce..4bc66bb 100644 --- a/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/FetchDynamicConfig.java +++ b/UniversalVesAdapter/src/main/java/org/onap/universalvesadapter/utils/FetchDynamicConfig.java @@ -1,196 +1,223 @@ -/* -* ============LICENSE_START======================================================= -* ONAP : DCAE -* ================================================================================ -* Copyright 2019 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.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.Map; -import org.json.JSONArray; -import org.json.JSONObject; -import org.json.JSONTokener; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -@Component -public class FetchDynamicConfig { - - private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger"); - private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger"); - - private static String url; - public static String retString; - public static String retCBSString; - private static Map<String, String> env; - - public FetchDynamicConfig() { - } - - public static void cbsCall(String configFile) { - - env = System.getenv(); - Boolean areEqual; - // Call consul api and identify the CBS Service address and port - getconsul(); - // Construct and invoke CBS API to get application Configuration - getCBS(); - // Verify if data has changed - areEqual = verifyConfigChange(configFile); - - if (!areEqual) { - FetchDynamicConfig fc = new FetchDynamicConfig(); - fc.writefile(retCBSString,configFile); - } else { - debugLogger.info("New config pull results identical - " + configFile + " NOT refreshed"); - } - } - - - private static void getconsul() { - url = env.get("CONSUL_HOST") + ":8500/v1/catalog/service/" + env.get("CONFIG_BINDING_SERVICE"); - retString = executecurl(url); - debugLogger.info("CBS details fetched from Consul"); - } - - public static boolean verifyConfigChange(String configFile) { - - boolean areEqual = false; - // Read current data - try { - File f = new File(configFile); - if (f.exists() && !f.isDirectory()) { - - String jsonData = readFile(configFile); - JSONObject jsonObject = new JSONObject(jsonData); - - ObjectMapper mapper = new ObjectMapper(); - - JsonNode tree1 = mapper.readTree(jsonObject.toString()); - JsonNode tree2 = mapper.readTree(retCBSString); - areEqual = tree1.equals(tree2); - debugLogger.info("Comparison value:" + areEqual); - } else { - debugLogger.info("First time config file read: " + configFile); - } - - } catch (IOException e) { - errorLogger.error("Comparison with new fetched data failed" + e.getMessage()); - - } - - return areEqual; - - } - - public static void getCBS() { - - // consul return as array - JSONTokener temp = new JSONTokener(retString); - JSONObject cbsjobj = (JSONObject) new JSONArray(temp).get(0); - - String urlPart1 = null; - if (cbsjobj.has("ServiceAddress") && cbsjobj.has("ServicePort")) { - - urlPart1 = cbsjobj.getString("ServiceAddress") + ":" + cbsjobj.getInt("ServicePort"); - - } - debugLogger.info("CONFIG_BINDING_SERVICE DNS RESOLVED:" + urlPart1); - - if (env.containsKey("HOSTNAME")) { - url = urlPart1 + "/service_component/" + env.get("HOSTNAME"); - retCBSString = executecurl(url); - } else if (env.containsKey("SERVICE_NAME")) { - url = urlPart1 + "/service_component/" + env.get("SERVICE_NAME"); - retCBSString = executecurl(url); - } else { - errorLogger.error("Service name environment variable - HOSTNAME/SERVICE_NAME not found within container "); - } - - } - - public void writefile(String retCBSString, String configFile) { - debugLogger.info("URL to fetch configuration:" + url); - - String indentedretstring = (new JSONObject(retCBSString)).toString(4); - - try (FileWriter file = new FileWriter(configFile)) { - file.write(indentedretstring); - - debugLogger.info("Successfully Copied JSON Object to file " + configFile); - } catch (IOException e) { - errorLogger.error("Error in writing configuration into file " + configFile + retString + e.getMessage()); - e.printStackTrace(); - } - - } - - public static String readFile(String filename) { - String result = ""; - try (BufferedReader br = new BufferedReader(new FileReader(filename))) { - StringBuilder sb = new StringBuilder(); - String line = br.readLine(); - while (line != null) { - sb.append(line); - line = br.readLine(); - } - result = sb.toString(); - } catch (FileNotFoundException e) { - errorLogger.error("colud not find file :",filename); - - } catch (Exception e) { - errorLogger.error("unable to read the file , reason:",e.getCause()); - } - return result; - } - private static String executecurl(String url) { - - String[] command = { "curl", "-v", url }; - ProcessBuilder process = new ProcessBuilder(command); - Process p; - String result = null; - try { - p = process.start(); - InputStreamReader ipr = new InputStreamReader(p.getInputStream()); - BufferedReader reader = new BufferedReader(ipr); - StringBuilder builder = new StringBuilder(); - String line; - - while ((line = reader.readLine()) != null) { - builder.append(line); - } - result = builder.toString(); - reader.close(); - ipr.close(); - } catch (IOException e) { - errorLogger.error("error", e); - e.printStackTrace(); - } - return result; - - } - -} +/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : DCAE
+ * ================================================================================
+ * Copyright 2019 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.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.nio.file.Files;
+import java.util.Map;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ResourceUtils;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+@Component
+public class FetchDynamicConfig {
+
+ private static final Logger debugLogger = LoggerFactory.getLogger("debugLogger");
+ private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
+
+ private static String url;
+ public static String retString;
+ public static String retCBSString;
+ private static Map<String, String> env;
+
+ public FetchDynamicConfig() {}
+
+ public static void cbsCall(String configFile) {
+
+ env = System.getenv();
+ Boolean areEqual;
+ // Call consul api and identify the CBS Service address and port
+ getconsul();
+ // Construct and invoke CBS API to get application Configuration
+ getCBS();
+ // Verify if data has changed
+ areEqual = verifyConfigChange(configFile);
+
+ if (!areEqual) {
+ FetchDynamicConfig fc = new FetchDynamicConfig();
+ fc.writefile(retCBSString, configFile);
+ } else {
+ debugLogger.info("New config pull results identical - " + configFile
+ + " NOT refreshed");
+ }
+ }
+
+
+ private static void getconsul() {
+ url = env.get("CONSUL_HOST") + ":8500/v1/catalog/service/"
+ + env.get("CONFIG_BINDING_SERVICE");
+ retString = executecurl(url);
+ debugLogger.info("CBS details fetched from Consul");
+ }
+
+ public static boolean verifyConfigChange(String configFile) {
+
+ boolean areEqual = false;
+ // Read current data
+ try {
+
+ File f = new File(
+ ClassLoader.getSystemResource(configFile.trim()).getFile());
+
+ if (f.exists() && !f.isDirectory()) {
+ debugLogger.info(
+ "Comparing local configuration with the configuration fethed from CBS ");
+
+ String jsonData = readFile(configFile);
+ JSONObject jsonObject = new JSONObject(jsonData);
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ JsonNode tree1 = mapper.readTree(jsonObject.toString());
+ JsonNode tree2 = mapper.readTree(retCBSString);
+ areEqual = tree1.equals(tree2);
+ debugLogger.info("Comparison value:" + areEqual);
+ } else {
+ debugLogger.info("First time config file read: " + configFile);
+ }
+
+ } catch (IOException e) {
+ errorLogger.error(
+ "Comparison with new fetched data failed" + e.getMessage());
+
+ }
+
+ return areEqual;
+
+ }
+
+ public static void getCBS() {
+
+ // consul return as array
+ JSONTokener temp = new JSONTokener(retString);
+ JSONObject cbsjobj = (JSONObject) new JSONArray(temp).get(0);
+
+ String urlPart1 = null;
+ if (cbsjobj.has("ServiceAddress") && cbsjobj.has("ServicePort")) {
+
+ urlPart1 = cbsjobj.getString("ServiceAddress") + ":"
+ + cbsjobj.getInt("ServicePort");
+
+ }
+ debugLogger.info("CONFIG_BINDING_SERVICE HOST:PORT is " + urlPart1);
+
+ if (env.containsKey("HOSTNAME")) {
+ url = urlPart1 + "/service_component/" + env.get("HOSTNAME");
+ retCBSString = executecurl(url);
+ debugLogger.info("Configuration fetched from CBS successfully..");
+ } else if (env.containsKey("SERVICE_NAME")) {
+ url = urlPart1 + "/service_component/" + env.get("SERVICE_NAME");
+ retCBSString = executecurl(url);
+ debugLogger.info("Configuration fetched from CBS successfully..");
+ } else {
+ errorLogger.error(
+ "Service name environment variable - HOSTNAME/SERVICE_NAME not found within container ");
+ }
+
+ }
+
+ public void writefile(String retCBSString, String configFile) {
+
+ String indentedretstring = (new JSONObject(retCBSString)).toString(4);
+ File f = new File(ClassLoader.getSystemResource(configFile.trim()).getFile());
+ try {
+ debugLogger.info("Overwriting local configuration file " + configFile
+ + " with configuartions received from CBS");
+
+
+ File file2 = ResourceUtils.getFile("classpath:" + configFile);
+ FileWriter fstream = new FileWriter(file2, false);
+ PrintWriter printWriter = new PrintWriter(fstream);
+ printWriter.print(indentedretstring);
+ printWriter.close();
+
+ debugLogger.info("New Config successfully written to local file to "
+ + configFile);
+ } catch (IOException e) {
+ errorLogger.error("Error in writing configuration into local KV file "
+ + configFile + retString + e.getMessage());
+ e.printStackTrace();
+ }
+
+ }
+
+ public static String readFile(String configFileName) {
+ String content = null;
+ File file = null;
+
+ try {
+ file = ResourceUtils.getFile("classpath:" + configFileName);
+ content = new String(Files.readAllBytes(file.toPath()));
+ } catch (FileNotFoundException e) {
+ errorLogger.error("colud not find file :", file.getName());
+
+ } catch (IOException e) {
+ errorLogger.error("unable to read the file , reason:", e.getCause());
+ } catch (Exception e) {
+ errorLogger.error("Exception occured , reason:", e.getMessage());
+ }
+
+ return content;
+
+ }
+
+ private static String executecurl(String url) {
+
+ String[] command = {"curl", "-v", url};
+ ProcessBuilder process = new ProcessBuilder(command);
+ Process p;
+ String result = null;
+ try {
+ p = process.start();
+ InputStreamReader ipr = new InputStreamReader(p.getInputStream());
+ BufferedReader reader = new BufferedReader(ipr);
+ StringBuilder builder = new StringBuilder();
+ String line;
+
+ while ((line = reader.readLine()) != null) {
+ builder.append(line);
+ }
+ result = builder.toString();
+ reader.close();
+ ipr.close();
+ } catch (IOException e) {
+ errorLogger.error("error", e);
+ e.printStackTrace();
+ }
+ return result;
+
+ }
+
+}
diff --git a/UniversalVesAdapter/src/main/resources/defaultSnmpMappingFile.xml b/UniversalVesAdapter/src/main/resources/defaultSnmpMappingFile.xml index 5f31fab..4263137 100644 --- a/UniversalVesAdapter/src/main/resources/defaultSnmpMappingFile.xml +++ b/UniversalVesAdapter/src/main/resources/defaultSnmpMappingFile.xml @@ -1,51 +1,43 @@ <?xml version="1.0" encoding="UTF-8"?>
-<!-- Created with Liquid Technologies Online Tools 1.0 (https://www.liquid-technologies.com) -->
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.4.xsd" xmlns:json="http://www.milyn.org/xsd/smooks/json-1.1.xsd">
<json:reader rootName="vesevent" keyWhitspaceReplacement="-">
<json:keyMap>
<json:key from="date&time" to="date-and-time" />
</json:keyMap>
</json:reader>
- <jb:bean class="org.onap.dcaegen2.ves.domain.ves5_4.VesEvent" beanId="vesEvent" createOnElement="vesevent">
+ <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.VesEvent" beanId="vesEvent" createOnElement="vesevent">
<jb:wiring property="event" beanIdRef="event" />
</jb:bean>
- <jb:bean class="org.onap.dcaegen2.ves.domain.ves5_4.Event" beanId="event" createOnElement="vesevent">
+ <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.Event" beanId="event" createOnElement="vesevent">
<jb:wiring property="commonEventHeader" beanIdRef="commonEventHeader" />
- <jb:wiring property="faultFields" beanIdRef="faultFields"/>
+ <jb:wiring property="faultFields" beanIdRef="faultFields" />
</jb:bean>
- <jb:bean class="org.onap.dcaegen2.ves.domain.ves5_4.CommonEventHeader" beanId="commonEventHeader" createOnElement="vesevent">
- <jb:expression property="version">"3.0"</jb:expression>
+ <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader" beanId="commonEventHeader" createOnElement="vesevent">
+ <jb:expression property="version">'3.0'</jb:expression>
<jb:expression property="eventType">'FaultField'</jb:expression>
<jb:expression property="eventId" execOnElement="vesevent">'XXXX'</jb:expression>
<jb:expression property="reportingEntityName">'VESMapper'</jb:expression>
- <jb:expression property="domain">org.onap.dcaegen2.ves.domain.ves5_4.CommonEventHeader.Domain.FAULT</jb:expression>
+ <jb:expression property="domain">org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader.Domain.FAULT</jb:expression>
<jb:expression property="eventName" execOnElement="vesevent">commonEventHeader.domain</jb:expression>
<jb:value property="sequence" data="0" default="0" decoder="Long" />
- <jb:value property="lastEpochMicrosec" data="#/time-received" />
- <jb:value property="startEpochMicrosec" data="#/time-received" />
- <jb:expression property="priority">org.onap.dcaegen2.ves.domain.ves5_4.CommonEventHeader.Priority.NORMAL</jb:expression>
- <jb:expression property="sourceName">"VesAdapter"</jb:expression>
-
- </jb:bean>
- <jb:bean class="org.onap.dcaegen2.ves.domain.ves5_4.FaultFields" beanId="faultFields" createOnElement="vesevent">
- <jb:value property="faultFieldsVersion" data="2.0" default="2.0" decoder="Double" />
-<jb:value property="alarmCondition" data="#/trap-category" />
- <jb:expression property="specificProblem">"SNMP Fault"</jb:expression>
- <jb:expression property="vfStatus">org.onap.dcaegen2.ves.domain.ves5_4.FaultFields.VfStatus.ACTIVE</jb:expression>
-
- <jb:expression property="eventSeverity">org.onap.dcaegen2.ves.domain.ves5_4.FaultFields.EventSeverity.MINOR</jb:expression>
-
- <jb:wiring property="alarmAdditionalInformation" beanIdRef="alarmAdditionalInformationroot"/>
-
- </jb:bean>
-
-
- <jb:bean class="java.util.ArrayList" beanId="alarmAdditionalInformationroot" createOnElement="vesevent">
- <jb:wiring beanIdRef="alarmAdditionalInformation"/>
- </jb:bean>
-
- <jb:bean class="org.onap.dcaegen2.ves.domain.ves5_4.AlarmAdditionalInformation" beanId="alarmAdditionalInformation" createOnElement="varbinds/element">
- <jb:value property="name" data="#/varbind_oid"/>
- <jb:value property="value" data="#/varbind_value" />
- </jb:bean>
+ <jb:value property="lastEpochMicrosec" data="#/time-received" />
+ <jb:value property="startEpochMicrosec" data="#/time-received" />
+ <jb:expression property="priority">org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader.Priority.NORMAL</jb:expression>
+ <jb:expression property="sourceName">'VesAdapter'</jb:expression>
+ </jb:bean>
+ <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.FaultFields" beanId="faultFields" createOnElement="vesevent">
+ <jb:value property="faultFieldsVersion" data="2.0" default="2.0" decoder="Double" />
+ <jb:value property="alarmCondition" data="#/trap-category" />
+ <jb:expression property="specificProblem">'SNMP Fault'</jb:expression>
+ <jb:expression property="vfStatus">org.onap.dcaegen2.ves.domain.ves54.FaultFields.VfStatus.ACTIVE</jb:expression>
+ <jb:expression property="eventSeverity">org.onap.dcaegen2.ves.domain.ves54.FaultFields.EventSeverity.MINOR</jb:expression>
+ <jb:wiring property="alarmAdditionalInformation" beanIdRef="alarmAdditionalInformationroot" />
+ </jb:bean>
+ <jb:bean class="java.util.ArrayList" beanId="alarmAdditionalInformationroot" createOnElement="vesevent">
+ <jb:wiring beanIdRef="alarmAdditionalInformation" />
+ </jb:bean>
+ <jb:bean class="org.onap.dcaegen2.ves.domain.ves54.AlarmAdditionalInformation" beanId="alarmAdditionalInformation" createOnElement="varbinds/element">
+ <jb:value property="name" data="#/varbind_oid" />
+ <jb:value property="value" data="#/varbind_value" />
+ </jb:bean>
</smooks-resource-list>
\ No newline at end of file diff --git a/UniversalVesAdapter/src/main/resources/kv.json b/UniversalVesAdapter/src/main/resources/kv.json index 9e245d1..03c87e9 100644 --- a/UniversalVesAdapter/src/main/resources/kv.json +++ b/UniversalVesAdapter/src/main/resources/kv.json @@ -2,23 +2,53 @@ "app_preferences":{
"collectors":[
{
- "identifier":"notification-id",
- "subscriberTopic":"ONAP-COLLECTOR-RESTCONFTRAP",
+ "stream_subscriber":"rcc-notification",
"mapping-files":[
{
- "defaultMappingFile-ONAP-COLLECTOR-RESTCONFTRAP":"<?xml version='1.0' encoding='UTF-8'?><smooks-resource-list xmlns='http://www.milyn.org/xsd/smooks-1.1.xsd' xmlns:jb='http://www.milyn.org/xsd/smooks/javabean-1.4.xsd' xmlns:json='http://www.milyn.org/xsd/smooks/json-1.1.xsd'><json:reader rootName='vesevent' keyWhitspaceReplacement='-'><json:keyMap><json:key from='date&time' to='date-and-time' /><\/json:keyMap><\/json:reader><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.VesEvent' beanId='vesEvent' createOnElement='vesevent'><jb:wiring property='event' beanIdRef='event' /><\/jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.Event' beanId='event' createOnElement='vesevent'><jb:wiring property='commonEventHeader' beanIdRef='commonEventHeader' /><jb:wiring property='pnfRegistrationFields' beanIdRef='pnfRegistrationFields' /><\/jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader' beanId='commonEventHeader' createOnElement='vesevent'><jb:expression property='version'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Version._4_0_1<\/jb:expression><jb:expression property='eventType'>'pnfRegistration'<\/jb:expression><jb:expression property='vesEventListenerVersion'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.VesEventListenerVersion._7_0_1<\/jb:expression><jb:expression property='eventId' execOnElement='vesevent'>'registration_'+commonEventHeader.ts1<\/jb:expression><jb:expression property='reportingEntityName'>'VESMapper'<\/jb:expression><jb:expression property='domain'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Domain.PNF_REGISTRATION<\/jb:expression><jb:expression property='eventName' execOnElement='vesevent'>commonEventHeader.domain<\/jb:expression><jb:value property='sequence' data='0' default='0' decoder='Long' /><jb:expression property='lastEpochMicrosec' execOnElement='vesevent'>commonEventHeader.ts1<\/jb:expression><jb:expression property='startEpochMicrosec' execOnElement='vesevent'>commonEventHeader.ts1<\/jb:expression><jb:expression property='priority'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Priority.NORMAL<\/jb:expression><jb:value property='sourceName' data='notification/message/target' /><\/jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields' beanId='pnfRegistrationFields' createOnElement='vesevent'><jb:expression property='pnfRegistrationFieldsVersion'>org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields.PnfRegistrationFieldsVersion._2_0<\/jb:expression><jb:value property='serialNumber' data='notification/message/content/onu/sn' /><\/jb:bean><\/smooks-resource-list>"
+ "defaultMappingFile-rcc-notification":"<?xml version='1.0' encoding='UTF-8'?><smooks-resource-list xmlns='http://www.milyn.org/xsd/smooks-1.1.xsd' xmlns:jb='http://www.milyn.org/xsd/smooks/javabean-1.4.xsd' xmlns:json='http://www.milyn.org/xsd/smooks/json-1.1.xsd'><json:reader rootName='vesevent' keyWhitspaceReplacement='-'><json:keyMap><json:key from='date&time' to='date-and-time' /></json:keyMap></json:reader><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.VesEvent' beanId='vesEvent' createOnElement='vesevent'><jb:wiring property='event' beanIdRef='event' /></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.Event' beanId='event' createOnElement='vesevent'><jb:wiring property='commonEventHeader' beanIdRef='commonEventHeader' /><jb:wiring property='pnfRegistrationFields' beanIdRef='pnfRegistrationFields' /></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader' beanId='commonEventHeader' createOnElement='vesevent'><jb:expression property='version'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Version._4_0_1</jb:expression><jb:expression property='eventType'>'pnfRegistration'</jb:expression><jb:expression property='vesEventListenerVersion'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.VesEventListenerVersion._7_0_1</jb:expression><jb:expression property='eventId' execOnElement='vesevent'>'registration_'+commonEventHeader.ts1</jb:expression><jb:expression property='reportingEntityName'>'VESMapper'</jb:expression><jb:expression property='domain'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Domain.PNF_REGISTRATION</jb:expression><jb:expression property='eventName' execOnElement='vesevent'>commonEventHeader.domain</jb:expression><jb:value property='sequence' data='0' default='0' decoder='Long' /><jb:expression property='lastEpochMicrosec' execOnElement='vesevent'>commonEventHeader.ts1</jb:expression><jb:expression property='startEpochMicrosec' execOnElement='vesevent'>commonEventHeader.ts1</jb:expression><jb:expression property='priority'>org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Priority.NORMAL</jb:expression><jb:expression property='sourceName' execOnElement='vesevent'>pnfRegistrationFields.vendorName+'-'+pnfRegistrationFields.serialNumber</jb:expression></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields' beanId='pnfRegistrationFields' createOnElement='vesevent'><jb:expression property='pnfRegistrationFieldsVersion'>org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields.PnfRegistrationFieldsVersion._2_0</jb:expression><jb:value property='serialNumber' data='pnfRegistration/serialNumber' /><jb:value property='lastServiceDate' data='pnfRegistration/lastServiceDate' /><jb:value property='manufactureDate' data='pnfRegistration/manufactureDate' /><jb:value property='modelNumber' data='pnfRegistration/modelNumber' /><jb:value property='oamV4IpAddress' data='pnfRegistration/oamV4IpAddress' /><jb:value property='oamV6IpAddress' data='pnfRegistration/oamV6IpAddress' /><jb:value property='softwareVersion' data='pnfRegistration/softwareVersion' /><jb:value property='unitFamily' data='pnfRegistration/unitFamily' /><jb:value property='unitType' data='pnfRegistration/unitType' /><jb:value property='vendorName' data='pnfRegistration/vendorName' /><jb:wiring property='additionalFields' beanIdRef='alarmAdditionalInformation'/></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves70.AlarmAdditionalInformation' beanId='alarmAdditionalInformation' createOnElement='vesevent'><jb:wiring property='additionalProperties' beanIdRef='additionalFields2'/></jb:bean><jb:bean beanId='additionalFields2' class='java.util.HashMap' createOnElement='vesevent/pnfRegistration/additionalFields'><jb:value data='pnfRegistration/additionalFields/*' /></jb:bean></smooks-resource-list>"
}
- ]
+ ],
+ "identifier":"notification-id",
+ "stream_publisher":"ves-pnfRegistration"
},
- {
+ {
"identifier":"notify OID",
- "subscriberTopic":"ONAP-COLLECTOR-SNMPTRAP",
+ "stream_subscriber":"snmp-notification",
"mapping-files":[
{
- "defaultMappingFile-ONAP-COLLECTOR-SNMPTRAP":"<?xml version='1.0' encoding='UTF-8'?><smooks-resource-list xmlns='http://www.milyn.org/xsd/smooks-1.1.xsd' xmlns:jb='http://www.milyn.org/xsd/smooks/javabean-1.4.xsd' xmlns:json='http://www.milyn.org/xsd/smooks/json-1.1.xsd'><json:reader rootName='vesevent' keyWhitspaceReplacement='-'><json:keyMap><json:key from='date&time' to='date-and-time' /></json:keyMap></json:reader><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.VesEvent' beanId='vesEvent' createOnElement='vesevent'><jb:wiring property='event' beanIdRef='event' /></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.Event' beanId='event' createOnElement='vesevent'><jb:wiring property='commonEventHeader' beanIdRef='commonEventHeader' /><jb:wiring property='faultFields' beanIdRef='faultFields'/></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader' beanId='commonEventHeader' createOnElement='vesevent'><jb:expression property='version'>'3.0'</jb:expression><jb:expression property='eventType'>'FaultField'</jb:expression><jb:expression property='eventId' execOnElement='vesevent'>'XXXX'</jb:expression><jb:expression property='reportingEntityName'>'VESMapper'</jb:expression><jb:expression property='domain'>org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader.Domain.FAULT</jb:expression><jb:expression property='eventName' execOnElement='vesevent'>commonEventHeader.domain</jb:expression><jb:value property='sequence' data='0' default='0' decoder='Long' /><jb:value property='lastEpochMicrosec' data='#/time-received' /><jb:value property='startEpochMicrosec' data='#/time-received' /><jb:expression property='priority'>org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader.Priority.NORMAL</jb:expression><jb:expression property='sourceName'>'VesAdapter'</jb:expression></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.FaultFields' beanId='faultFields' createOnElement='vesevent'><jb:value property='faultFieldsVersion' data='2.0' default='2.0' decoder='Double' /><jb:value property='alarmCondition' data='#/trap-category' /><jb:expression property='specificProblem'>'SNMP Fault'</jb:expression><jb:expression property='vfStatus'>org.onap.dcaegen2.ves.domain.ves54.FaultFields.VfStatus.ACTIVE</jb:expression><jb:expression property='eventSeverity'>org.onap.dcaegen2.ves.domain.ves54.FaultFields.EventSeverity.MINOR</jb:expression><jb:wiring property='alarmAdditionalInformation' beanIdRef='alarmAdditionalInformationroot'/></jb:bean><jb:bean class='java.util.ArrayList' beanId='alarmAdditionalInformationroot' createOnElement='vesevent'><jb:wiring beanIdRef='alarmAdditionalInformation'/></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.AlarmAdditionalInformation' beanId='alarmAdditionalInformation' createOnElement='varbinds/element'><jb:value property='name' data='#/varbind_oid'/><jb:value property='value' data='#/varbind_value' /></jb:bean></smooks-resource-list>"
+ "defaultMappingFile-snmp-notification":"<?xml version='1.0' encoding='UTF-8'?><smooks-resource-list xmlns='http://www.milyn.org/xsd/smooks-1.1.xsd' xmlns:jb='http://www.milyn.org/xsd/smooks/javabean-1.4.xsd' xmlns:json='http://www.milyn.org/xsd/smooks/json-1.1.xsd'><json:reader rootName='vesevent' keyWhitspaceReplacement='-'><json:keyMap><json:key from='date&time' to='date-and-time' /></json:keyMap></json:reader><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.VesEvent' beanId='vesEvent' createOnElement='vesevent'><jb:wiring property='event' beanIdRef='event' /></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.Event' beanId='event' createOnElement='vesevent'><jb:wiring property='commonEventHeader' beanIdRef='commonEventHeader' /><jb:wiring property='faultFields' beanIdRef='faultFields'/></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader' beanId='commonEventHeader' createOnElement='vesevent'><jb:expression property='version'>'3.0'</jb:expression><jb:expression property='eventType'>'FaultField'</jb:expression><jb:expression property='eventId' execOnElement='vesevent'>'XXXX'</jb:expression><jb:expression property='reportingEntityName'>'VESMapper'</jb:expression><jb:expression property='domain'>org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader.Domain.FAULT</jb:expression><jb:expression property='eventName' execOnElement='vesevent'>commonEventHeader.domain</jb:expression><jb:value property='sequence' data='0' default='0' decoder='Long' /><jb:value property='lastEpochMicrosec' data='#/time-received' /><jb:value property='startEpochMicrosec' data='#/time-received' /><jb:expression property='priority'>org.onap.dcaegen2.ves.domain.ves54.CommonEventHeader.Priority.NORMAL</jb:expression><jb:expression property='sourceName'>'VesAdapter'</jb:expression></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.FaultFields' beanId='faultFields' createOnElement='vesevent'><jb:value property='faultFieldsVersion' data='2.0' default='2.0' decoder='Double' /><jb:value property='alarmCondition' data='#/trap-category' /><jb:expression property='specificProblem'>'SNMP Fault'</jb:expression><jb:expression property='vfStatus'>org.onap.dcaegen2.ves.domain.ves54.FaultFields.VfStatus.ACTIVE</jb:expression><jb:expression property='eventSeverity'>org.onap.dcaegen2.ves.domain.ves54.FaultFields.EventSeverity.MINOR</jb:expression><jb:wiring property='alarmAdditionalInformation' beanIdRef='alarmAdditionalInformationroot'/></jb:bean><jb:bean class='java.util.ArrayList' beanId='alarmAdditionalInformationroot' createOnElement='vesevent'><jb:wiring beanIdRef='alarmAdditionalInformation'/></jb:bean><jb:bean class='org.onap.dcaegen2.ves.domain.ves54.AlarmAdditionalInformation' beanId='alarmAdditionalInformation' createOnElement='varbinds/element'><jb:value property='name' data='#/varbind_oid'/><jb:value property='value' data='#/varbind_value' /></jb:bean></smooks-resource-list>"
}
- ]
+ ],
+ "stream_publisher":"ves-fault"
}
]
+ },
+ "streams_publishes":{
+ "ves-fault":{
+ "type":"message_router",
+ "dmaap_info":{
+ "topic_url":"http://10.53.172.156:3904/events/unauthenticated.SEC_FAULT_OUTPUT"
+ }
+ },
+ "ves-pnfRegistration":{
+ "type":"message_router",
+ "dmaap_info":{
+ "topic_url":"http://10.53.172.156:3904/events/unauthenticated.VES_PNFREG_OUTPUT"
+ }
+ }
+ },
+ "streams_subscribes":{
+ "snmp-notification":{
+ "type":"message_router",
+ "dmaap_info":{
+ "topic_url":"http://10.53.172.156:3904/events/ONAP-COLLECTOR-SNMPTRAP"
+ }
+ },
+ "rcc-notification":{
+ "type":"message_router",
+ "dmaap_info":{
+ "topic_url":"http://10.53.172.156:3904/events/ONAP-COLLECTOR-RESTCONFTRAP"
+ }
+ }
}
}
\ No newline at end of file diff --git a/UniversalVesAdapter/src/main/resources/mapper.properties b/UniversalVesAdapter/src/main/resources/mapper.properties index d85010f..76751a9 100644 --- a/UniversalVesAdapter/src/main/resources/mapper.properties +++ b/UniversalVesAdapter/src/main/resources/mapper.properties @@ -1,41 +1,41 @@ - # ///////////////// DMaaP Config Constants - - # defaults to no username -mr.DEFAULT_USER_NAME=null - # defaults to no userPassword -mr.DEFAULT_USER_PASSWORD=null - #d efaults to using https protocol -mr.DEFAULT_PROTOCOL=http - # defaults to json content type -mr.DEFAULT_CONTENT_TYPE=application/json - -mr.DMAAP_URI_PATH_PREFIX=/events/ -mr.DMAAP_DEFAULT_CONSUMER_ID=con2 -mr.DMAAP_GROUP_PREFIX=grp2 - -#DMaaP MR subscriber thread's polling interval in milli second -mr.POLLING_INTERVAL=10000 - -# ///////////////// Publisher Constants - -#Dmaap Publisher Topic -mr.publisher.topic=unauthenticated.SEC_FAULT_OUTPUT -#disable batching by default -mr.publisher.DEFAULT_PUBLISHER_MAX_BATCH_SIZE=1 -# default recovery messages size -mr.publisher.DEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE=100000 -#number of retries when flushing messages -mr.publisher.PUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE=5 -#delay in retrying for flushing messages -mr.publisher.PUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE=5000 - - -#////////////////// Subscriber Constants -mr.subscriber.DEFAULT_SUBSCRIBER_TIMEOUT_MS=-1 -mr.subscriber.DEFAULT_SUBSCRIBER_MESSAGE_LIMIT=-1 -mr.subscriber.DEFAULT_SUBSCRIBER_GROUP_PREFIX=grp2 -mr.subscriber.SUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME=timeout -mr.subscriber.SUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME=limit -mr.mr_URI_PATH_PREFIX = /events/ -mr.mr_GROUP_PREFIX = grp2 -mr.mr_DEFAULT_CONSUMER_ID = con2 + # ///////////////// DMaaP Config Constants
+
+ # defaults to no username
+mr.DEFAULT_USER_NAME=null
+ # defaults to no userPassword
+mr.DEFAULT_USER_PASSWORD=null
+ #d efaults to using https protocol
+mr.DEFAULT_PROTOCOL=http
+ # defaults to json content type
+mr.DEFAULT_CONTENT_TYPE=application/json
+
+mr.DMAAP_URI_PATH_PREFIX=/events/
+mr.DMAAP_DEFAULT_CONSUMER_ID=con2
+mr.DMAAP_GROUP_PREFIX=grp2
+
+#DMaaP MR subscriber thread's polling interval in milli second
+mr.POLLING_INTERVAL=10000
+
+# ///////////////// Publisher Constants
+
+#Dmaap Publisher Topic
+mr.publisher.topic=unauthenticated.VES_PNFREG_OUTPUT
+#disable batching by default
+mr.publisher.DEFAULT_PUBLISHER_MAX_BATCH_SIZE=1
+# default recovery messages size
+mr.publisher.DEFAULT_PUBLISHER_MAX_RECOVERY_QUEUE_SIZE=100000
+#number of retries when flushing messages
+mr.publisher.PUBLISHER_MAX_FLUSH_RETRIES_ON_CLOSE=5
+#delay in retrying for flushing messages
+mr.publisher.PUBLISHER_DELAY_MS_ON_RETRIES_ON_CLOSE=5000
+
+
+#////////////////// Subscriber Constants
+mr.subscriber.DEFAULT_SUBSCRIBER_TIMEOUT_MS=-1
+mr.subscriber.DEFAULT_SUBSCRIBER_MESSAGE_LIMIT=-1
+mr.subscriber.DEFAULT_SUBSCRIBER_GROUP_PREFIX=grp2
+mr.subscriber.SUBSCRIBER_TIMEOUT_QUERY_PARAM_NAME=timeout
+mr.subscriber.SUBSCRIBER_MSG_LIMIT_QUERY_PARAM_NAME=limit
+mr.mr_URI_PATH_PREFIX = /events/
+mr.mr_GROUP_PREFIX = grp2
+mr.mr_DEFAULT_CONSUMER_ID = con2
diff --git a/UniversalVesAdapter/src/test/java/org/onap/universalvesadapter/adapter/UniversalEventAdapterTest.java b/UniversalVesAdapter/src/test/java/org/onap/universalvesadapter/adapter/UniversalEventAdapterTest.java index b016cc7..233a27a 100644 --- a/UniversalVesAdapter/src/test/java/org/onap/universalvesadapter/adapter/UniversalEventAdapterTest.java +++ b/UniversalVesAdapter/src/test/java/org/onap/universalvesadapter/adapter/UniversalEventAdapterTest.java @@ -46,108 +46,113 @@ import org.springframework.boot.test.context.SpringBootTest; @RunWith(PowerMockRunner.class)
@SpringBootTest(classes = Application.class)
public class UniversalEventAdapterTest {
-
- private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
-
- @Mock
- private VESAdapterInitializer vesAdapterInitializer;
-
- @InjectMocks
- private UniversalEventAdapter universalVesAdapter;
-
- @Before
- public void init() {
- MockitoAnnotations.initMocks(this);
- }
-
- @PrepareForTest({CollectorConfigPropertyRetrival.class})
- @Test
- public void testtransform() {
- StringBuffer incomingJsonString = new StringBuffer("{\n" + " \"rule-id\": \"12121\",\n"
- + " \"notification\": {\n"
- + " \"event-time\": \"2018-03-15T08:15:32.000Z\",\n"
- + " \"notification-id\": \"2541256\",\n" + " \"message\": {\n"
- + " \"topic\":\"resource\",\n"
- + " \"object-type\":\"onu\", \n"
- + " \"version\": \"v1\", \n"
- + " \"operation\": \"create\", \n"
- + " \"target\": \"ont/ont=23hk1231231232\", \n"
- + " \"content\": {\n" + " \"onu\": {\n"
- + " \"sn\": \"48575443FA637D1A\",\n"
- + " \"refParentNE\": \"550e8400-e29b-41d4-a716-446655440000\",\n"
- + " \"refParentNeNativeId\": \"FDN\",\n"
- + " \"refParentLTP\": \"8c0db89e-218c-4e18-b0de-7a6788b3dda4\",\n"
- + " \"refParentLTPNativeId\": \"FDN\",\n"
- + " \"onuId\": \"213\",\n"
- + " \"accessID\": \"HG65875420001\"\n" + " }\n"
- + " }\n" + " }\n" + " }\n" + "}");
- Map<String, String> testMap = new HashMap<String, String>();
- testMap.put("defaultMappingFile-" + Thread.currentThread().getName(),
- "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
- + "<smooks-resource-list xmlns=\"http://www.milyn.org/xsd/smooks-1.1.xsd\" xmlns:jb=\"http://www.milyn.org/xsd/smooks/javabean-1.4.xsd\" xmlns:json=\"http://www.milyn.org/xsd/smooks/json-1.1.xsd\">\n"
- + " <json:reader rootName=\"vesevent\" keyWhitspaceReplacement=\"-\">\n"
- + " <json:keyMap>\n"
- + " <json:key from=\"date&time\" to=\"date-and-time\" />\n"
- + " </json:keyMap>\n" + " </json:reader>\n"
- + " <jb:bean class=\"org.onap.dcaegen2.ves.domain.ves70.VesEvent\""
- + " beanId=\"vesEvent\" createOnElement=\"vesevent\">\n"
- + " <jb:wiring property=\"event\" beanIdRef=\"event\" />\n"
- + " </jb:bean>\n"
- + " <jb:bean class=\"org.onap.dcaegen2.ves.domain.ves70.Event\" "
- + "beanId=\"event\" createOnElement=\"vesevent\">\n"
- + " <jb:wiring property=\"commonEventHeader\" beanIdRef=\"commonEventHeader\" />\n"
- + " <jb:wiring property=\"pnfRegistrationFields\" beanIdRef=\"pnfRegistrationFields\" />\n"
- + " </jb:bean>\n"
- + " <jb:bean class=\"org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader\""
- + " beanId=\"commonEventHeader\" createOnElement=\"vesevent\">\n"
- + "<jb:expression property=\"version\">"
- + "org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Version._4_0_1</jb:expression> \n"
- + "<jb:expression property=\"eventType\">\"pnfRegistration\"</jb:expression>\n"
- + "<jb:expression property=\"vesEventListenerVersion\">"
- + "org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.VesEventListenerVersion._7_0_1"
- + "</jb:expression>\n"
- + " <jb:expression property=\"eventId\" execOnElement=\"vesevent\">"
- + "\"registration_\"+commonEventHeader.ts1</jb:expression>\n"
- + "<jb:expression property=\"reportingEntityName\">\"VESMapper\"</jb:expression>\n"
- + " <jb:expression property=\"domain\">"
- + "org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Domain.PNF_REGISTRATION"
- + "</jb:expression>\n"
- + " <jb:expression property=\"eventName\" execOnElement=\"vesevent\">"
- + "commonEventHeader.domain</jb:expression>\n"
- + "<jb:value property=\"sequence\" data=\"0\" default=\"0\" decoder=\"Long\" />\n"
- + "<jb:expression property=\"lastEpochMicrosec\" execOnElement=\"vesevent\">"
- + "commonEventHeader.ts1</jb:expression>\n"
- + " <jb:expression property=\"startEpochMicrosec\" execOnElement=\"vesevent\">"
- + "commonEventHeader.ts1</jb:expression>\n"
- + " <jb:expression property=\"priority\">"
- + "org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Priority.NORMAL</jb:expression>\n"
- + " <jb:value property=\"sourceName\" data=\"notification/message/target\" />\n"
- + " </jb:bean>\n"
- + " <jb:bean class=\"org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields\""
- + " beanId=\"pnfRegistrationFields\" createOnElement=\"vesevent\">\n"
- + " \n"
- + " <jb:expression property=\"pnfRegistrationFieldsVersion\">"
- + "org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields.PnfRegistrationFieldsVersion._2_0"
- + "</jb:expression>\n"
- + " <jb:value property=\"serialNumber\" data=\"notification/message/content/onu/sn\" />\n"
- + " \n" + " </jb:bean>\n" + "</smooks-resource-list>");
+ private static final Logger errorLogger = LoggerFactory.getLogger("errorLogger");
- try {
- vesAdapterInitializer.setMappingFiles(testMap);
-
- String [] identifiertest =
- CollectorConfigPropertyRetrival.getProperyArray("identifier", "kvTest.json");
- PowerMockito.mockStatic(CollectorConfigPropertyRetrival.class);
- PowerMockito.when(CollectorConfigPropertyRetrival.getProperyArray("identifier", null))
- .thenReturn(identifiertest);
-
- String actualResult = universalVesAdapter.transform(incomingJsonString.toString());
- assertNotNull(actualResult);
- assertNotEquals("", actualResult);
- } catch (VesException exception) {
- errorLogger.error("Error occurred : {}", exception);
+ @Mock
+ private VESAdapterInitializer vesAdapterInitializer;
+
+ @InjectMocks
+ private UniversalEventAdapter universalVesAdapter;
+
+ @Before
+ public void init() {
+ MockitoAnnotations.initMocks(this);
}
- }
-
+
+ @PrepareForTest({CollectorConfigPropertyRetrival.class})
+ @Test
+ public void testtransform() {
+
+ StringBuffer incomingJsonString = new StringBuffer("{\n"
+ + " \"rule-id\": \"12121\",\n" + " \"notification\": {\n"
+ + " \"event-time\": \"2018-03-15T08:15:32.000Z\",\n"
+ + " \"notification-id\": \"2541256\",\n"
+ + " \"message\": {\n"
+ + " \"topic\":\"resource\",\n"
+ + " \"object-type\":\"onu\", \n"
+ + " \"version\": \"v1\", \n"
+ + " \"operation\": \"create\", \n"
+ + " \"target\": \"ont/ont=23hk1231231232\", \n"
+ + " \"content\": {\n" + " \"onu\": {\n"
+ + " \"sn\": \"48575443FA637D1A\",\n"
+ + " \"refParentNE\": \"550e8400-e29b-41d4-a716-446655440000\",\n"
+ + " \"refParentNeNativeId\": \"FDN\",\n"
+ + " \"refParentLTP\": \"8c0db89e-218c-4e18-b0de-7a6788b3dda4\",\n"
+ + " \"refParentLTPNativeId\": \"FDN\",\n"
+ + " \"onuId\": \"213\",\n"
+ + " \"accessID\": \"HG65875420001\"\n"
+ + " }\n" + " }\n" + " }\n"
+ + " }\n" + "}");
+ Map<String, String> testMap = new HashMap<String, String>();
+ testMap.put("defaultMappingFile-" + Thread.currentThread().getName(),
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ + "<smooks-resource-list xmlns=\"http://www.milyn.org/xsd/smooks-1.1.xsd\" xmlns:jb=\"http://www.milyn.org/xsd/smooks/javabean-1.4.xsd\" xmlns:json=\"http://www.milyn.org/xsd/smooks/json-1.1.xsd\">\n"
+ + " <json:reader rootName=\"vesevent\" keyWhitspaceReplacement=\"-\">\n"
+ + " <json:keyMap>\n"
+ + " <json:key from=\"date&time\" to=\"date-and-time\" />\n"
+ + " </json:keyMap>\n" + " </json:reader>\n"
+ + " <jb:bean class=\"org.onap.dcaegen2.ves.domain.ves70.VesEvent\""
+ + " beanId=\"vesEvent\" createOnElement=\"vesevent\">\n"
+ + " <jb:wiring property=\"event\" beanIdRef=\"event\" />\n"
+ + " </jb:bean>\n"
+ + " <jb:bean class=\"org.onap.dcaegen2.ves.domain.ves70.Event\" "
+ + "beanId=\"event\" createOnElement=\"vesevent\">\n"
+ + " <jb:wiring property=\"commonEventHeader\" beanIdRef=\"commonEventHeader\" />\n"
+ + " <jb:wiring property=\"pnfRegistrationFields\" beanIdRef=\"pnfRegistrationFields\" />\n"
+ + " </jb:bean>\n"
+ + " <jb:bean class=\"org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader\""
+ + " beanId=\"commonEventHeader\" createOnElement=\"vesevent\">\n"
+ + "<jb:expression property=\"version\">"
+ + "org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Version._4_0_1</jb:expression> \n"
+ + "<jb:expression property=\"eventType\">\"pnfRegistration\"</jb:expression>\n"
+ + "<jb:expression property=\"vesEventListenerVersion\">"
+ + "org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.VesEventListenerVersion._7_0_1"
+ + "</jb:expression>\n"
+ + " <jb:expression property=\"eventId\" execOnElement=\"vesevent\">"
+ + "\"registration_\"+commonEventHeader.ts1</jb:expression>\n"
+ + "<jb:expression property=\"reportingEntityName\">\"VESMapper\"</jb:expression>\n"
+ + " <jb:expression property=\"domain\">"
+ + "org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Domain.PNF_REGISTRATION"
+ + "</jb:expression>\n"
+ + " <jb:expression property=\"eventName\" execOnElement=\"vesevent\">"
+ + "commonEventHeader.domain</jb:expression>\n"
+ + "<jb:value property=\"sequence\" data=\"0\" default=\"0\" decoder=\"Long\" />\n"
+ + "<jb:expression property=\"lastEpochMicrosec\" execOnElement=\"vesevent\">"
+ + "commonEventHeader.ts1</jb:expression>\n"
+ + " <jb:expression property=\"startEpochMicrosec\" execOnElement=\"vesevent\">"
+ + "commonEventHeader.ts1</jb:expression>\n"
+ + " <jb:expression property=\"priority\">"
+ + "org.onap.dcaegen2.ves.domain.ves70.CommonEventHeader.Priority.NORMAL</jb:expression>\n"
+ + " <jb:value property=\"sourceName\" data=\"notification/message/target\" />\n"
+ + " </jb:bean>\n"
+ + " <jb:bean class=\"org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields\""
+ + " beanId=\"pnfRegistrationFields\" createOnElement=\"vesevent\">\n"
+ + " \n"
+ + " <jb:expression property=\"pnfRegistrationFieldsVersion\">"
+ + "org.onap.dcaegen2.ves.domain.ves70.PnfRegistrationFields.PnfRegistrationFieldsVersion._2_0"
+ + "</jb:expression>\n"
+ + " <jb:value property=\"serialNumber\" data=\"notification/message/content/onu/sn\" />\n"
+ + " \n" + " </jb:bean>\n"
+ + "</smooks-resource-list>");
+
+ try {
+ vesAdapterInitializer.setMappingFiles(testMap);
+
+ String[] identifiertest = CollectorConfigPropertyRetrival
+ .getProperyArray("identifier", "kvTest.json");
+ PowerMockito.mockStatic(CollectorConfigPropertyRetrival.class);
+ PowerMockito.when(CollectorConfigPropertyRetrival
+ .getProperyArray("identifier", null))
+ .thenReturn(identifiertest);
+
+ String actualResult = universalVesAdapter
+ .transform(incomingJsonString.toString());
+ assertNotNull(actualResult);
+ assertNotEquals("", actualResult);
+ } catch (VesException exception) {
+ errorLogger.error("Error occurred : {}", exception);
+ }
+ }
+
}
diff --git a/UniversalVesAdapter/src/main/resources/kvTest.json b/UniversalVesAdapter/src/test/resources/kvTest.json index c4231cb..c4231cb 100644 --- a/UniversalVesAdapter/src/main/resources/kvTest.json +++ b/UniversalVesAdapter/src/test/resources/kvTest.json |