################################################################################
# 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.
noJndiEnvironment=No JNDI environment ({0}) found to look for CDI provider.
noCdiApiProvider=CDI API not found on class or module path {0}.
illegalAccess=Yasson doesn''t have sufficient permissions to {0}.
usingDefaultConstructorInstantiator=CDI bean manager not found, serializers and adapters will not have CDI support.
noCdiEnvironment=CDI environment is not available.
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}
serializeValueError=Unable to serialize value ''{0}'' of type {1} because of: {2}
serializePropertyError=Unable to serialize property ''{0}'' from {1} with value ''{2}''
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.
multipleConstructorPropertiesCreators=More than one constructor annotated with @ConstructorProperties declared in class {0}.
annotationNotAvailable=Annotation {0} is not visible in modules or classpath. Annotation will be ignored.
missingValuePropertyInAnnotation=Missing value property in Annotation {0}. Annotation will be ignored.
numberIncompatibleValueTypeArray=Value type {0} is not a JsonNumber.
numberIncompatibleValueTypeObject=Value type {0} at key {1} is not a JsonNumber.