################################################################################
# Copyright (c) 2011, 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
################################################################################

# JptJaxbEclipseLinkCoreValidationMessages

# NB: The entries in this file must be kept in sync with the validation messages in
# jpt_jaxb_eclipselink_core_validation.properties.

PROJECT_MISSING_ECLIPSELINK_JAXB_CONTEXT_FACTORY=

OXM_FILE__NOT_LATEST_VERSION=
OXM_FILE__NO_PACKAGE_SPECIFIED=
OXM_FILE__NO_SUCH_PACKAGE=

OXM_JAVA_TYPE__NAME_NOT_SPECIFIED=
OXM_JAVA_TYPE__PACKAGE_NAME_NOT_UNIFORM=

XML_DISCRIMINATOR_NODE__NOT_SPECIFIED=

XML_DISCRIMINATOR_VALUE__NOT_SPECIFIED=

XML_ELEMENT_DECL__INVALID_METHOD_SIGNATURE_RETURN_TYPE=

XML_INVERSE_REFERENCE__MAPPED_BY_NOT_SPECIFIED=
XML_INVERSE_REFERENCE__MAPPED_BY_NOT_RESOLVED=
XML_INVERSE_REFERENCE__MAPPED_BY_ILLEGAL_MAPPING_TYPE=

XML_JOIN_NODE__XML_PATH_NOT_SPECIFIED=
XML_JOIN_NODE__REFERENCED_XML_PATH_NOT_SPECIFIED=
XML_JOIN_NODE__REFERENCED_XML_PATH_NOT_IN_REFERENCED_CLASS_KEYS=

XML_JOIN_NODES__INVALID_REFERENCED_CLASS=
XML_JOIN_NODES__DUPLICATE_XML_PATH=
XML_JOIN_NODES__DUPLICATE_REFERENCED_XML_PATH=

XML_PATH__NOT_SPECIFIED=

XML_PATH__INSUFFICIENT_XML_PATHS_FOR_XML_ELEMENTS=
XML_PATH__INSUFFICIENT_XML_ELEMENTS_FOR_XML_PATHS=

XPATH__INVALID_FORM_ILLEGAL_SEGMENT=
XPATH__ROOT_NOT_SUPPORTED=
XPATH__SELF_SEGMENT_MUST_BE_FIRST_SEGMENT=
XPATH__TEXT_SEGMENT_MUST_BE_LAST_SEGMENT=
XPATH__ATTRIBUTE_SEGMENT_MUST_BE_LAST_SEGMENT=
XPATH__INVALID_NS_PREFIX=
XPATH__UNRESOLVED_ELEMENT=
XPATH__UNRESOLVED_ATTRIBUTE=
