################################################################################
# Copyright (c) 2016, 2018 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 v1.0 and Eclipse Distribution License v. 1.0
# which accompanies this distribution.
# The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
# and the Eclipse Distribution License is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# Contributors:
# Roman Grigoriadi
# David Kral
################################################################################

cannotMarshallObject = Cannot marshall object
typeResolutionError = Error resolving runtime type for type: {0}
genericBoundNotFound = Generic bound not found for type {0} declared in {1}.
cantConvertJsonValue = Can'''t convert JSON value into: {0}
cantCreateRootInstance = Can'''t create root instance
invokingGetter = Error invoking getter method.
gettingValue = Error getting field value.
settingValue = Error setting field value.
noLoggerName = Logger name has to be set
resolveParametrizedType = Can''t resolve ParameterizedType superclass for: {0}
cantCreateInstance = Can''t create instance
inferTypeForUnmarshall = Can''t infer a type for unmarshalling into: {0}
implClassIncompatible = Implementation class {0} is not a subtype of interface {1}.
notValueType = Not a value type: {0}
unexpectedParseEvent = Unexpected parser event: {0}
processFromJson = Process class: {0} from json using converter: {1}
processToJson = Process class: {0} to json using converter: {1}
creatingHandles = Error creating handles.
settingValueWith = Error setting value with: {0}
gettingValueWith = Error getting value with: {0}
unpairedSurrogate = String contains unpaired surrogate.
adapterException = Problem adapting object of type {0} to {1} in class {2}
adapterFound = Found adapter from type {0} to type {1}.
adapterIncompatible = Adapter of runtime type {0} does not match property type {1}
propertyOrder = "Property order strategy with name {0} wasn't recognized"
unsupportedJsonpSerializerValue=Unsupported value of type {0} for JSON serializer.
beanManagerNotFoundJndi=BeanManager not found in JNDI under {0}.\nNamingException explanation: {1}
beanManagerNotFoundNoProvider=No provider was registered for BeanManager.
usingDefaultConstructorInstantiator=Falling back to default constructor component creator.
iJsonEnabledSingleValue = Cannot marshal single value because I-Json is enabled!
dateTypeNotSupported=Date type not supported: {0}
errorParsingDate=Error parsing {1} from value: {0}. Check your @JsonbDateFormat has all time units for {1} type, \
  or consider using org.eclipse.yasson.YassonProperties#ZERO_TIME_PARSE_DEFAULTING.
noDefaultConstructor=Can''t create instance of a class: {0}, No default constructor found.
offsetDateTimeFromMillis=Parsing {0} from epoch millisecond, UTC zone offset will be used.
timeToEpochMillisError=Cant convert {0} to/from epoch milliseconds.
configPropertyInvalidType=JsonbConfig property [{0}] must be of type [{1}].
conversionNotSupported=Conversion of type [{0}] to/from string value is not supported.
endOfJsonStructure=End of JSON structure reached.
invalidDeserializationType=Invalid json value type {0} for deserialization into type {1}.
czechDiacritics=p\u0159\u00edli\u0161,\u017elu\u0165ou\u010dk\u00fd,k\u016f\u0148,\u00fap\u011bl,\u010f\u00e1belsk\u00e9,\u00f3dy
russianDiacritics=\u0441\u043b\u0438\u0448\u043a\u043e\u043c,\u0436\u0435\u043b\u0442\u0435\u043d\u044c\u043a\u0438\u0439,\u043a\u043e\u043d\u044c,\u043f\u0435\u043b,\u0430\u0434\u0441\u043a\u0438\u0435,\u043e\u0434\u044b
propertyNotFoundDeserializer=Property {0} was not found in class {1}. Skipping value {2}.
settingPropertyDeserializer=Setting property {0} in class {1} with value {2}.
classLoadNotAllowed=Class load for {0} name is not allowed!
errorCallingJsonbCreator=Exception occurred during call to JSONB creator on class: {0}.
incompatibleFactoryCreatorReturnType=Return type of creator {0} must be of type {1}.
multipleJsonbCreators=More than one @JsonbCreator declared in class {0}.
internalError=Internal error: {0}
deserializeValueError=Error deserialize JSON value into type: {0}.
parsingNumber=Error parsing number {0} with format {1}.
unknownBinaryDataStrategy=Unknown binary data strategy: {0}
invalidPropertyNamingStrategy=Property naming strategy must be either: String name, or instance of javax.json.bind.config.PropertyNamingStrategy.
creatorParameterNotAnnotated=Argument has no JsonbProperty annotation for JsonbCreator {0}.
unknownJsonProperty=Json property {0} can not be mapped to a class {1}.
jsonbCreatorMissingProperty=JsonbCreator parameter {0} is missing in json document.
zoneParseError=Can't parse zone from json value: {0}
jsonbTransientWithOtherAnnotations=JsonbTransient annotation cannot be used with other jsonb annotations on the same property.
nonParametrizedType=Type: {0} is not a parametrized type.
propertyNameClash=Property {0} clashes with property {1} by read or write name in class {2}.
sqlDateIJsonError=java.sql.Date is not supported in STRICT_IJSON mode.
recursiveReference=Recursive reference has been found in class {0}.
datatypeFactoryCreationFailed=An error occurred while DatatypeFactory creation.