###############################################################################
# Copyright (c) 2000, 2010 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
# -------- -------- -----------------------------------------------------------
# 20071122   209858 pmoogk@ca.ibm.com - Peter Moogk
# 20080324   220739 makandre@ca.ibm.com - Andrew Mak, Text Description missing for Profile Complaince nodes
# 20080403   225480 kathy@ca.ibm.com - Kathy Chan
# 20080715   240722 makandre@ca.ibm.com - Andrew Mak, Cannot setup TCP/IP Monitor for soap12 endpoints
# 20090310   242440 yenlu@ca.ibm.com - Yen Lu, Pluggable IFile to URI Converter
###############################################################################

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

# Extension point names
XP_WEB_SERVICE_LOCATOR=Web Service Locator
X_WEB_SERVICE_LOCATOR_WORKSPACE=Workspace Web Service Locator
X_WEB_SERVICE_LOCATOR_CATEGORY_WORKSPACE=Workspace WSDL documents
X_WSIL_CONTENT_TYPE=Web Services Inspection Language Document
XP_EXTENSIBILITY_ELEMENT_TRANSFORMER=Extensibility Element Transformer
XP_IFILE_2_URI_CONVERTER=IFile to URI Converter

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

# Currently known public UDDI registries
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


PREFERENCE_SERVICEPOLICIES_CONTAINER_WSI_COMPLIANCE=Profile Compliance
LABEL_WSI_SSBP=WS-I BP 1.1 + SSBP 1.0
LABEL_WSI_AP=WS-I AP 1.0

# Service policy descriptions
DESCRIPTION_WSI_COMPLIANCE=Web services interoperability (WS-I) profiles compliance levels.
DESCRIPTION_WSI_AP=WS-I Attachments Profile 1.0\n\
Requirements for supporting interoperable SOAP messages with attachments-based Web services.
DESCRIPTION_WSI_SSBP=WS-I Basic Profile 1.1 and Simple SOAP Binding Profile 1.0\n\
Basic profile and requirements related to the serialization of an envelope and its representation in a SOAP message.
