#
#
# Copyright (c) 1996, 2010, 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.
#
 

#*****************************************************************************
#*                    Copyright (c) IBM Corporation 1998                     *
#*                                                                           *
#* (C) Copyright IBM Corp. 1998                                              *
#*                                                                           *
#*****************************************************************************

# To add a generator sun.rmi.rmic.Foo which is invoked via the -foo option:
#
#   1. Add "foo" to generator.args list.
#   2. Add line: generator.class.foo=sun.rmi.rmic.Foo
#   3. Update rmic.usage string to include new arguments.

# For each available generator, list the command line argument used
# to invoke it.  The value can be a single item or a comma separated
# list.

generator.args=v1.1,vcompat,v1.2,iiop,idl,xprint

# For each generator, specify the class to invoke, using the following
# syntax:
#
#     generator.class.{arg}=fullClassName
#
# The 'default' entry is required and will be used if none of the args
# specified in generator.args is passed. Note that {arg} is compared
# using String.equalsIgnoreCase().

generator.class.default=sun.rmi.rmic.RMIGenerator

generator.class.v1.1=sun.rmi.rmic.RMIGenerator
generator.class.vcompat=sun.rmi.rmic.RMIGenerator
generator.class.v1.2=sun.rmi.rmic.RMIGenerator
generator.class.iiop=sun.rmi.rmic.iiop.StubGenerator
generator.class.idl=sun.rmi.rmic.iiop.IDLGenerator
generator.class.xprint=sun.rmi.rmic.iiop.PrintGenerator

# If a generator needs a BatchEnvironment other than
# sun.rmi.rmic.BatchEnvironment, specify it as follows:
#
#     generator.env.{arg}=fullClassName

generator.env.iiop=sun.rmi.rmic.iiop.BatchEnvironment
generator.env.idl=sun.rmi.rmic.iiop.BatchEnvironment
generator.env.xprint=sun.rmi.rmic.iiop.BatchEnvironment

rmic.usage=Usage: {0} <options> <class names>\
\n\
\nwhere <options> includes:\
\n  -keep          Do not delete intermediate generated source files\
\n  -keepgenerated (same as "-keep")\
\n  -v1.1          Create stubs/skeletons for 1.1 stub protocol version\
\n  -vcompat       Create stubs/skeletons compatible with both\
\n                           1.1 and 1.2 stub protocol versions\
\n  -v1.2          (default) Create stubs for 1.2 stub protocol version only\
\n  -iiop          Create stubs for IIOP. When present, <options> also includes:\
\n\
\n                   -always           Create stubs even when they appear current\
\n                   -alwaysgenerate   (same as "-always")\
\n                   -nolocalstubs     Do not create stubs optimized for same process\
\n\
\n  -idl           Create IDL. When present, <options> also includes:\
\n\
\n                   -noValueMethods   Do not generate methods for valuetypes \
\n                   -always           Create IDL even when it appears current\
\n                   -alwaysgenerate   (same as "-always")\
\n\
\n  -g             Generate debugging info\
\n  -nowarn        Generate no warnings\
\n  -nowrite       Do not write compiled classes to the file system\
\n  -verbose       Output messages about what the compiler is doing\
\n  -classpath <path>      Specify where to find input class files\
\n  -bootclasspath <path>  Override location of bootstrap class files\
\n  -extdirs <path>        Override location of installed extensions\
\n  -d <directory>         Specify where to place generated class files\
\n  -J<runtime flag>       Pass argument to the java interpreter\
\n

#
# Generic Messages
#

rmic.cant.read=Can''t read: {0}
rmic.cant.write=Can''t write: {0}
rmic.option.unsupported=The {0} option is no longer supported.
rmic.option.unimplemented=The {0} option is not yet implemented.
rmic.option.already.seen=The {0} option may be specified no more than once.
rmic.option.requires.argument=The {0} option requires an argument.
rmic.no.such.directory=The {0} directory does not exist.
rmic.no.such.option={0} is an invalid option or argument.
rmic.wrote=[wrote {0}]
rmic.errors={0} errors
rmic.1error=1 error
rmic.warnings={0} warnings
rmic.1warning=1 warning
rmic.done_in=[done in {0} ms]
rmic.no.memory=\
	The compiler has run out of memory.  Consider using the "-J-Xmx<size>" command line option to increase the maximum heap size.
rmic.stack.overflow=\
	The compiler has run out of stack space.  Consider using the "-J-Xss<size>" command line option to increase the memory allocated for the Java stack.
rmic.class.not.found=\
	Class {0} not found.
rmic.missing.property=Missing property generator.class.{0}
rmic.cannot.instantiate=Cannot instantiate class {0}
rmic.cannot.use.both=Cannot use both {0} and {1}
rmic.resource.not.found={0} not found.
rmic.no.output.dir=\
	Cannot find suitable output directory for {0}. Use the -d option to specify a root directory.
rmic.cannot.create.dir=\
	Cannot create output directory {0}.

#
# JRMP Messages
#

rmic.cant.make.stubs.for.interface=\
	{0} is an interface; stubs are needed only for remote object classes.
rmic.must.implement.remote=\
	Class {0} does not implement an interface that extends java.rmi.Remote; only remote objects need stubs and skeletons.
rmic.must.implement.remote.directly=\
	Stubs are only needed for classes that directly implement an interface that extends java.rmi.Remote; class {0} does not directly implement a remote interface.
rmic.must.throw.remoteexception=\
	{0} is not a valid remote interface: method {1} must throw java.rmi.RemoteException.
rmic.must.only.throw.exception=\
	Method {0} is not a valid remote method implementation because it throws {1}; implementations of remote methods may only throw java.lang.Exception or its subclasses.
warn.rmic.tie.found=\
	An IIOP "tie" exists for class {0}:\
	\n  {1}\
	\nIf you use PortableRemoteObject.exportObject, you should remove this file; otherwise, your server object will be exported to IIOP rather than to JRMP.

#
# RMI-IIOP Messages
#

rmic.generated=[generated {0} in {1} ms]
rmic.previously.generated=[previously generated file {0} is current]
warn.rmic.member.not.mapped=\
    Data member {0} of class {1} was not mapped to IDL.

rmic.iiop.constraint.1=\
    {0} is not a valid interface: does not inherit from java.rmi.Remote.
rmic.iiop.constraint.2=\
    serialPersistentFields array of class {0} is invalid: references non-existent members.
rmic.iiop.constraint.3=\
    {0} is not a valid remote interface: {1} is not a valid primitive or String constant.
rmic.iiop.constraint.4=\
    {0} is not a valid value: serialPersistentFields must be private static final.
rmic.iiop.constraint.5=\
    {0} is not a valid remote interface: method {1} must throw RemoteException or a superclass of RemoteException.
rmic.iiop.constraint.6=\
    {0} is not a valid remote interface: inherited interfaces {1} both declare method {2}.
rmic.iiop.constraint.7=\
    {0} is not a valid type: {1} differ only in case.
rmic.iiop.constraint.8=\
    {0} is not a valid remote implementation: has no remote interfaces.
rmic.iiop.constraint.9=\
    serialPersistentFields array member {0} of class {1} is invalid: type does not match declared member.
rmic.iiop.constraint.10=\
    {0} is not a valid value: implements java.rmi.Remote.
rmic.iiop.constraint.11=\
    {0} is not a valid value: does not implement java.io.Serializable.
rmic.iiop.constraint.12=\
    {0} is not a valid value: invalid parent.
rmic.iiop.constraint.13=\
    {0} is not a valid interface: the idl name for method {1} conflicts with another method.
rmic.iiop.constraint.14=\
    {0} is not a valid abstract interface: not an interface.
rmic.iiop.constraint.15=\
    {0} is not a valid abstract interface: implements java.rmi.Remote.
rmic.iiop.constraint.16=\
    {0} is not a valid remote interface: not an interface.
rmic.iiop.constraint.17=\
    {0} is not a valid remote implementation: not a class.
rmic.iiop.constraint.18=\
    {0} is not a valid interface: method {1} may not pass an exception which implements org.omg.CORBA.portable.IDLEntity.
rmic.iiop.constraint.19=\
    {0} is not a valid interface: the idl name for constant {1} conflicts with another constant.
rmic.iiop.constraint.20=\
    {0} is not a valid class: the idl name for member {1} conflicts with another member.
rmic.iiop.constraint.21=\
    {0} is a remote implementation class and cannot be used as a method argument or return type in {1}.
rmic.iiop.constraint.22=\
    Internal failure: (Method) exception {0} not a class type.
rmic.iiop.constraint.23=\
    Internal failure: (Method) caught null pointer exception for {0}.
rmic.iiop.constraint.24=\
    Class {0} contains an invalid return type.
rmic.iiop.constraint.25=\
    Class {0} contains an invalid argument type in method {1}.
rmic.iiop.constraint.26=\
    Could not compile {0}.
rmic.iiop.constraint.27=\
    Could not load class {0}.
rmic.iiop.constraint.28=\
    {0} is a remote implementation class and cannot be used as a data member in {1}.
