#
# Copyright (c) 2012, 2017 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0, which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# This Source Code may also be made available under the following Secondary
# Licenses when the conditions for such availability set forth in the
# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
# version 2 with the GNU Classpath Exception, which is available at
# https://www.gnu.org/software/classpath/license.html.
#
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
#

dependent.class.of.provider.format.error={0}. A dependent class of the class {1} implementing the provider {2} is malformed. The provider implementation is ignored. Check if the malformed class is part of a stubbed jar that used for compiling only.
dependent.class.of.provider.not.found=A dependent class, {0}, of the class {1} implementing the provider {2} is not found. The provider implementation is ignored.
error.caught.while.loading.spi.providers=Error caught while loading SPI providers.
exception.caught.while.loading.spi.providers=Exception caught while loading SPI providers.
uri.component.encoded.octet.invalid.digit=Malformed percent-encoded octet at index {0}, invalid hexadecimal digit ''{1}''.
uri.component.encoded.octet.malformed=Malformed percent-encoded octet at index {0}.
uri.component.invalid.character=The string "{0}" for the URI component {1} contains an invalid character, ''{2}'', at index {3}.
illegal.config.syntax=Illegal configuration-file syntax.
illegal.provider.class.name=Illegal provider-class name: {0}.
# max 123 chars!
illegal.utf8.sequence=Illegal UTF-8 Sequence.
provider.class.could.not.be.loaded=The class {0} implementing provider {1} could not be loaded: {2}
provider.could.not.be.created=The class {0} implementing provider {1} could not be instantiated: {2}
provider.not.found=The class {0} implementing the provider {1} is not found. The provider implementation is ignored.
class.not.instantiated=Class {0} couldn''t be instantiated.

class.checker.add.message.handler.error=Class {0}. {1}.
class.checker.multiple.identical.params=Method: {0}.{1}: has got multiple parameters of identical type.
class.checker.forbidden.web.socket.open.param=Method: {0}.{1}: {2} has got multiple parameters of identical type.
class.checker.forbidden.web.socket.close.param=Method: {0}.{1}: @OnClose has got different params than Session or CloseReason.
class.checker.forbidden.web.socket.error.param=Method: {0}.{1}: {2} is not allowed as parameter type for method annotated with @OnError.
class.checker.mandatory.param.missing=Method: {0}.{1}: does not have mandatory Throwable param.
class.checker.forbidden.return.type=Method: {0}.{1}: has got unsupported return type.

endpoint.multiple.methods=Multiple methods using {0} annotation in class {1}: {2} and {3}. The latter will be ignored.
endpoint.unknown.params=Unknown parameter(s) for {0}.{1} method annotated with @OnError annotation: {2}. This method will be ignored.
endpoint.wrong.params=Method: {0}.{1}: has got wrong number of params.
endpoint.annotation.not.found={0} annotation not found on class {1}.
endpoint.wrong.path.param=Method: {0}: {1} is not allowed type for @PathParameter.
endpoint.multiple.session.param=Method {0} has got two or more Session parameters.
endpoint.exception.from.on.error=Exception thrown from onError method {0}.
endpoint.unhandled.exception=Unhandled exception in endpoint {0}.
endpoint.max.message.size.too.long=MaxMessageSize {0} on method {1} in endpoint {2} is larger than the container incoming buffer size {3}.

buffer.overflow=Buffer overflow.
partial.message.buffer.overflow=Partial message could not be delivered due to buffer overflow.

component.provider.threw.exception=Component provider threw exception when providing instance of class {0}.
component.provider.not.found=Component provider for class {0} not found.

# handshake
headers.missing=Missing headers required for WebSocket negotiation.
invalid.header=Invalid {0} header value: "{1}".
invalid.response.code=Response code was not {0}: {1}.

#client
client.cannot.connect=Client cannot connect to "{0}".

# authentication
authentication.failed=Authentication failed.
authentication.credentials.missing=Credentials are missing.
authentication.digest.no.such.alg=No such algorithm to generate authorization digest http header.
authentication.digest.qop.unsupported=The 'qop' (quality of protection) = {0} extension requested by the server is not supported by Tyrus. Cannot authenticate against the server using Http Digest Authentication.
authentication.create.auth.header.failed=Could not add authorization header in http request.

# http redirection
handshake.http.redirection.not.enabled=Received HTTP response status code: {0} and redirect processing is not enabled.
handshake.http.redirection.max.redirection=Redirect attempts exceeded maximum allowed limit of ({0}) redirects.
handshake.http.redirection.infinite.loop=Infinite HTTP Redirection loop detected.
handshake.http.redirection.new.location.error=Invalid URI in Location header: "{0}".
handshake.http.redirection.new.location.missing=Missing or empty Location header in 3xx HTTP Redirect response.

# http retry after
handshake.http.retry.after.message=HTTP Status code 503 - Service Unavailable.

# message handler manager
message.handler.whole.or.partial=MessageHandler must implement MessageHandler.Whole or MessageHandler.Partial.
message.handler.already.registered.text=Text MessageHandler already registered.
message.handler.already.registered.binary=Binary MessageHandler already registered.
message.handler.already.registered.pong=Pong MessageHandler already registered.
message.handler.decoder.not.registered=Decoder for type: {0} has not been registered.
message.handler.partial.invalid.type=Partial MessageHandler can''t be of type: {0}.
message.handler.already.registered.type=MessageHandler for type: {0} already registered.
message.handler.illegal.argument=Illegal MessageHandler argument value: {0}.

# protocol.handler
connection.null=Connection is null.
send.message.infragment=Attempting to send a message while sending fragments of another.
ioexception.close=IOException thrown when closing connection.
extension.exception=Extension ''{0}'' threw an exception during processOutgoing method invocation: "{1}".
control.frame.fragmented=Fragmented control frame.
control.frame.length=Control frame payloads must be no greater than 125 bytes.
data.unexpected.length=Data read ({0}) is not the expected size ({1}).
unexpected.state=Unexpected state: {0}.
rsv.incorrectly.set=RSV bit(s) incorrectly set.
unexpected.end.fragment=End fragment sent, but wasn''t processing any previous fragments.
fragment.invalid.opcode=Fragment sent but opcode was not 0.
frame.write.cancelled=Frame writing was canceled.

# sec key
sec.key.null.not.allowed=Null Sec-WebSocket-Key is not allowed.
sec.key.invalid.length=Invalid Sec-WebSocket-Key length. Should be 20 and is: {0}.
sec.key.invalid.server=Sec-WebSocket-Key returned from server does not match expected response.

# tyrus endpoint wrapper
encoding.failed=Encoding failed.
binary.message.handler.not.found=Binary message handler not found. Session: ''{0}''.
text.message.handler.not.found=Text message handler not found. Session: ''{0}''.
text.message.out.of.order=Text message received out of order. Session: ''{0}''.
partial.text.message.out.of.order=Partial text message received out of order. Session: ''{0}''.
binary.message.out.of.order=Binary message received out of order. Session: ''{0}''.
partial.binary.message.out.of.order=Partial binary message received out of order. Session: ''{0}''.
origin.not.verified=Origin not verified.
unexpected.error.connection.close=Unexpected error, closing connection.
max.sessions.per.endpoint.exceeded=Maximal number of open sessions per endpoint exceeded.
max.sessions.per.app.exceeded=Maximal number of open sessions per application exceeded.
max.sessions.per.remoteaddr.exceeded=Maximal number of open sessions per remote address exceeded.

# tyrus remote endpoint
argument.not.null=Argument ''{0}'' cannot be null.
application.data.too.long={0} applicationData exceeded the maximum allowed payload of 125 bytes.

# tyrus session
connection.has.been.closed=The connection has been closed.
message.too.long=Message too long; allowed message size is {0} bytes. (Current message length is {1} bytes).
unhandled.text.message=Unhandled text message. Session: {0}.
# max 123 chars!
session.closed.idle.timeout="Session closed by the container because of the idle timeout."
no.decoder.found=No decoder found.

# tyrus web socket
socket.not.connected=Socket is not connected.

# tyrus web socket engine
equivalent.paths=Found equivalent paths. Added path: ''{0}'' is equivalent with ''{1}''.


