###
# ============LICENSE_START=======================================================
# ECOMP MSO
# ================================================================================
# Copyright (C) 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=========================================================
###

########################################################################
#Resource key=Error Code|Message text|Resolution text |Description text
#######
# {component}-{subcomponent}-{4-digit code}{classification}
#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
#1100-1199	Security/Permission Related
#2100-2199	Availability/Timeout Related
#3100-3199	Data Access/Integrity Related
#4100-4199	Schema Interface Type/Validation
#5100-5199	Business/Flow Processing Related
#6100-6199	Reserved \u2013 do not use
#9100-9199	Unknown Errors
#
######
#{classification} description
# I = Information
# W = Warning
# E = Error
# F = Fatal
########################################################################    
BPMN_GENERAL_INFO=\
                  MSO-BPEL-5100I|\
                  INFO: {0}|\
                  No resolution needed|\
                  General info
BPMN_GENERAL_WARNING=\
                  MSO-BPEL-5101W|\
                  WARNING: {0}|\
                  Please check other logs for more information|\
                  General warning
BPMN_AUDIT_EXEC=\
                  MSO-BPEL-5102I|\
                  Executing method: {0}. {1}|\
                  No resolution needed|\
                  Executing method
BPMN_GENERAL_METRICS=\
                  MSO-BPEL-5105I|\
                  Executed method: {0}. {1}|\
                  No resolution needed|\
                  Generate information for Metric events
BPMN_URN_MAPPING_FAIL=\
                  MSO-BPEL-5106E|\
                  URN Mapping Task Failed to execute|\
                  Please check other logs for more information|\
                  URN Mapping Task Failed to execute
BPMN_VARIABLE_NULL=\
                  MSO-BPEL-5107W|\
                  Variable {0} is null; skipped|\
                  No resolution needed|\
                  Variable is null
BPMN_GENERAL_EXCEPTION_ARG=\
                  MSO-BPEL-9100E|\
                  Exception: {0}|\
                  Please check other logs for more information|\
                  General exception with reason
BPMN_GENERAL_EXCEPTION=\
                  MSO-BPEL-9101E|\
                  Exception encountered|\
                  Please check other logs for more information|\
                  Exception encountered
BPMN_CALLBACK_EXCEPTION=\
                  MSO-BPEL-9102E|\
                  {0} Exception occurred processing callback to BPMN process {1}|\
                  Please check other logs for more information|\
                  Exception occurred processing callback to BPMN process
