###############################################################################
# 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 Common Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/cpl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
#
# $Source: /cvsroot/webtools/jeetools.move/webtools.javaee.git/plugins/org.eclipse.jem.proxy/proxy/org/eclipse/jem/internal/proxy/core/messages.properties,v $
# $Revision: 1.6 $  $Date: 2004/08/27 15:35:20 $
#



#
# Exception Messages. All of these messages are the text of an java exception.
#
UnexpectedException_EXC_                                    = IWAV0064E Unexpected exception thrown.

# {0} and {1} are java classes (e.g. java.lang.Object)
ClassCast_EXC_.IncorrectType                                = IWAV0065E "{0}" is neither a subclass of, nor does it implement, class "{1}".

# Standard Bean Proxy Factory and Standard Bean Type Proxy Factory are terms in beaninfo. They are the 
# standard (i.e. base) factories for beans or bean types. Bean types are java classes.
ProxyFactory_EXC_.NoBeanProxyFactory                        = IWAV0066E No Standard Bean Proxy Factory has been set.
ProxyFactory_EXC_.NoBeanTypeProxyFactory                    = IWAV0067E No Standard Bean Type Proxy Factory has been set.


# {0} is the title of a project.
Not_Java_Project_WARN_                                      = IWAV0068W Project "{0}" is not a java project.
No_VM_WARN_                                                 = IWAV0069W Project "{0}" has no Java JRE defined to use to run programs within this project.
No_Implementation_WARN_                                     = IWAV0070W Cannot find a proxy implementation to use for project "{0}."

ProxyLaunch                                                 = Launching Local Proxy VM
ProxyWaitForBuild                                           = Waiting for build to complete
Expression.InInvalidStateDueTo_EXC_                         = IWAV0162E Expression is in invalid state due to "{0}"
Expression.InInvalidState_EXC_                              = IWAV0163E Expression is in invalid state
Expression.TypeSentInInvalidOrder_EXC_                      = IWAV0164E Expression type sent in invalid order
Expression.ArrayTypeNotAnArray_EXC_                         = IWAV0165E ArrayType "{0}" is not an array.
Expression.CannotHandleNoReceiveOnFieldAccess_EXC_          = IWAV0166E Currently cannot handle no receiver on field access.
Expression.MethodsNeedReceiver_EXC_                         = IWAV0167E Currently methods need receiver ({0})
ProxyPlugin.CleanupDefaultProxyLaunchConfigurations         = Clean up default proxy launch configurations.
ProxyLaunchSupport.RegistryCouldNotStartForSomeReason_WARN_ = IWAV0168W Registry could not be started for some reason.
