###############################################################################
# Copyright (c) 2003, 2004 IBM Corporation and others.
# 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:
#     IBM Corporation - initial API and implementation
###############################################################################
#
# $Source: /cvsroot/webtools/jeetools.move/webtools.javaee.git/plugins/org.eclipse.jem.proxy/proxyRemote/org/eclipse/jem/internal/proxy/remote/messages.properties,v $
# $Revision: 1.14 $  $Date: 2005/06/21 20:35:07 $
#



# Exception message - {0} is the name of a project within Eclipse.
NO_OUTPUT_FOLDER_EXC_                                                 = IWAV0071E No output folder for project "{0}."

# These are lines that are placed into a log file listing the outputs from the two different streams.
VM_TERMINATED_INFO_                                                   = IWAV0072I Remote VM terminated before any commands can be sent. Following are the error and output streams.
VM_TERMINATED_LINE1                                                   = -- Error Stream --
VM_TERMINATED_LINE2                                                   = -- Output Stream --
VM_TERMINATED_LINE3                                                   = -- End of Stream Output --

# These are the headers for two parts of a stack trace of an exception. The first one is the trace from the remote system.
# The second is the trace from the local system.
REMOTE_VM_TRACE_INFO_                                                 = IWAV0073I *** RemoteVM Exception - Trace from Remote VM:
REMOTE_VM_LOCAL_TRACE_INFO_                                           = IWAV0074I *** Local StackTrace:

# In the two below, {0} is a string that is a java creation string, e.g. "new Integer(3)", so they don't participate in translation.
# In Classcast, {1} is a java type name, e.g. java.lang.Integer.
Classcast_EXC_                                                        = IWAV0124E "{0}" does not evaluate to an object of type {1}
Instantiate_EXC_                                                      = IWAV0125E "{0}" is too complicated to be evaluated

# {0} is a number, e.g. 1, 2, ...
RemoteCmd_EXC_                                                        = IWAV0126E Remote command error {0}

# The following is an exception error where {0} is the name of the class of the exception and {1} is the message from the exception
# The message {1} has already been localized (if it supplied it localized). It comes from somewhere outside of our project.
ExceptionErrorMsg_EXC_                                                = IWAV0135E {0}({1})
OK_7                                                                  = OK
Proxy_NoRunner_ERROR_                                                 = IWAV0137E Could not find a Run type runner to launch for \"{0}\".
Proxy_Error_Title                                                     = Error:
Proxy_Terminated_too_soon_ERROR_                                      = IWAV0138E Remote VM terminated too soon. See .log file for trace of output. For VM \"{0}\".
# This is a launch name for a given project name ({0}).
# WARNING for the ProxyRemoteVMName and ProxyRemoteVMNameWithComment do not use double-quote ("). It will cause problems.
ProxyRemoteVMName                                                     = Project ({0})
# This is a launch name that has a comment ({0} is project name, {1} is the comment for this project launch)
ProxyRemoteVMNameWithComment                                          = Project ({0})-{1}

ProxyRemoteNoLaunchKey                                                = Cannot launch local proxy registry. Not launched from valid launcher.

# {0} is the appropriate VMName from the above two entries.
ProxyRemoteLaunchVM                                                   = Launching remote vm "{0}"

CleanupJob_title                                                      = Remote VM Cleanup GC'd Proxies Job

REMProxyFactoryRegistry_CallbackConnectionNotWorking_EXC_             = IWAV0169E Callback connection is not working.
REMProxyFactoryRegistry_ConnectionCreationFailed_INFO_                = IWAV0170I Connection creation failed.
REMProxyFactoryRegistry_Job_TerminateProcess_Title=Terminate the remote vm process.
REMProxyFactoryRegistry_CouldNotCreateSocketConnectionToRemoteVM_EXC_ = IWAV0171E Could not create a socket connection to remote vm.
REMExpression_IOExceptionSeeLog_INFO_                                 = IWAV0172I I/O Exception occurred. See .log file for details.
REMExpression_CommandExceptionSeeLog_INFO_                            = IWAV0173I Command Exception occurred. See .log file for details.
LocalProxyLaunchDelegate_Monitor_PrintRemoteTrace_Text=Print remote vm trace output
