#
# Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

#
# Message resource file
#



ERR_UNDECLARED_PREFIX = \
        Prefix "{0}" is undeclared

ERR_UNEXPECTED_EXTENSION_BINDING_PREFIXES = \
        extensionBindingPrefixes attribute must be declared at the root element

ERR_VENDOR_EXTENSION_DISALLOWED_IN_STRICT_MODE = \
    vendor extension bindings (jaxb:extensionBindingPrefixes) are not allowed in the strict mode. Use -extension.

ERR_UNSUPPORTED_EXTENSION = \
        Unsupported binding namespace "{0}". Perhaps you meant "{1}"?

ERR_SUPPORTED_EXTENSION_IGNORED = \
        Binding declaration namespace "{0}" will be ignored because it is \
        not designated by the jaxb:extensionBindingPrefixes attribute.

ERR_RELEVANT_LOCATION = \
        The following location is relevant to the above error


ERR_CLASS_NOT_FOUND = \
        Unable to find type "{0}". Without knowing the proper inheritance hierarchy of this type, \
        XJC may fail to generate some signatures correctly. \
        Make this class available via the -classpath option.

DUPLICATE_PROPERTY = \
    Property "{0}" is already defined. Use &lt;jaxb:property> to resolve this conflict.

DUPLICATE_ELEMENT = \
    Element "{0}" shows up in more than one properties.

# Usage not found. Assuming the intention was to use it together with DUPLICATE_ELEMENT but ERR_RELEVANT_LOCATION is used instead.
DUPLICATE_PROPERTY_LOC = \
    (related to above error) another definition is given here.

PROPERTY_CLASS_IS_RESERVED = \
    Property name "Class" is reserved by java.lang.Object.

ERR_ILLEGAL_CUSTOMIZATION_TAGNAME = \
    "{0}" is not a valid customization.

ERR_PLUGIN_NOT_ENABLED = \
    Using "{1}" customizations requires the "-{0}" switch to enable this plug-in.
