################################################################################
# Copyright (c) 2010, 2013 Oracle. All rights reserved.
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0, which accompanies this distribution
# and is available at https://www.eclipse.org/legal/epl-2.0/.
# 
# Contributors:
#     Oracle - initial API and implementation
################################################################################

# JptJaxbCoreValidationMessages

# NB: The entries in this file must be kept in sync with their descriptions in
# jpt_jaxb_core_validation_description.properties.

NO_JAXB_PROJECT = This project has the JAXB facet, but no JAXB content could be created.  See the error log for more details.
JAXB_VALIDATION_FAILED=JAXB validation failed because the necessary plug-ins were unavailable. Try again.
PROJECT_INVALID_LIBRARY_PROVIDER = The currently selected JAXB library provider is invalid.
PROJECT__UNRESOLVED_SCHEMA = Cannot resolve the schema with location ''{0}''.
PROJECT__DUPLICATE_NAMESPACE = Duplicate schema library entries with the namespace ''{0}''.

PACKAGE_NO_SCHEMA_FOR_NAMESPACE = There is no schema specified on the project for the namespace ''{0}'' on the package ''{1}''.  No schema-specific validation will be performed.
PACKAGE_XML_JAVA_TYPE_ADAPTER_TYPE_NOT_SPECIFIED = The type must be specified for an XML Java type adapter on a package
XML_SCHEMA__MISMATCHED_ATTRIBUTE_FORM_DEFAULT = The attribute form default conflicts with what is specified on the schema
XML_SCHEMA__MISMATCHED_ELEMENT_FORM_DEFAULT = The element form default conflicts with what is specified on the schema

XML_ENUM__NON_SIMPLE_SCHEMA_TYPE = The type ''{0}'' must be associated with a simple schema type.

XML_TYPE__UNMATCHING_NAMESPACE_FOR_ANONYMOUS_TYPE = The namespace for an anonymous type should not be different from its package
XML_TYPE__UNSPECIFIED_FACTORY_METHOD = If a factory class is specified, a factory method must also be specified.
XML_TYPE__NO_PUBLIC_OR_PROTECTED_CONSTRUCTOR = A class must have a public or protected no-arg constructor, unless a factory class/method is provided or the class is adapted with an XmlAdapter.
XML_TYPE__DUPLICATE_PROP = Duplicate property ''{0}''.
XML_TYPE__MISSING_PROP = Missing required property ''{0}''.
XML_TYPE__NONEXISTENT_PROP = Nonexistent property ''{0}''.
XML_TYPE__TRANSIENT_PROP = The property ''{0}'' is transient and should not be included in the property order.
XML_TYPE__FACTORY_CLASS_IGNORED_FOR_ENUM = The factory class element is ignored for enums.
XML_TYPE__FACTORY_METHOD_IGNORED_FOR_ENUM = The factory method element is ignored for enums.
XML_TYPE__PROP_ORDER_IGNORED_FOR_ENUM = The prop order element is ignored for enums.

XML_ROOT_ELEMENT_TYPE_CONFLICTS_WITH_XML_TYPE = The xml type of the element declaration with name ''{0}'' and namespace ''{1}'' conflicts with the xml type of the associated class

XML_ENUM_VALUE__INVALID_LEXICAL_VALUE = Invalid lexical value \"{0}\" for schema type ''{1}''.

ATTRIBUTE_MAPPING__UNSUPPORTED_ANNOTATION = The annotation ''{0}'' is not allowed to be used in conjunction with ''{1}''. 
ATTRIBUTE_MAPPING_XML_JAVA_TYPE_ADAPTER_TYPE_NOT_DEFINED = The type for XML Java type adapter is not defined.
XML_ELEMENT_WRAPPER_DEFINED_ON_NON_ARRAY_NON_COLLECTION = An XML element wrapper may only be defined on a collection or array property

XML_ANY_ATTRIBUTE__MULTIPLE_MAPPINGS_DEFINED = Multiple attributes are annotated with @XmlAnyAttribute.  At most one field or property per class is allowed.
XML_ANY_ATTRIBUTE__NON_MAP_TYPE = The type of a field or property annotated with @XmlAnyAttribute must be assignable to java.util.Map.

XML_ANY_ELEMENT__MULTIPLE_MAPPINGS_DEFINED = Multiple attributes are annotated with @XmlAnyElement.  At most one field or property per class is allowed.

XML_ATTRIBUTE__INVALID_SCHEMA_TYPE = The expected XML type associated with ''{0}'' is not valid for XML attribute ''{1}''.

XML_ELEMENT__UNSPECIFIED_TYPE = Unspecified XML element type.
XML_ELEMENT__ILLEGAL_TYPE = XML element type must be a sub-type of ''{0}''.
XML_ELEMENT__INVALID_SCHEMA_TYPE = The expected XML type associated with ''{0}'' is not valid for XML element ''{1}''.

XML_ELEMENT_DECL__INVALID_METHOD_SIGNATURE_RETURN_TYPE = An element factory method must have a return type of 'javax.xml.bind.JAXBElement'.
XML_ELEMENT_DECL__INVALID_METHOD_SIGNATURE_PARAM = An element factory method should have a single parameter assignable to 'java.lang.Object'.
XML_ELEMENT_DECL__SUBST_HEAD_NAME_EQUALS_NAME = XML element decl substitution head must not match its XML element.
XML_ELEMENT_DECL__SUBST_HEAD_NO_MATCHING_ELEMENT_DECL = XML element decl substitution head must match another XML element decl.

XML_ELEMENT_REF__UNSPECIFIED_TYPE = Unspecified XML element ref type.
XML_ELEMENT_REF__ILLEGAL_TYPE = XML element ref type must be a sub-type of ''{0}''.
XML_ELEMENT_REF__NO_ROOT_ELEMENT = No root element specified on type ''{0}'' or any of its sub-types.
XML_ELEMENT_REF__NO_REGISTRY = No XML registry configured for this package.
XML_ELEMENT_REF__NO_MATCHING_ELEMENT_DECL = No XML element decl in the XML registry matching the namespace ''{0}'' and name ''{1}''.

XML_ELEMENT_REFS__DUPLICATE_XML_ELEMENT_TYPE = Duplicate type ''{0}'' in XML element refs.
XML_ELEMENT_REFS__DUPLICATE_XML_ELEMENT_QNAME = Duplicate element name ''{0}'' in XML element refs.
	
XML_ELEMENTS__DUPLICATE_XML_ELEMENT_TYPE = Duplicate type ''{0}'' in XML elements.
XML_ELEMENTS__DUPLICATE_XML_ELEMENT_QNAME = Duplicate element name ''{0}'' in XML elements.

XML_ID__MULTIPLE_MAPPINGS_DEFINED = Multiple attributes are mapped as XmlID.  At most one field or property per class is allowed.
XML_ID__ATTRIBUTE_TYPE_NOT_STRING = An attribute mapped as XmlID must have type 'java.lang.String'.
XML_ID__SCHEMA_TYPE_NOT_ID = In order to be mapped as XmlID, the type of the schema component ''{0}'' must be 'ID'.

XML_ID_REF__TYPE_DOES_NOT_CONTAIN_XML_ID =  In order to be used with XmlIDREF, type ''{0}'' must contain a property or field mapped as an XmlID.
XML_ID_REF__SCHEMA_TYPE_NOT_IDREF = In order to be used with XmlIDREF, the item type of the schema component ''{0}'' must be 'IDREF'.

XML_LIST__ATTRIBUTE_NOT_COLLECTION_TYPE = In order to be mapped as XmlList, an attribute must have a collection or array type.
XML_LIST__ITEM_TYPE_NOT_MAPPED_TO_VALID_SCHEMA_TYPE = In order to be mapped as XmlList, the type ''{0}'' must be mapped to a non-list simple schema type.

XML_REGISTRY__MULTIPLE_XML_REGISTRIES_FOR_PACKAGE = Multiple classes in package annotated with XmlRegistry.
XML_REGISTRY__DUPLICATE_XML_ELEMENT_QNAME = Duplicate XmlElementDecl name ''{0}'' {1}.

XML_VALUE__MULTIPLE_MAPPINGS_DEFINED = Multiple attributes are mapped as XmlValue.  At most one field or property per class is allowed.
XML_VALUE__NO_TEXT_CONTENT = There is no text content for the XML type associated with this class.
XML_VALUE__INVALID_SCHEMA_TYPE = The expected XML type associated with ''{0}'' is not valid for text content of the XML type associated with this class.

XML_VALUE_MAPPING_WITH_NON_XML_ATTRIBUTE_MAPPING_DEFINED = Attribute ''{0}'' must be mapped as XmlAttribute because another attribute ''{1}'' is mapped as XmlValue

XML_SCHEMA_TYPE__NON_SIMPLE_TYPE = The schema type ''{0}'' is not a simple type.
XML_SCHEMA_TYPE__TYPE_NOT_SPECIFIED_ON_PACKAGE = The 'type' element should be specified when defining a schema type on a package.
XML_SCHEMA_TYPE__TYPE_SPECIFIED_ON_ATTRIBUTE = The 'type' element should not be specified when defining a schema type on a field or property.

QNAME__MISSING_NAME = {0} name not specified
QNAME__UNRESOLVED_COMPONENT = Cannot resolve {0} with namespace ''{1}'' and name ''{2}'' in this context
