###############################################################################
# Copyright (c) 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
###############################################################################

#
# Sample messages
#
MSG_ERROR_JTS_PROXY_HAS_NO_METHODS=IWAB0179E Unable to create a sample to the proxy because the proxy does not contain methods.
MSG_ERROR_JTS_PROXY_HAS_NO_DEFAULT=IWAB0180E Unable to create a sample to the proxy because the proxy is not a bean (i.e.. the sample does not have public default constructor).
MSG_ERROR_JTS_NO_PROXY_METHODS_PROCESSED=IWAB0181E Unable to create a sample to the proxy because none of the methods in the proxy were processed.
MSG_WARN_JTS_UNSUPPORTED_TYPE=IWAB0182W The Sample JSP client does not support the following type:
MSG_WARN_JTS_UNSUPPORTED_INDEXED_PROPERTIES=IWAB0187W The Sample JSP client does not support Indexed properties.
MSG_WARN_JTS_UNSUPPORTED_PARAMETERS_ARRAYS=IWAB0237W The Sample JSP client does not support arrays:
MSG_WARN_JTS_UNSUPPORTED_PARAMETERS_INPUTS=IWAB0124W The Sample JSP client does not support input parameters that are not beans:
MSG_ERROR_JTS_CYCLIC_BEAN=IWAB0188E The Sample JSP client does not support beans containing attributes that reference the beans.
MSG_WARN_JTS_PROXY_METHODS_OMITTED=IWAB0189W The Sample JSP client omitted some methods because they contained unsupported types.
MSG_ERROR_SAMPLE_CREATION_CANCELED=IWAB0021E Sample creation was canceled
MSG_WARN_UNABLE_TO_FIND_PROXY=IWAB0022W The Proxy Resource cound not not be found.
MSG_ERROR_JTS_JSP_GEN=Error in generating sample JSP

# Not used
#MSG_ERROR_CANNOT_CREATE_COMPONENT=The Web service wizard cannot automatically create component "{0}". Cancel the wizard and create the component manually.


#
# Filters
#
FILTER_MSG_ERROR_NULL_OBJECT=IWAB0097E No object has been provided.
FILTER_MSG_ERROR_NOT_FILE=IWAB0098E The object "{0}" is not a file.
FILTER_MSG_ERROR_NOT_FOLDER=IWAB0137E The object "{0}" is not a folder.

JAVA_FILTER_NAME=Java files
JAVA_FILTER_DESC=Files with names ending in ".java" or ".class".
JAVA_FILTER_MSG_ERROR_WRONG_EXTENSION=IWAB0102E The file "{0}" does not end in ".java" or ".class".

WSDL_FILTER_NAME=WSDL files
WSDL_FILTER_DESC=Files with names ending in ".wsdl".
WSDL_FILTER_MSG_ERROR_WRONG_EXTENSION=IWAB0103E The file "{0}" does not end in ".wsdl".

ISD_FILTER_NAME=ISD files
ISD_FILTER_DESC=Files with names ending in ".isd".
ISD_FILTER_MSG_ERROR_WRONG_EXTENSION=IWAB0095E The file "{0}" does not end in ".isd".

PROPERTIES_FILTER_NAME=Properties files
PROPERTIES_FILTER_DESC=Files with names ending in ".properties"
PROPERTIES_FILTER_MSG_ERROR_WRONG_EXTENSION= The file "{0}" does not end in ".properties".

FOLDER_FILTER_NAME=Folders
FOLDER_FILTER_DESC=Folders.

#
# Deployment status
#
PROGRESS_INFO_COPY_WEBSERVICE_UTILS=IWAB0023I Copying the webservice utilities.
PROGRESS_INFO_COPYING_FILE=IWAB0197I Copying SOAP run-time file.
PROGRESS_INFO_START_WEB_PROJECT=IWAB0198I Starting Web project.
PROGRESS_INFO_PUBLISHING_SERVER=IWAB0199I Publishing server.
PROGRESS_INFO_STARTING_SERVER=IWAB0200I Starting server.
PROGRESS_INFO_PUBLISH_WEB_PROJECT=IWAB0205I Publishing Web project.


#
# Deployment messages
#
MSG_ERROR_PROJECT_NOT_FOUND=IWAB0207E Web project was not found.
MSG_ERROR_FILECOPY_WEBSERVICE_UTILS=IWAB0024E Error in copying Webservice Utility file.
MSG_ERROR_INSTANCE_NOT_FOUND=IWAB0212E Server was not found.
MSG_ERROR_SERVER=IWAB0213E Error in starting server.
MSG_ERROR_PUBLISH=IWAB0217E Error in publishing Web project.
MSG_ERROR_ADD_MODULE=Error occured when adding the module, {0}, to the server

MSG_ERROR_CREATE_SERVER=IWAB0025E Unable to create server.
MSG_ERROR_STUB_ONLY=Unable to create server because only stub runtimes are available for the {0} server type. Go to Window > Preferences. Select Server > Installed Runtimes to install a non-stub runtime.

#
# EJB messages
# 4 unused messages in jst.ws and wst.ws
TASK_LABEL_CREATE_EJB_PROJECT=CreateEJBProjectTask
TASK_DESC_CREATE_EJB_PROJECT=Create an EJB Project.
MSG_ERROR_CANNOT_CREATE_EJB_PROJECT=IWAB0432E Unable to create EJB project.
MSG_ERROR_CANNOT_CREATE_APP_CLIENT_PROJECT=IWAB0026E Unable to create application client project {0}.

MSG_ERROR_CANNOT_CREATE_JAVA_PROJECT=IWAB0027E Unable to create Java project {0}.
MSG_ERROR_CANNOT_CREATE_EAR_PROJECT=IWAB0062E Unable to create EAR project {0}.

#
# Validator task descriptions
#
TASK_LABEL_WEBSERVICE_DISABLE_VALIDATION=Disable validators.
TASK_DESC_WEBSERVICE_DISABLE_VALIDATION=Temporarily disabling validators.
TASK_LABEL_WEBSERVICE_RESTORE_VALIDATION=Restore validators.
TASK_DESC_WEBSERVICE_RESTORE_VALIDATION=Restoring states of validators.
TASK_LABEL_WEBSERVICE_DISABLE_BUILD=Disable auto build.
TASK_DESC_WEBSERVICE_DISABLE_BUILD=Temporarily disabling auto build.
TASK_LABEL_WEBSERVICE_RESTORE_BUILD=Restore auto build.
TASK_DESC_WEBSERVICE_RESTORE_BUILD=Restoring state of auto build.

#
# MISC
#
MSG_ERROR_WEB_PROJECT_CREATE=IWAB0310E An error occurred during creation of the Web Project.

#
# CheckProjectOKCommand
#
MSG_ERROR_SERVER_VIEW_OPEN=IWAB0126E The server configuration editor is open for {0}.  Close it and restart the wizard.


#
#	DetectNonJavaCharsCommand
#
MSG_WARN_JAVA_METHOD_START_WITH_UPPER_CASE=IWAB0129W Java method {0} in class {1} starts with an upper case letter. Method names should begin with lower case letters.
MSG_WARN_METHOD_NAME_INVALID=IWAB0131W Java method {0} name contains underscore or numeric digits followed by a lower case letter.\
Method names should not contain lower case letters after a numeric or underscore.
MSG_WARN_BOOLEAN_PROPERTY_ACCESSORS=IWAB0132W Boolean property accessor {0} in bean {1} begins with "get". Boolean getter methods should begin wth "is".
MSG_WARN_PACKAGE_NAME_HAS_UPPER_CASE=IWAB0133W The package name {0} of class {1} includes upper case letters. Package names should consist of lower case letters only.

WARN_BEAN_NAME_STARTS_WITH_LOWER_CASE

#
# JavaToModelCommand
#
LABEL_OK=OK
DESCRIPTION_OK=Select OK to continue

LABEL_CANCEL=Cancel
DESCRIPTION_CANCEL=Select Cancel to cancel

#
# CreateMonitorCommand
#
MSG_ERROR_UNABLE_TO_START_MONITOR=IWAB0001E Unable to monitor port {0} of {1}.
MSG_INFO_MONITORING_NOT_SUPPORTED=IWAB0002I {0} does not support port monitoring.

#
# CopyWSDLCommand
#
COMMAND_LABEL_COPY_WSDL=Copying WSDL
COMMAND_DESC_COPY_WSDL=Copying WSDL into the workspace for Web service deployment
MSG_ERROR_COPY_WSDL=IWAB0028E Failed to copy WSDL {0} to {1}

#
# AssociateModuleWithEARCommand
#
MSG_ERROR_UNABLE_TO_ASSOCIATE=Unable to associate component {0} to ear component {1}.

#
# CreateModuleCommand
#
MSG_ERROR_CREATE_FLEX_PROJET=An error occured during creation of flexible project {0}.
MSG_ERROR_CREATE_EJB_COMPONENT=An error occured during creation of EJB component {0}.
MSG_ERROR_CREATE_APPCLIENT_COMPONENT=An error occured during creation of Application Client component {0}.
MSG_ERROR_COMPONENT_CREATION=Unable to create project {0} and/or component {1}.


#
# CreateFacetedProjectCommand
#
MSG_ERROR_PROJECT_CREATION=Unable to create project {0}.
