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

MSG_ERROR_SERVER=IWAB0213E Error in starting server.

ANY_FILTER_NAME=All files
ANY_FILTER_DESC=This is a kind of Filter that accepts all objects.

ERROR_SELECTION_TRANSFORM=Specified selection does not match a resource.

MSG_JAXRPC11_NOT_COMPLIANT=The service class "{0}" does not comply to one or more requirements of the JAX-RPC 1.1 specification, and may not deploy or function correctly.
MSG_JAXRPC11_UNRESOLVED_CLASS=The class "{0}" cannot be loaded via project "{1}". Check that the project contains the class, or that the class is loadable according to the Java Build Path of the project.
MSG_JAXRPC11_UNRESOLVED_TYPE=A data type, "{0}", could not be resolved while analyzing the service class. Check your project classpath.
MSG_JAXRPC11_RULE_0001=The service class "{0}" does not have a public default constructor. Chapter 10.1 of the JAX-RPC 1.1 specification requires a service class to have a public default constructor, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the service class to handle an incoming request message. 
MSG_JAXRPC11_RULE_0002=The value type "{0}" used via the service class "{1}" does not have a public default constructor. Chapter 5.4 of the JAX-RPC 1.1 specification requires a value type to have a public default constructor, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the value type during deserialization.
MSG_JAXRPC11_RULE_0003=The method "{0}" on the service class "{1}" is overloaded. Overloaded methods are allowed by chapter 5.5.5 of the JAX-RPC 1.1 specification, however, some JAX-RPC 1.1 compliant tools may not allow overloaded methods or may generate WSDL with overloaded operations as contrary to rule R2304 of the WS-I Basic Profile.
MSG_JAXRPC11_RULE_0004=The service specific exception class "{0}" does not have a public constructor with parameters corresponding in number and type to the getter methods on the class. Chapter 5.5.5 of the JAX-RPC 1.1 specification requires a service specific exception to have a public constructor with the same number of parameters as there are getter methods, and of matching data types, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the exception during deserialization of a fault message.
MSG_JAXRPC11_RULE_0005=The method "{0}" on the service class "{1}" uses a data type, "{2}", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.
MSG_JAXRPC11_RULE_0006=The field or property "{0}" on the value type "{1}" used via the service class "{2}" has a data type, "{3}", that is not supported by the JAX-RPC 1.1 specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.
MSG_JAXRPC11_RULE_0007=The primitive type "{0}" is not supported by the JAX-RPC 1.1 specification. As stated in chapter 5.1.1 of the specification, the supported primitive types are "boolean", "byte", "short", "int", "long", "float" and "double".
MSG_JAXRPC11_RULE_0008=The wrapper type "{0}" is not supported by the JAX-RPC 1.1 specification. As stated in chapter 5.1.1 of the specification, the supported wrapper types are those corresponding to "boolean", "byte", "short", "int", "long", "float" and "double".
MSG_JAXRPC11_RULE_0009=The Java type "{0}" is not supported by the JAX-RPC 1.1 specification. As stated in chapter 5.1.3 of the specification, the supported standard types are "java.lang.String", "java.util.Date", "java.util.Calendar", "java.math.BigInteger", "java.math.BigDecimal", "javax.xml.namespace.QName" and "java.net.URI".
MSG_JAXRPC11_RULE_0010=Support for collection and map classes such as "{0}" is not required by JAX-RPC 1.1. Due to their non-type safe nature, a JAX-RPC 1.1 compliant Web service engine may not handle collections, or may represent them in WSDL documents and SOAP messages in a manner that impairs interoperability. The use of arrays instead of collections is strongly recommended.
