###############################################################################
# Copyright (c) 2009 Shane Clarke 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:
# Shane Clarke - initial API and implementation
###############################################################################

#properties file for JAXWS Core
pluginName=JAX-WS Tools Core (Incubation)
pluginProvider=Eclipse Web Tools Platform

WEBSERVICE_CLASS_DEFAULT_PUBLIC_CONSTRUCTOR_RULE=Classes annotated with @WebService must have a default public constructor
WEBSERVICE_CLASS_PUBLIC_ABSTRACT_FINAL_RULE=Classes annotated with @WebService must be an outer public class, must not be final, and must not be abstract
WEBSERVICE_CLASS_NO_FINALIZE_METHOD_RULE=Classes annotated with @WebService must not define a finalize() method
WEBMETHOD_ONLY_SUPPORTED_ON_CLASSES_WITH_WEBSERVICE_ANNNOTATION=@WebMethod annotations only supported in classes with the @WebService annotation
WEBSERVICE_SEI_NO_WEBMETHOS_RULE=No @WebMethod annotations allowed in an implementation class that contains an endpointInterface attribute in it's @WebService annotation
WEBSERVICE_ON_SEI_ATTRIBUTES_RULE=Certain @WebService annotation attributes are restricted when used on SEI's
WEBSERVICE_WEBSERVICE_PROVIDER_COEXIST_RULE=@WebService and @WebServiceProvider annotations cannot coexist
ONEWAY_NO_RETURN_VALUE=@Oneway methods must not return a value
WEBMETHOD_ONLY_PUBLIC_METHODS=Methods annotated with @WebMethod must be public, and must not be declared static or final
SOAPBINDING_METHOD_STYLE_DOCUMENT_RULE=@SOAPBinding annotation may be placed on a method if and only if the SOAPBinding.style is DOCUMENT
WEBMETHOD_EXCLUDE_SPECIFIED_RULE=@WebMethod exclude attribute is not allowed in SEI's. If specified in an implementation class, then other attributes in the @WebMethod annotation are not allowed
SOAPBINDING_NO_PARAMETERSTYLE_WHEN_ENCODED_RULE=A method that has a SOAPBinding.use of ENCODED cannot have a SOAPBinding.parameterStyle present
SOAPBINDING_DOCUMENT_BARE_RULES=Document Bare operations are subject to a number of restrictions. Combinations of @Oneway. Not @Oneway. Void Return. Non-Void Return. @WebParam Modes IN, OUT, INOUT. Header parameters
HOLDER_TYPES_PARAMETERS_RULE=Parameters that conform to the definition of Holder Types must be annotated with @WebParam.Mode.OUT or @WebParam.Mode.INOUT
UNIQUE_NAMES_RULE=Checks @ResponseWrapper, @RequestWrapper and @WebFault Beans for unique className and faultBean attributes
HANDLERCHAIN_RULES=@HandlerChain and @SOAPMessageHandlers annotations cannot coexist. @HandlerChain allowed on TYPE only
WEBSERVICEREFS_RULES=Each @WebServiceRef annotation inside a @WebServiceRefs must contain name and type elements with non-default values
JAXWS_CATEGORY_NAME=JAX-WS
