#
#    Licensed to the Apache Software Foundation (ASF) under one
#    or more contributor license agreements. See the NOTICE file
#    distributed with this work for additional information
#    regarding copyright ownership. The ASF licenses this file
#    to you 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.
#
NOT.IMPLEMENTED=not yet implemented
INVOKE.SERVICE=invoking service\t
CREATE.MESSAGE.EXCHANGE=create message exchange svc:\t
EXCHANGE.ENDPOINT=exchange endpoint:\t
NO.MESSAGE=no message yet
UNABLE.RETRIEVE.MESSAGE=unable to retrieve message
CONTEXT.MUST.BE=context must be of type JBIOutputStreamMessageContext
RECEIVED.MESSAGE=received message:\t
ACTIVE.JBI.SERVER.TRANSPORT=activating JBI server transport
BUILDING.DOCUMENT=building document from bytes
CREATE.NORMALIZED.MESSAGE=creating NormalizedMessage
POST.DISPATCH=postDispatch sending out message to NWR
ERROR.SEND.MESSAGE=error sending Out message
DISPATCH.MESSAGE.ON.CALLBACK=dispatching message on callback:\t
ERROR.PREPARE.MESSAGE=error preparing message
RECEIVE.THREAD.START=JBIServerTransport message receiving thread started
DISPATCH.TO.SU=dispatching to CXF service unit
NO.SU.FOUND=no CXFServiceUnit found
ERROR.DISPATCH.THREAD=error running dispatch thread
JBI.SERVER.TRANSPORT.MESSAGE.PROCESS.THREAD.EXIT=JBIServerTransport message processing thread exiting
CONFIG.DELIVERY.CHANNEL=configuring DeliveryChannel:\t
CONFIG.SU.MANAGER=configuring ServiceUnitManager:\t
JBI.TRANSPORT.FACTORY.NOT.INITIALIZED=JBITransportFactory is not properly initialized
SU.MANAGER=CXFServiceUnitManager:\t
DELIVERY.CHANNEL=DeliveryChannel:\t
JBI.TRANSPORT.FACTORY.NOT.FULLY.INITIALIZED=JBITransport factory not fully initialized
CREATE.SERVER.TRANSPORT=creating JBI server transport
CREATE.CLIENT.TRANSPORT=creating JBI client transport
