#
# Copyright (c) 1997, 2017, 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.
#

# Concatenated with Driver.ErrorMessage, Driver.WarningMessage, Driver.InfoMessage (Driver.InfoMessage + exception message + ConsoleErrorReporter.UnknownLocation) if location of the error is not known.
ConsoleErrorReporter.UnknownLocation = \
        unknown location

# Concatenated with Driver.ErrorMessage, Driver.WarningMessage, Driver.InfoMessage (Driver.InfoMessage + exception message + ConsoleErrorReporter.LineXOfY). {0} - "?"/number, {1} - file location/"unknown file" e.g.: [xjc] [ERROR] Attempt to create a property having the same name as the reserved word "Class". [xjc] line 6 of example.xsd
ConsoleErrorReporter.LineXOfY = \
        \ \ line {0} of {1}

# may be a placeholder replacement for the second placeholder of ConsoleErrorReporter.LineXOfY (if the file location is unknown)
ConsoleErrorReporter.UnknownFile = \
        unknown file

Driver.Private.Usage = \
Additional private testing options:\n\
\ \ -debug             :  run in debug mode (includes -verbose)\n\
\ \ -mode <mode>       :  run XJC in other running mode\n\
\ \ -private           :  display this help message\n\
Mode:\n\
\ \ code         :  generate Java source code (default)\n\
\ \ dryrun       :  compile the schema in memory, but don't generate the Java source\n\
\ \ zip          :  generate Java source code into a zip file specified by the -d option\n\
\ \ sig          :  dump the signatures of the generated code\n\
\ \ forest       :  dump transformed DOM forest\n\

Driver.Public.Usage = \
Usage: xjc [-options ...] <schema file/URL/dir/jar> ... [-b <bindinfo>] ...\n\
If dir is specified, all schema files in it will be compiled.\n\
If jar is specified, /META-INF/sun-jaxb.episode binding file will be compiled.\n\
Options:\n\
\ \ -nv                :  do not perform strict validation of the input schema(s)\n\
\ \ -extension         :  allow vendor extensions - do not strictly follow the\n\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Compatibility Rules and App E.2 from the JAXB Spec\n\
\ \ -b <file/dir>      :  specify external bindings files (each <file> must have its own -b)\n\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ If a directory is given, **/*.xjb is searched\n\
\ \ -d <dir>           :  generated files will go into this directory\n\
\ \ -p <pkg>           :  specifies the target package\n\
\ \ -m <name>          :  generate module-info.java with given Java module name\n\
\ \ -httpproxy <proxy> :  set HTTP/HTTPS proxy. Format is [user[:password]@]proxyHost:proxyPort\n\
\ \ -httpproxyfile <f> :  Works like -httpproxy but takes the argument in a file to protect password \n\
\ \ -classpath <arg>   :  specify where to find user class files\n\
\ \ -catalog <file>    :  specify catalog files to resolve external entity references\n\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ support TR9401, XCatalog, and OASIS XML Catalog format.\n\
\ \ -readOnly          :  generated files will be in read-only mode\n\
\ \ -npa               :  suppress generation of package level annotations (**/package-info.java)\n\
\ \ -no-header         :  suppress generation of a file header with timestamp\n\
\ \ -target (2.0|2.1)  :  behave like XJC 2.0 or 2.1 and generate code that doesn't use any 2.2 features.\n\
\ \ -encoding <encoding> :  specify character encoding for generated source files\n\
\ \ -enableIntrospection :  enable correct generation of Boolean getters/setters to enable Bean Introspection apis \n\
\ \ -disableXmlSecurity  :  disables XML security features when parsing XML documents \n\
\ \ -contentForWildcard  :  generates content property for types with multiple xs:any derived elements \n\
\ \ -xmlschema         :  treat input as W3C XML Schema (default)\n\
\ \ -dtd               :  treat input as XML DTD (experimental,unsupported)\n\
\ \ -wsdl              :  treat input as WSDL and compile schemas inside it (experimental,unsupported)\n\
\ \ -verbose           :  be extra verbose\n\
\ \ -quiet             :  suppress compiler output\n\
\ \ -help              :  display this help message\n\
\ \ -version           :  display version information\n\
\ \ -fullversion       :  display full version information\n\

Driver.AddonUsage = \nExtensions:

# {0} - one of: DTD, WSDL; {1} - one of (respectively): -dtd, -wsdl
Driver.ExperimentalLanguageWarning = \
        Are you trying to compile {0}? Support for {0} is experimental. \
        You may enable it by using the {1} option.

# Not concatenated with any other String. Variable: Name of a directory (input argument of the XJC utility).
Driver.NonExistentDir = \
    cowardly refuses to write to a non-existent directory "{0}"

# Usage not found. TODO Remove
#Driver.MissingRuntimePackageName = \
#       the -use-runtime option is missing a package name

# Not concatenated with any other string (written on a separate line).
Driver.MissingModeOperand = \
        the -mode option is missing an operand

# Usage not found. TODO Remove
#Driver.MissingCompatibilityOperand = \
#       the -compatibility option is missing an operand

# Not concatenated with any other string (written on a separate line).
Driver.MissingOperand = \
        an operand is missing

# Not concatenated with any other string (written on a separate line).
Driver.MissingProxyHost = \
        either the -host option is missing an operand \n\
        or -port was specified but not -host

# Not concatenated with any other string (written on a separate line).
Driver.MissingProxyPort = \
        either the -port option is missing an operand \n\
        or -host was specified but not -port

Driver.ILLEGAL_TARGET_VERSION = \
    "{0}" is not a valid target version. "2.0" and "2.1" are supported.
# Java module name is invalid, {0} - Java module name.
Driver.INVALID_JAVA_MODULE_NAME = \
    invalid Java module name: "{0}"

# Not concatenated with any other string (written on a separate line).
Driver.MISSING_PROXYFILE = \
    the -httpproxyfile option is missing an operand

Driver.NO_SUCH_FILE = \
    No such file: {0}

Driver.ILLEGAL_PROXY = \
    "{0}" is not a valid proxy format. The format is [user[:password]@]proxyHost:proxyPort

# Not concatenated with any other string (written on a separate line).
Driver.UnrecognizedMode = \
        unrecognized mode {0}

# Not concatenated with any other string (written on a separate line).
Driver.UnrecognizedParameter = \
        unrecognized parameter {0}

Driver.UnsupportedEncoding = \
        unsupported encoding: {0}

Driver.MissingGrammar = \
        grammar is not specified

# {0} - namespace uri, {1} - local name of the attribute/element e.g.: Unexpected end of attribute {http://www.w3.org/XML/1998/namespace}:lang
Driver.NotABindingFile = \
        not an external binding file. The root element must be '{'http://java.sun.com/xml/ns/jaxb'}'bindings but it is '{'{0}'}'{1}

# Not concatenated with any other string (written on a separate line).
Driver.ParsingSchema = \
        parsing a schema...

Driver.ParseFailed = \
        Failed to parse a schema.

Driver.StackOverflow = \
        Stack overflow. Either you are compiling a large schema that requires more resources, or \
        XJC has a bug. First, please extend the stack size by using the -Xss JVM option. If this \
        doesn'''t solve the problem, please use the -debug option to obtain the stack trace and \
        contact Sun.

# Not concatenated with any other string (written on a separate line).
Driver.CompilingSchema = \
        compiling a schema...

Driver.FailedToGenerateCode = \
        Failed to produce code.

# DO NOT localize the 2.3.0-b170531.0717 string - it is a token for an mvn <properties filter>
Driver.FilePrologComment = \
        This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0-b170531.0717 \n\
        See <a href="https://jaxb.java.net/">https://jaxb.java.net/</a> \n\
        Any modifications to this file will be lost upon recompilation of the source schema. \n\
        Generated on: {0} \n

Driver.Version = \
        xjc 2.3.0-b170531.0717

Driver.FullVersion = \
        xjc full version "2.3.0-b170531.0717"

Driver.BuildID = 2.3.0-b170531.0717

# for JDK integration - include version in source zip
jaxb.jdk.version=2.3.0-b170531.0717

# see java.text.SimpleDateFormat for format syntax
# DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
Driver.DateFormat = \
        yyyy.MM.dd

# see java.text.SimpleDateFormat for format syntax
# Format should not be changed, English locale is used to transform this string into a real time.
Driver.TimeFormat = \
        hh:mm:ss a z

# as in: "generated on <date> at <time>"
Driver.At = \
        at

# ERROR in this meaning is a well known level of logging and should not be translated.
Driver.ErrorMessage = \
        [ERROR] {0}

# WARNING in this meaning is a well known level of logging and should not be translated.
Driver.WarningMessage = \
        [WARNING] {0}

# INFO in this meaning is a well known level of logging and should not be translated.
Driver.InfoMessage = \
        [INFO] {0}

ModelLoader.TooManySchema = \
        Too many schema files for this schema language. Compile one file at a time.

ModelLoader.BindingFileNotSupportedForRNC = \
    External binding files are not supported for the RELAX NG compact syntax.

Driver.DefaultVersion = \
        Defaulting the version to JAXB 2.0

Driver.DefaultPackageWarning = \
    Default Java package specified.  You will not be able to access the generated code from classes in any other package.

Driver.NotAValidFileName = \
    "{0}" is not a valid file name: {1}

Driver.FailedToParse = \
    Failed to parse "{0}": {1}

Driver.NotAFileNorURL = \
    "{0}" is neither a file name nor a URL

FIELD_RENDERER_CONFLICT = \
    "-{0}" and "-{1}" are mutually exclusive since both affect the code generation

NAME_CONVERTER_CONFLICT = \
    "-{0}" and "-{1}" are mutually exclusive since both affect the code generation

# {0} - file path, {1} - exception message e.g.: Failed to load "/foo/bar/Library.jar": File not found.
FAILED_TO_LOAD = \
    Failed to load "{0}": {1}

PLUGIN_LOAD_FAILURE = \
    Failure to load a plugin: "{0}". Use the system property ''-Dcom.sun.tools.internal.xjc.Options.findServices=true'' to \
    diagnose it further
