# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

LBL_WebServices=Web Services
LBL_ServiceReferences=Web Service References
MSG_MissingServer=The target server has not been set or has been removed.\n\nPlease, fix the server problem first.
TXT_operationDesc ={0} {1}({2});
ERR_missingLocalWsdl=ERROR: missing local copy of WSDL file
MSG_RefreshClient=<html>This action will refresh the client node and may regenerate Java classes from WSDL.<br>User code that use these classes may need to be adjusted.</html>

TXT_CannotGenerateClient=JAX-WS java artifacts can not be created by JAXWS:wsimport utility.\nReason: {0}\n\n\
You may be able to fix the problem in WSDL Customization dialog\n\
(Edit Web Service Attributes action)\n\
or by manually editing the local wsdl or schema files, using the JAXB customization\n\
(local wsdl and schema files are located under project_home/src/wsdl directory).\n\n\
After you fix the problem you need to refresh client from the Web Service Reference node.
TXT_CannotGenerateService=JAX-WS Java artifacts can not be created by JAXWS:wsimport utility.\nReason: {0}\n\n\
You may be able to fix the problem in WSDL Customization dialog\n\
(Edit Web Service Attributes action)\n\
or by manually editing the local wsdl or schema files, using the JAXB customization\n\
(local wsdl and schema files are located under project_home/src/wsdl directory).\n\n\
After you fix the problem you need to refresh service from the Web Service node.

TTL_MessageHandlerPanel=Configure Message Handlers
MSG_ConfigureHandler=Configuring Message Handlers...
MSG_HANDLER_FILE_NOT_FOUND=Unable to find the handler file \"{0}\". To avoid runtime errors, please remove the HandlerChain annotation from the web service implementation file.

