###############################################################################
# Copyright (c) 2005, 2008 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
# yyyymmdd bug      Email and other contact information
# -------- -------- -----------------------------------------------------------
# 20060420   120714 kathy@ca.ibm.com - Kathy Chan
# 20070125   171071 makandre@ca.ibm.com - Andrew Mak
# 20070409   181635 makandre@ca.ibm.com - Andrew Mak
# 20080403   225480 kathy@ca.ibm.com - Kathy Chan
###############################################################################

#
# GetMonitorCommand
#
MSG_ERROR_UNABLE_TO_START_MONITOR=IWAB0001E Unable to monitor port {0} of {1}.

#
# WSDLUtility
#
MSG_UNABLE_TO_RESOLVE_HTTP=Could not resolve service definition http://{0}.  Service may not be running on the server.
MSG_UNABLE_TO_RESOLVE_PLATFORM_URI=Could not parse platform:/resource{0}.

#
# WSIComplianceUtils
#
IGNORE_LABEL=Ignore
IGNORE_DESCRIPTION=Ignore the WS-I non-compliance and continue
IGNORE_ALL_LABEL=Ignore All
IGNORE_ALL_DESCRIPTION=Always ignore the WS-I non-compliance and continue
CANCEL_LABEL=Cancel
CANCEL_DESCRIPTION=Cancel

#
#	WS-I Compliance Messages
#
WSI_SSBP_ERROR=You have made a choice that may result in a Web service that does not comply with the WS-I Basic Profile 1.1 and Simple SOAP Binding Profile 1.0. Your current Web services preference is set to require compliance.
WSI_SSBP_WARNING=You have made a choice that may result in a Web service that does not comply with the WS-I Basic Profile 1.1 and Simple SOAP Binding Profile 1.0. Do you wish to ignore this warning and continue?
WSI_SSBP_INCOMPLIANT_RUNTIME=The selected Web Service runtime does not comply with the WS-I Basic Profile 1.1 and Simple SOAP Binding Profile 1.0.
WSI_AP_ERROR=You have made a choice that may result in a Web service that does not comply with the WS-I Attachment Profile 1.0. Your current Web services preference is set to require compliance.
WSI_AP_WARNING=You have made a choice that may result in a Web service that does not comply with the WS-I Attachment Profile 1.0. Do you wish to ignore this warning and continue?
WSI_AP_INCOMPLIANT_RUNTIME=The selected Web Service runtime does not comply with the WS-I Attachment Profile 1.0.


#
# WSDLCopier Messages
#
MSG_ERROR_COPY_WSDL=Failed to copy WSDL "{0}" to "{1}".
MSG_ERROR_TARGET_FOLDER_NOT_SPECIFIED=A target folder was not specified.
