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

PROJECT_MISSING_ECLIPSELINK_JAXB_CONTEXT_FACTORY = Project is missing a jaxb.properties file specifying the EclipseLink JAXB context factory

OXM_FILE__VERSION_NOT_SUPPORTED = Only OXM files version 2.2 and later are supported.

OXM_JAVA_TYPE__NAME_NOT_SPECIFIED = The java type name must be specified.
OXM_JAVA_TYPE__PACKAGE_NAME_NOT_UNIFORM = The package name of java types must be uniform within an OXM file.

XML_DISCRIMINATOR_NODE__NOT_SPECIFIED = XmlDiscriminatorNode not specified.

XML_DISCRIMINATOR_VALUE__NOT_SPECIFIED = XmlDiscriminatorValue not specified.

XML_ELEMENT_DECL__INVALID_METHOD_SIGNATURE_RETURN_TYPE = An element factory method must have a return type consistent with 'javax.xml.bind.JAXBElement'.

XML_INVERSE_REFERENCE__MAPPED_BY_NOT_SPECIFIED = The 'mappedBy' property must be specified on an XmlInverseReference.
XML_INVERSE_REFERENCE__MAPPED_BY_NOT_RESOLVED = Cannot resolve the attribute ''{0}'' on the class ''{1}''.
XML_INVERSE_REFERENCE__MAPPED_BY_ILLEGAL_MAPPING_TYPE = The attribute ''{0}'' on the class ''{1}'' must be mapped as XmlElement, XmlElements, XmlAttribute, or XmlValue.j

XML_JOIN_NODE__XML_PATH_NOT_SPECIFIED = XmlJoinNode xmlPath not specified.
XML_JOIN_NODE__REFERENCED_XML_PATH_NOT_SPECIFIED = XmlJoinNode referencedXmlPath not specified.
XML_JOIN_NODE__REFERENCED_XML_PATH_NOT_IN_REFERENCED_CLASS_KEYS = There is no XmlKey or XmlID on the target class ''{0}'' with XPath \"{1}\".

XML_JOIN_NODES__INVALID_REFERENCED_CLASS = The referenced class ''{0}'' is invalid for use with XmlJoinNodes.
XML_JOIN_NODES__DUPLICATE_XML_PATH = Duplicate xmlPath ''{0}'' in XmlJoinNodes.
XML_JOIN_NODES__DUPLICATE_REFERENCED_XML_PATH = Duplicate referencedXmlpath ''{0}'' in XmlJoinNodes.

XML_PATH__NOT_SPECIFIED = XmlPath not specified.

XML_PATH__INSUFFICIENT_XML_PATHS_FOR_XML_ELEMENTS = Insufficient XmlPaths specified.  There must be an XmlPath for each XmlElement.
XML_PATH__INSUFFICIENT_XML_ELEMENTS_FOR_XML_PATHS = There is no XmlElement to match this XmlPath.  There must be an XmlElement for each Xmlpath.

XPATH__INVALID_FORM_ILLEGAL_SEGMENT = Illegal XPath step \"{0}\".
XPATH__ROOT_NOT_SUPPORTED = Root XPath is not supported in this context.
XPATH__SELF_SEGMENT_MUST_BE_FIRST_SEGMENT = Self XPath step must be first step.
XPATH__TEXT_SEGMENT_MUST_BE_LAST_SEGMENT = Text XPath step must be last step.
XPATH__ATTRIBUTE_SEGMENT_MUST_BE_LAST_SEGMENT = An attribute XPath step must be the last step.
XPATH__INVALID_NS_PREFIX = Cannot resolve a namespace for the prefix \"{0}\".
XPATH__UNRESOLVED_ELEMENT = Cannot resolve element with namespace \"{0}\" and local name \"{1}\" in this context.
XPATH__UNRESOLVED_ATTRIBUTE = Cannot resolve attribute with namespace \"{0}\" and local name \"{1}\" in this context.
