###############################################################################
# Copyright (c) 2008 IONA Technologies PLC
# 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:
# IONA Technologies PLC - initial API and implementation
###############################################################################

#JDTUtils
TYPE_NAME_DIFFERENT_CASE_EXISTS=A Type with the same name but different case already exists
TYPE_WITH_NAME_ALREADY_EXISTS=A compilation unit named ''{0}'' already exists in package ''{1}''

WEBSERVICE_DEFAULT_PUBLIC_CONSTRUCTOR=Classes annotated with @WebService must have a default public constructor
WEBSERVICE_PUBLIC_ABSTRACT_FINAL=Classes annotated with @WebService must be an outer public class, must not be final, and must not be abstract
WEBSERVICE_OVERRIDE_FINALIZE=Classes annotated with @WebService must not define a finalize() method
WEBMETHOD_ONLY_SUPPORTED_ON_CLASSES_WITH_WEBSERVICE=@WebMethod is only supported on classes annotated with @WebService
WEBMETHOD_ONLY_ON_PUBLIC_METHODS=@WebMethod annotation is not allowed on non-public methods
WEBMETHOD_NO_FINAL_MODIFIER_ALLOWED=@WebMethod annotation is not allowed on final methods
WEBMETHOD_NO_STATIC_MODIFIER_ALLOWED=@WebMethod annotation is not allowed on static methods
WEBMETHOD_EXCLUDE_SPECIFIED_NO_OTHER_ATTRIBUTES_ALLOWED=@WebMethod exclude attribute is specified. No other attributes allowed
WEBMETHOD_EXCLUDE_NOT_ALLOWED_ON_SEI=@WebMethod annotations in SEI's are not allowed to specify the exclude attribute
WEBSERVICE_SERVICENAME_SEI=@WebService serviceName element is not allowed on SEI
WEBSERVICE_ENDPOINTINTERFACE_SEI=@WebService endpointInterface element is not allowed on SEI
WEBSERVICE_PORTNAME_SEI=@WebService portName element is not allowed on SEI
WEBSERVICE_ENPOINTINTERFACE_MUST_IMPLEMENT=Implementation class must implement the SEI method ''{0}''
WEBSERVICE_ENPOINTINTERFACE_REDUCED_VISIBILITY=Cannot reduce the visibility of the SEI method
WEBSERVICE_ENPOINTINTERFACE_INCOMPATIBLE_RETURN_TYPE=The return type is incompatible with {0}
WEBSERVICE_ENPOINTINTERFACE_NOT_INTERFACE=The endpointInterface ''{0}'' must be an Interface
WEBSERVICE_ENPOINTINTERFACE_NOT_FOUND=The endpointInterface ''{0}'' cannot be found
WEBSERVICE_ENPOINTINTERFACE_NOT_ANNOTATED=The endpointInterface ''{0}'' must be annotated with @javax.jws.WebService
WEBSERVICE_ENPOINTINTERFACE_NOT_PUBLIC=The endpointInterface ''{0}'' must be public
WEBSERVICE_ENPOINTINTERFACE_NOT_OUTER=The endpointInterface ''{0}'' must be an outer interface
WEBSERVICE_ENPOINTINTERFACE_NO_NAME_ATTRIBUTE=@WebService annotation contains an endpointInterface attribute. No name attribute allowed
WEBSERVICE_ENPOINTINTERFACE_NO_WEBMETHODS=@WebService annotation contains an endpointInterface attribute. No methods annotated with @WebMethod allowed in implementation class
WEBSERVICE_ENPOINTINTERFACE_NO_SOAPBINDING=@WebService annotation contains an endpointInterface attribute. @SOAPBinding not allowed in implementation class
WEBSERVICE_ENPOINTINTERFACE_NO_WEBRESULT=@WebService annotation contains an endpointInterface attribute. No methods annotated with @WebResult allowed in implementation class
WEBSERVICE_ENPOINTINTERFACE_NO_WEBPARAM=@WebService annotation contains an endpointInterface attribute. No parameters annotated with @WebParam allowed in implementation class
WEBSERVICE_ENPOINTINTERFACE_NO_ONEWAY=@WebService annotation contains an endpointInterface attribute. No methods annotated with @Oneway allowed in implementation class
WEBSERVICE_WEBSERVICEPROVIDER_COMBINATION=@WebService and @WebServiceProvider annotations cannot be combined
WEBSERVICE_DEFAULT_PACKAGE_TARGET_NAMESPACE=Classes or Interfaces in the default package that are annotated with @WebService must specify a targetNamespace attribute
ONEWAY_NO_RETURN_VALUE=@Oneway methods must not return a value
ONEWAY_NO_CHECKED_EXCEPTIONS=@Oneway methods must not declare any checked exceptions
ONEWAY_NO_HOLDER_PARAMETERS=@Oneway methods must not accept any javax.xml.ws.Holder<T> parameters. 
WEBPARAM_MODE_OUT_INOUT_HOLDER_TYPE=The @WebParam.Mode.OUT and @WebParam.Mode.INOUT modes may only be specified for javax.xml.ws.Holder<T> parameters
HOLDER_TYPE_MUST_BE_OUT_INOUT=javax.xml.ws.Holder<T> parameters must be @WebParam.Mode.OUT or @WebParam.Mode.INOUT
SOAPBINDING_NO_RPC_STYLE_ON_METHODS=RPC style @SOAPBinding annotations not supported on methods
SOAPBINDING_RPC_ENCODED_NOT_SUPPORTED=RPC Encoded SOAP Bindings not supported
SOAPBINDING_DOCUMENT_ENCODED_NOT_SUPPORTED=Document Encoded SOAP Bindings not supported
SOAPBINDING_NO_MIXED_BINDINGS=Mixed RPC and Document style operations not permitted in the same service
SOAPBINDING_RPC_NO_BARE_PARAMETER_STYLE=Use of RPC style requires use of WRAPPED parameter style
DOC_BARE_ONLY_ONE_NON_HEADER_IN_PARAMETER=Document literal bare methods may have only one non-header IN parameter
DOC_BARE_NON_VOID_RETURN_NO_INOUT_OUT_PARAMETER=Document literal bare methods that declare a non-void return value may not have any OUT or INOUT parameters
DOC_BARE_VOID_RETURN_ONE_IN_PARAMETER=Document literal bare methods that declare a void return value may have only one IN/INOUT parameter
DOC_BARE_VOID_RETURN_ONE_OUT_PARAMETER=Document literal bare methods that declare a void return value may have only one OUT/INOUT parameter
WEBPARAM_NAME_REQUIRED_WHEN_DOC_BARE_OUT_INOUT=The @WebParam name attribute is required when the operation is Document Bare and the mode is OUT or INOUT
OPERATION_NAMES_MUST_BE_UNIQUE_ERROR=Operation names must be unique : ''{0}''
WRAPPER_FAULT_BEAN_NAMES_MUST_BE_UNIQUE=Generated Request/Response and Fault bean classes must have unique names within a package and must not clash with other classes in that package : ''{0}''
DOC_BARE_METHODS_UNIQUE_XML_ELEMENTS=Document Literal Bare operations must have unique XML elements for the input and output messages across all operations on the Web Service : ''{0}''
LOCAL_NAME_ATTRIBUTES_MUST_BE_UNIQUE=The wrapper bean localName attributes must be unique : ''{0}''
INVALID_NAME_ATTRIBUTE=The name ''{0}'' contains invalid characters
WEBSERVICE_WSDL_LOCATION_UNABLE_TO_LOCATE=Unable to locate wsdl at wsdlLocation: ''{0}''
WEBSERVICE_WSDL_LOCATION_NO_PORT_NAME=No wsdl:port matching the portName ''{0}'' can be found in the WSDL ''{1}''
WEBSERVICE_WSDL_LOCATION_NO_SERVICE_NAME=No wsdl:service matching the serviceName ''{0}'' can be found in the WSDL ''{1}''
WEBSERVICE_WSDL_LOCATION_NO_OPERTATION_NAME=No @WebMethod matching the wsdl:operation ''{0}'' can be found
WEBSERVICE_WSDL_LOCATION_WSDL_OPERATION_OUTPUT_METHOD_ONEWAY=The Method ''{0}'' is annotated @Oneway but the wsdl:operation ''{0}'' specifies a wsdl:output element
WEBSERVICE_WSDL_LOCATION_SOAP_BINDING_STYLE=The wsdl ''{0}'' specifies a ''{1}'' SOAP binding style which does not match the ''{2}'' SOAP binding style of the web service implementation/SEI
PARAMETER_NAME_CLASH=Parameter names must be unique: ''{0}''
GENERATED_PARAMETER_NAME_CLASH=Parameter Name ''{0}'' will clash with a generated parameter name
HANDLER_CHAIN_SOAP_MESSAGE_HANDLERS=@HandlerChain and @SOAPMessageHandlers cannot be combined
HANDLER_CHAIN_ON_FIELD=The @HandlerChain annotation may only be specified on a TYPE. The annotation target includes FIELD for use by JAX-WS 2.0
HANDLER_CHAIN_ON_METHOD=The @HandlerChain annotation may only be specified on a TYPE. The annotation target includes METHOD for use by JAX-WS 2.0
WEBSERVICEREFS_NAME_REQUIRED=Each @WebServiceRef annotation inside a @WebServiceRefs must contain a name element with a non-default ("") value
WEBSERVICEREFS_TYPE_REQUIRED=Each @WebServiceRef annotation inside a @WebServiceRefs must contain a type element with a non-default (Object.class) value
WEBSERVICEPROVIDER_DEFAULT_PUBLIC_CONSTRUCTOR=Classes annotated with @WebServiceProvider must have a default public constructor
WEBSERVICEPROVIDER_IMPLEMENT_TYPED_PROVIDER_INTERFACE=A Provider based endpoint implementation must implement a typed javax.xml.ws.Provider interface. Provider implementations work with the following types of objects: javax.xml.transform.Source, javax.xml.soap.SOAPMessage and javax.activation.DataSource
WEBSERVICEPROVIDER_SOAPMESSAGE_SOAPBINDING=javax.xml.soap.SOAPMessage objects require the Provider implementation to use the SOAP Binding
WEBSERVICEPROVIDER_SOAPMESSAGE_MESSAGE_MODE=javax.xml.soap.SOAPMessage objects require the Provider implementation to specify a @javax.xml.ws.ServiceMode annotation with javax.xml.ws.Service.Mode.MESSAGE as the value 
WEBSERVICEPROVIDER_DATASOURCE_HTTPBINDING=javax.activation.DataSource derived objects require the Provider implementation to use the HTTP Binding
WEBSERVICEPROVIDER_DATASOURCE_MESSAGE_MODE=javax.activation.DataSource derived objects require the Provider implementation to specify a @javax.xml.ws.ServiceMode annotation with javax.xml.ws.Service.Mode.MESSAGE as the value