summaryrefslogtreecommitdiffstats
path: root/src/main/resources
diff options
context:
space:
mode:
authorPrudence Au <prudence.au@amdocs.com>2018-08-13 17:06:59 -0400
committerPierre Rioux <pierre.rioux@amdocs.com>2018-08-21 11:21:26 -0400
commitc604f64b971491f8c9b953adce54b847d7946e26 (patch)
tree134f7fc91b4da9e04c564c92337d44df420c8df0 /src/main/resources
parent3baa3ebd0000b15f1c54c736f4a307731b16b923 (diff)
Initial submission for validation service
Change-Id: I9372430f1ae347373d5a9a0c7a427d7bd393d61e Issue-ID: LOG-427 Signed-off-by: Prudence Au (prudence.au@amdocs.com) Signed-off-by: Geora Barsky <georab@amdocs.com> Signed-off-by: Pierre Rioux <pierre.rioux@amdocs.com>
Diffstat (limited to 'src/main/resources')
-rw-r--r--src/main/resources/application.properties44
-rw-r--r--src/main/resources/event-reader.properties31
-rw-r--r--src/main/resources/logback.xml179
-rw-r--r--src/main/resources/validation-service-beans.xml204
-rw-r--r--src/main/resources/validation-service-logging-resources.properties178
5 files changed, 636 insertions, 0 deletions
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
new file mode 100644
index 0000000..44df999
--- /dev/null
+++ b/src/main/resources/application.properties
@@ -0,0 +1,44 @@
+# ============LICENSE_START===================================================
+# Copyright (c) 2018 Amdocs
+# ============================================================================
+# 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=====================================================
+
+# Note that the start.sh script sets the following System Properties
+# We provide default values here for testing purposes
+APP_HOME=.
+CONFIG_HOME=appconfig-local
+com.att.eelf.logging.path=src/main/resources
+com.att.eelf.logging.file=logback.xml
+logback.configurationFile=${com.att.eelf.logging.path}/${com.att.eelf.logging.file}
+
+schemaIngestPropLoc=${CONFIG_HOME}/schemaIngest.properties
+
+server.port=9501
+server.ssl.client-auth=want
+server.ssl.key-store=${CONFIG_HOME}/auth/tomcat_keystore
+# Work-around for missing Java certificates file "cacerts". This default value should be overridden.
+server.ssl.trust-store=${CONFIG_HOME}/auth/tomcat_keystore
+
+server.tomcat.max-threads=200
+# The minimum number of threads always kept alive
+server.tomcat.min-spare-threads=25
+
+# Spring Boot logging
+logging.config=${logback.configurationFile}
+
+consumer.topic.names=poa-rule-validation
+publisher.topic.names=poa-audit-result
+
+topics.properties.location=${CONFIG_HOME}/topics/
+
diff --git a/src/main/resources/event-reader.properties b/src/main/resources/event-reader.properties
new file mode 100644
index 0000000..a064c39
--- /dev/null
+++ b/src/main/resources/event-reader.properties
@@ -0,0 +1,31 @@
+# ============LICENSE_START===================================================
+# Copyright (c) 2018 Amdocs
+# ============================================================================
+# 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=====================================================
+
+# Event relative paths.
+event.domain.path=$.event-header.domain
+event.action.path=$.event-header.action
+event.type.path=$.event-header.event-type
+event.entity.type.path=$.event-header.entity-type
+event.entity.type.top.path=$.event-header.top-entity-type
+event.entity.link.path=$.event-header.entity-link
+event.entity.link.delimiter=\/aai\/v[0-9]*\/
+event.entity.path=$.entity
+event.entity.nested.path=$.entity..{0}[*]
+
+# Entity relative paths. The JSON is the entity.
+# Comma separated list of paths to cope with different entity JSON formats.
+entity.id.path=$.{0},$.vertex.properties.{0}
+entity.resource.version.path=$.resource-version,$.vertex.properties.resource-version \ No newline at end of file
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
new file mode 100644
index 0000000..01861c1
--- /dev/null
+++ b/src/main/resources/logback.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+============LICENSE_START===================================================
+Copyright (c) 2018 Amdocs
+============================================================================
+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=====================================================
+-->
+<configuration scan="true" scanPeriod="30 seconds" debug="true">
+ <property name="componentName" value="AAI-VS" />
+ <property name="logDirectory" value="logs/${componentName}" />
+
+ <!-- default EELF log file names -->
+ <property name="generalLogName" value="error" />
+ <property name="metricsLogName" value="metrics" />
+ <property name="auditLogName" value="audit" />
+ <property name="debugLogName" value="debug" />
+
+ <property name="errorLogPattern"
+ value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{RequestId}|%thread|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%mdc{TargetServiceName}|%.-5level|%logger|%mdc{ClassName}|%msg%n" />
+
+ <property name="auditLogPattern"
+ value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%logger|%.-5level|||%mdc{ElapsedTime}|%mdc{RemoteHost}|%mdc{ClientAddress}|%mdc{ClassName}|||%msg%n" />
+
+ <property name="metricsLogPattern"
+ value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%mdc{BeginTimestamp}|%mdc{EndTimestamp}|%mdc{RequestId}|%mdc{ServiceInstanceId}|%thread|%mdc{ServerFQDN}|%mdc{ServiceName}|%mdc{PartnerName}|%mdc{TargetEntity}|%mdc{TargetServiceName}|%mdc{StatusCode}|%mdc{ResponseCode}|%mdc{ResponseDescription}|%logger|%.-5level|||%mdc{ElapsedTime}|%mdc{RemoteHost}|%mdc{ClientAddress}|%mdc{ClassName}|||%msg%n" />
+
+ <!-- ============================================================================ -->
+ <!-- EELF Appenders -->
+ <!-- ============================================================================ -->
+
+ <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${generalLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip
+ </fileNamePattern>
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${errorLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+ <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>INFO</level>
+ </filter>
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELF" />
+ </appender>
+
+ <!-- EELF Audit Appender. This appender is used to record audit engine related logging events. The audit logger and appender
+ are specializations of the EELF application root logger and appender. This can be used to segregate Policy engine events
+ from other components, or it can be eliminated to record these events as part of the application root log. -->
+
+ <appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${auditLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip
+ </fileNamePattern>
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${auditLogPattern}</pattern>
+ </encoder>
+ </appender>
+ <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFAudit" />
+ </appender>
+
+ <appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${logDirectory}/${metricsLogName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip
+ </fileNamePattern>
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${metricsLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFMetrics" />
+ </appender>
+
+ <appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>
+ ${logDirectory}/${debugLogName}.log
+ </file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip
+ </fileNamePattern>
+ <maxHistory>60</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${errorLogPattern}</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+ <!-- allow only events with a level below INFO, that is TRACE and DEBUG -->
+ <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
+ <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
+ <expression>
+ e.level.toInt() &lt; INFO.toInt()
+ </expression>
+ </evaluator>
+ <OnMismatch>DENY</OnMismatch>
+ <OnMatch>NEUTRAL</OnMatch>
+ </filter>
+ <queueSize>256</queueSize>
+ <appender-ref ref="EELFDebug" />
+ <includeCallerData>false</includeCallerData>
+ </appender>
+
+ <!-- ============================================================================ -->
+ <!-- Default / root appenders -->
+ <!-- ============================================================================ -->
+
+ <root level="DEBUG">
+ <appender-ref ref="asyncEELF" />
+ <appender-ref ref="asyncEELFDebug" />
+ </root>
+
+ <!-- ============================================================================ -->
+ <!-- EELF loggers -->
+ <!-- ============================================================================ -->
+
+ <logger name="com.att.eelf" level="INFO" additivity="false">
+ <appender-ref ref="asyncEELF" />
+ </logger>
+
+ <logger name="com.att.eelf.debug" level="DEBUG" additivity="false">
+ <appender-ref ref="asyncEELFDebug" />
+ </logger>
+
+ <logger name="com.att.eelf.audit" level="INFO" additivity="false">
+ <appender-ref ref="asyncEELFAudit" />
+ </logger>
+
+ <logger name="com.att.eelf.metrics" level="INFO" additivity="false">
+ <appender-ref ref="asyncEELFMetrics" />
+ </logger>
+
+ <!-- ============================================================================ -->
+ <!-- Non-EELF loggers -->
+ <!-- ============================================================================ -->
+
+ <!-- ATT packages including DMAAP message routing -->
+ <logger name="com.att" level="DEBUG" />
+
+ <!-- Spring related loggers -->
+ <logger name="org.springframework" level="WARN" />
+ <logger name="org.springframework.beans" level="WARN" />
+ <logger name="org.springframework.web" level="WARN" />
+
+ <!-- Other Loggers that may help troubleshoot -->
+ <logger name="org.apache" level="WARN" />
+ <logger name="org.apache.commons" level="WARN" />
+ <logger name="com.jayway.jsonpath.internal.path.CompiledPath" level="WARN" />
+
+ <!-- logback internals logging -->
+ <logger name="ch.qos.logback.classic" level="WARN" />
+ <logger name="ch.qos.logback.core" level="WARN" />
+
+</configuration>
diff --git a/src/main/resources/validation-service-beans.xml b/src/main/resources/validation-service-beans.xml
new file mode 100644
index 0000000..4482c6e
--- /dev/null
+++ b/src/main/resources/validation-service-beans.xml
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+============LICENSE_START===================================================
+Copyright (c) 2018 Amdocs
+============================================================================
+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=====================================================
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
+
+ <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
+
+ <!-- ////////////////////////////////////////////////////////////////// -->
+ <!-- PROPERTY AND CONFIGURATION FILES -->
+ <!-- ////////////////////////////////////////////////////////////////// -->
+ <context:property-placeholder location="classpath:event-reader.properties" ignore-unresolvable="true" />
+ <context:property-placeholder location="file:${CONFIG_HOME}/aai-environment.properties" ignore-unresolvable="true" />
+ <context:property-placeholder location="file:${CONFIG_HOME}/validation-service.properties" ignore-unresolvable="true" />
+ <context:property-placeholder location="file:${CONFIG_HOME}/validation-service-auth.properties" ignore-unresolvable="true" />
+ <context:property-placeholder location="file:${CONFIG_HOME}/rule-indexing.properties" ignore-unresolvable="true" ignore-resource-not-found="true" />
+ <context:property-placeholder location="file:${schemaIngestPropLoc}" ignore-unresolvable="true" />
+
+ <bean id="mappingFile" class="org.apache.commons.io.IOUtils" factory-method="toString">
+ <constructor-arg value="file:${APP_HOME}/bundleconfig/etc/appprops/model-instance-mapping.json_conf" type="java.io.InputStream" />
+ </bean>
+
+ <!-- ////////////////////////////////////////////////////////////////// -->
+ <!-- CONFIG BEANS -->
+ <!-- ////////////////////////////////////////////////////////////////// -->
+ <bean id="eventReaderConfig" class="org.onap.aai.validation.config.EventReaderConfig">
+ <property name="eventDomainPath" value="${event.domain.path}" />
+ <property name="eventActionPath" value="${event.action.path}" />
+ <property name="eventTypePath" value="${event.type.path}" />
+ <property name="entityTypePath" value="${event.entity.type.path}" />
+ <property name="topEntityTypePath" value="${event.entity.type.top.path}" />
+ <property name="entityLinkPath" value="${event.entity.link.path}" />
+ <property name="entityLinkDelimiter" value="${event.entity.link.delimiter}" />
+ <property name="entityPath" value="${event.entity.path}" />
+ <property name="nestedEntityPath" value="${event.entity.nested.path}" />
+ <property name="entityIdPath" value="${entity.id.path}" />
+ <property name="entityResourceVersionPath" value="${entity.resource.version.path}" />
+ </bean>
+
+ <bean id="modelConfig" class="org.onap.aai.validation.config.ModelConfig">
+ <property name="modelCacheExpirySeconds" value="${model.cache.expirySeconds}" />
+ </bean>
+
+ <bean id="restConfig" class="org.onap.aai.validation.config.RestConfig">
+ <property name="host" value="${host}" />
+ <property name="port" value="${port}" />
+ <property name="protocol" value="${httpProtocol}" />
+ <property name="baseModelURI" value="${baseModelURI}" />
+ <property name="trustStorePath" value="${trustStorePath}" />
+ <property name="trustStorePassword" value="${trustStorePassword.x}" />
+ <property name="keyStorePath" value="${keyStorePath}" />
+ <property name="keyStorePassword" value="${keyStorePassword.x}" />
+ <property name="keyManagerFactoryAlgorithm" value="${keyManagerFactoryAlgorithm}" />
+ <property name="keyStoreType" value="${keyStoreType}" />
+ <property name="securityProtocol" value="${securityProtocol}" />
+ <property name="connectionTimeout" value="${connectionTimeout}" />
+ <property name="readTimeout" value="${readTimeout}" />
+ </bean>
+
+ <bean id="topicAdminConfig" class="org.onap.aai.validation.config.TopicAdminConfig">
+ <property name="publishEnable" value="${topic.publish.enable}" />
+ <property name="publishRetries" value="${topic.publish.retries}" />
+ <property name="consumeEnable" value="${topic.consume.enable}" />
+ <property name="consumePollingIntervalSeconds" value="${topic.consume.polling.interval.seconds}" />
+ </bean>
+
+ <bean id="validationControllerConfig" class="org.onap.aai.validation.config.ValidationControllerConfig">
+ <property name="eventDomain" value="${event.domain}" />
+ <property name="excludedEventActions" value="#{'${event.action.exclude}'.split(',')}" />
+ <property name="eventTypeRule" value="#{'${event.type.rule}'.split(',')}" />
+ <property name="eventTypeModel" value="#{'${event.type.model}'.split(',')}" />
+ </bean>
+
+ <bean id="ruleIndexingConfig" class="org.onap.aai.validation.config.RuleIndexingConfig">
+ <property name="indexedEvents" value="#{'${rule.indexing.events}'.split(',')}" />
+ <property name="excludedOxmValidationEvents" value="#{'${rule.indexing.exclude.oxm.validation}'.split(',')}" />
+ <property name="indexAttributes" value="#{'${rule.indexing.key.attributes}'.split(',')}" />
+ <property name="defaultIndexKey" value="${rule.indexing.default.key}" />
+ </bean>
+
+ <bean id="validationServiceAuthConfig" class="org.onap.aai.validation.config.ValidationServiceAuthConfig">
+ <property name="authenticationDisable" value="${auth.authentication.disable}" />
+ <property name="authPolicyFile" value="${auth.policy.file}" />
+ </bean>
+
+ <!-- ////////////////////////////////////////////////////////////////// -->
+ <!-- READER BEANS -->
+ <!-- ////////////////////////////////////////////////////////////////// -->
+ <bean id="schemaLocationsBean" class="org.onap.aai.setup.SchemaLocationsBean">
+ <property name="nodeDirectory" value="${nodeDir}" />
+ <property name="edgeDirectory" value="${edgeDir}" />
+ </bean>
+
+ <bean id="configTranslator" class="org.onap.aai.validation.reader.OxmConfigTranslator">
+ <constructor-arg ref="schemaLocationsBean" />
+ </bean>
+
+ <bean id="nodeIngestor" class="org.onap.aai.nodes.NodeIngestor">
+ <constructor-arg ref="configTranslator" />
+ </bean>
+
+ <bean id="oxmReader" class="org.onap.aai.validation.reader.OxmReader" init-method="init">
+ <constructor-arg ref="nodeIngestor" />
+ <constructor-arg value="V${aai.oxm.version}" />
+ </bean>
+
+ <bean id="jsonReader" class="org.onap.aai.validation.reader.JsonReader" />
+
+ <bean id="eventReader" class="org.onap.aai.validation.reader.EventReader">
+ <constructor-arg ref="eventReaderConfig" />
+ <constructor-arg ref="jsonReader" />
+ <constructor-arg ref="oxmReader" />
+ </bean>
+
+ <!-- ////////////////////////////////////////////////////////////////// -->
+ <!-- IMPLEMENTATION BEANS -->
+ <!-- ////////////////////////////////////////////////////////////////// -->
+ <bean id="messagePublisher" class="org.onap.aai.validation.publisher.ValidationEventPublisher">
+ <constructor-arg ref="topicAdminConfig" />
+ </bean>
+
+ <bean id="validationController" class="org.onap.aai.validation.controller.ValidationController">
+ <constructor-arg ref="validationControllerConfig" />
+ <constructor-arg ref="eventReader" />
+ <constructor-arg ref="ruleDrivenValidator" />
+ <constructor-arg ref="modelDrivenValidator" />
+ <constructor-arg ref="messagePublisher" />
+ </bean>
+
+ <bean id="eventPollingService" class="org.onap.aai.validation.services.EventPollingService">
+ <property name="validationController" ref="validationController" />
+ </bean>
+
+ <bean id="startupServlet" class="org.onap.aai.validation.servlet.StartupServlet" init-method="init">
+ <constructor-arg ref="eventPollingService" />
+ <constructor-arg ref="topicAdminConfig" />
+ </bean>
+
+ <bean id="rulesConfigurationPath" class="java.nio.file.Paths" factory-method="get">
+ <constructor-arg value="${APP_HOME}/bundleconfig/etc/rules/" />
+ <constructor-arg>
+ <array />
+ </constructor-arg>
+ </bean>
+
+ <bean id="ruleDrivenValidator" class="org.onap.aai.validation.ruledriven.RuleDrivenValidator">
+ <constructor-arg ref="rulesConfigurationPath" />
+ <constructor-arg ref="oxmReader" />
+ <constructor-arg ref="eventReader" />
+ <constructor-arg ref="ruleIndexingConfig"/>
+ </bean>
+
+ <bean id="restClient" class="org.onap.aai.validation.data.client.RestClient">
+ <constructor-arg ref="restConfig" />
+ </bean>
+
+ <!-- MODEL VALIDATION BEANS -->
+ <bean id="modelCacheManager" class="org.onap.aai.validation.modeldriven.ModelCacheManager">
+ <constructor-arg ref="modelConfig" />
+ <constructor-arg ref="restConfig" />
+ </bean>
+
+ <bean id="modelInstanceMappingReader" class="org.onap.aai.validation.modeldriven.configuration.mapping.ModelInstanceMappingReader">
+ <constructor-arg ref="mappingFile" />
+ </bean>
+
+ <bean id="instanceReader" class="org.onap.aai.validation.modeldriven.validator.InstanceReader">
+ <constructor-arg ref="jsonReader" />
+ <constructor-arg ref="oxmReader" />
+ </bean>
+
+ <bean id="modelDrivenValidator" class="org.onap.aai.validation.modeldriven.validator.ModelDrivenValidator">
+ <constructor-arg ref="modelCacheManager" />
+ <constructor-arg ref="modelInstanceMappingReader" />
+ <constructor-arg ref="instanceReader" />
+ <constructor-arg ref="eventReader" />
+ </bean>
+
+ <bean id="aaiMicroServiceAuth" class="org.onap.aai.auth.AAIMicroServiceAuth">
+ <constructor-arg ref="validationServiceAuthConfig" />
+ </bean>
+
+ <bean id="validateService" class="org.onap.aai.validation.services.ValidateServiceImpl">
+ <constructor-arg ref="validationController" />
+ <constructor-arg ref="aaiMicroServiceAuth" />
+ </bean>
+</beans>
diff --git a/src/main/resources/validation-service-logging-resources.properties b/src/main/resources/validation-service-logging-resources.properties
new file mode 100644
index 0000000..2cdc2e8
--- /dev/null
+++ b/src/main/resources/validation-service-logging-resources.properties
@@ -0,0 +1,178 @@
+# ============LICENSE_START===================================================
+# Copyright (c) 2018 Amdocs
+# ============================================================================
+# 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=====================================================
+#
+#Resource key=Error Code|Message text|Resolution text |Description text
+#######
+#Newlines can be utilized to add some clarity ensuring continuing line
+#has atleast one leading space
+#ResourceKey=\
+# ERR0000E\
+# Sample error msg txt\
+# Sample resolution msg\
+# Sample description txt
+#
+######
+#Error code classification category
+#000 Info/Debug
+#100 Permission errors
+#200 Availability errors/Timeouts
+#300 Data errors
+#400 Schema Interface type/validation errors
+#500 Business process errors
+#900 Unknown errors
+#
+########################################################################
+
+MESSAGE_VALIDATION_REQUEST=\
+ LOG0001I|\
+ Validation request payload: {0}|\
+ No resolution required|\
+ |\
+
+POLL_EVENTS=\
+ LOG0002I|\
+ *** Polling for events ***|\
+
+NUMBER_OF_MESSAGES_CONSUMED=\
+ LOG0003I|\
+ Number of messages consumed: {0}|\
+
+STARTUP_SERVLET_INIT=\
+ LOG0004I|\
+ ---------- StartupServlet Initializing ----------|\
+
+POLLING_INTERVAL_CONFIG_NOT_PRESENT=\
+ LOG0005I|\
+ Polling interval config not present, using default interval of {0} seconds|\
+
+POLLING_FOR_EVENTS=\
+ LOG0006I|\
+ ---------- Starting to poll for events. Interval = {0} seconds. ----------|\
+
+POLLING_DISABLED=\
+ LOG0007I|\
+ ---------- Event polling is disabled ----------|\
+
+STARTUP_SERVLET_INIT_SUCCESS=\
+ LOG0008I|\
+ ---------- StartupServlet Initialized successfully ----------|\
+
+EVENT_CLIENT_CLOSE_UNSENT_MESSAGE=\
+ LOG0009I|\
+ {0}|\
+
+LOAD_PROPERTIES=\
+ LOG0010I|\
+ Loading properties - {0}|\
+
+FILE_LOAD_INTO_MAP=\
+ LOG0011I|\
+ File {0} is loaded into the map and the corresponding system properties have been refreshed|\
+
+MESSAGE_AUDIT=\
+ LOG0012I|\
+ {0}|\
+ |\
+
+MESSAGE_METRIC=\
+ LOG0013I|\
+ {0}|\
+ |\
+
+MISSING_REQUEST_ID=\
+ LOG0014I|\
+ Missing request ID. Assigned {0}|\
+
+MESSAGE_PUBLISH_ERROR=\
+ LOG0201E|\
+ Error while publishing validation result: {0}|\
+ |\
+
+INVOKE_EVENT_CONSUMER_ERROR=\
+ LOG0202E|\
+ Error invoking the Event Consumer|\
+
+UNSENT_MESSAGE_WARN=\
+ LOG0203W|\
+ Not all events were successfully sent|\
+
+UNSENT_MESSAGE_ERROR=\
+ LOG0204E|\
+ Error sending events|\
+
+SEND_MESSAGE_ABORT_WARN=\
+ LOG0205W|\
+ Retries exhausted, aborting|\
+
+SEND_MESSAGE_RETRY_WARN=\
+ LOG0206W|\
+ Retrying to send events|\
+
+READ_FILE_ERROR=\
+ LOG0300E|\
+ Error reading file {0}|\
+
+FILE_ARG_NULL_ERROR=\
+ LOG0301E|\
+ File argument is null|\
+
+FILE_LOAD_INTO_MAP_ERROR=\
+ LOG0302E|\
+ File {0} cannot be loaded into the map {1}|\
+
+CREATE_PROPERTY_MAP_ERROR=\
+ LOG0303E|\
+ Error creating property map|\
+
+FILE_MONITOR_BLOCK_ERROR=\
+ LOG0304E|\
+ Error in the file monitor block|\
+
+READ_FILE_STREAM_ERROR=\
+ LOG0305E|\
+ Error reading the file stream|\
+
+STRING_UTILS_INVALID_REGEX=\
+ LOG0306E|\
+ Invalid regular expression: {0}|\
+
+OXM_LOAD_ERROR=\
+ LOG0401E|\
+ OXM load error|\
+ Check the OXM files are well formed and present and retry|\
+ The OXM files are missing and or corrupt|\
+
+OXM_MISSING_KEY_ERROR=\
+ LOG0402E|\
+ Graph object {0} primary key missing|\
+ Check request is valid and retry|\
+ The Graph object is missing the primary key(s)|\
+
+CANNOT_VALIDATE_ERROR=\
+ LOG0901E|\
+ Error during validation of event: {0}|\
+ |\
+
+CANNOT_VALIDATE_HANDLE_EXCEPTION_ERROR=\
+ LOG0902E|\
+ Error during handling the exception for an event that could not be validated: {0}|\
+ |\
+
+MALFORMED_REQUEST_ERROR=\
+ LOG1000E|\
+ Malformed request.|\
+
+PROCESS_REQUEST_ERROR=LOG1001E|Error while processing request.| \ No newline at end of file