###############################################################################
# Copyright (c) 2009 by SAP AG, Walldorf. 
# 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:
#     SAP AG - initial API and implementation
###############################################################################
BottomUpProviderGenerator_FailedtoAnnotate=Failed to annotate class
BottomUpProviderGenerator_FailedToCollectMethods=Failed to collect supported methods
BottomUpProviderGenerator_MethodNotSupported=Method {0} is not in the supported. Web Service annotations could not be added to endpoint
BottomUpProviderGenerator_ProjectNotAccesible=The project containing the IType provided should be accessible
Ejb3TopDownProviderGenerator_InconsistentMetadata=Generated IProviderMetadata should contains IEndpoinMetada
Ejb3TopDownProviderGenerator_InternalErrorInterface=Internal error, could not find relation between InterfaceMapping: {0} and Configuration entities
Ejb3TopDownProviderGenerator_InternalErrorOperation=Internal error, could not find relation between OperationMapping: {0} and Configuration entities inside InterfaceData: {1}
Ejb3TopDownProviderGenerator_InvalidInterfaceMapping=Returned interface mappings could not be null or empty array
Ejb3TopDownProviderGenerator_MappingsEmpty=Returned opperation mappings for interface mapping {0} could not be null or empty array
ProxyWorkaround_UnableToDeleteProxy=Unable to delete original proxy source file: {0}
ProxyWorkaround_UnableToRenameProxy=Unable to rename patched proxy source file to its original name: {0}

Wsdl2JavaGenerator_ErrorDuringGeneration=Error during WSDL to Java generation 
Wsdl2JavaGenerator_IncorrectURL=Incorrect WSDL URL syntax
Wsdl2JavaGenerator_PathInappropriate=Path of the file {0} isn't appropriate to build an URL
Wsdl2JavaGenerator_WSDLDownloadException=Exception ocured during WSDL download
WsValidation_SeiDoesNotExists = The specified service endpoint interface {0} does not exists or not annotated correctly
WsValidation_WsdlDoesNotExists = The specified WSDL is incorrect, URL parsing error: {0}
WsValidation_NameShouldNotBeUsedWithSei = Name attribute should not be used if SEI is referenced via endpointInterface attribute
WsValidation_WsAnnotationOnNonSessionBean_Error = @WebService annotation in EJB modules can be only used on session beans

SeiValidation_RedundantAttributes = @WebService annotation should not include attributes portName, serviceName, endpointInterface and wsdlLocation when used on service endpoint interface 

WebMethodValidation_NameExists	= Web method with name {0} already exists
WebMethodValidation_MethodShouldNotBeExcluded = Service endpoint interface methods cannot be excluded
WebMethodValidation_ExcludedHasOtherAttributes	= Excluded Web method should not contain attributes other than exclude attribute 

WebParamValidation_NameExists	= Web parameter with name {0} already exists
WebParamValidation_NameRedundant= Name attribute is not used if SOAPBinding.Style is RPC and partName is present
WebParamValidation_NameRequired = A name should be specified if the operation is document style, the parameter style is BARE, and the mode is OUT or INOUT