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

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

# 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

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.
