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

#
# Messages in plugin.xml.
#
PLUGIN_NAME=Web Services
PLUGIN_PROVIDER=Eclipse.org

# Extension point names
XP_WEB_SERVICE_LOCATOR=Web Service Locator

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

# Currently known public UDDI registries
PUBLICUDDIREGISTRYTYPE_NAME_IBM=IBM UDDI Registry
PUBLICUDDIREGISTRYTYPE_NAME_IBM_TEST=IBM UDDI Test Registry
PUBLICUDDIREGISTRYTYPE_NAME_MICROSOFT=Microsoft UDDI Registry
PUBLICUDDIREGISTRYTYPE_NAME_MICROSOFT_TEST=Microsoft UDDI Test Registry
PUBLICUDDIREGISTRYTYPE_NAME_SAP=SAP UDDI Registry
PUBLICUDDIREGISTRYTYPE_NAME_SAP_TEST=SAP UDDI Test Registry
PUBLICUDDIREGISTRYTYPE_NAME_XMETHODS=XMethods Registry
PUBLICUDDIREGISTRYTYPE_NAME_NTTCOMM=NTT Communications Registry
