###############################################################################
# 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
# yyyymmdd bug      Email and other contact information
# -------- -------- -----------------------------------------------------------
# 20060216   126989 pmoogk@ca.ibm.com - Peter Moogk
# 20060329	 128827 kathy@ca.ibm.com  - Kathy Chan
# 20060329	 124667 kathy@ca.ibm.com  - Kathy Chan
# 20060607   144978 kathy@ca.ibm.com - Kathy Chan
###############################################################################

#
# Messages in plugin.xml.
#

#
# Error messages used in this plugin
#
MSG_ERROR_PROJECT_URL=IWAB0514E Unable to get URL for project {0}
MSG_ERROR_CANNOT_NO_JAVA_BEAN=IWAB0015E A Java bean was not selected
MSG_ERROR_NO_PROJECT=IWAB0016E A project was not selected
MSG_ERROR_CANNOT_LOAD_JAVA_BEAN=IWAB0017E The Java bean, {0}, cannot be loaded from {1}
MSG_ERROR_JAVA_MOF_REFLECT_FAILED=IWAB0521E Failed to analyze the Java bean: {0}.
MSG_ERROR_READ_BEAN=IWAB0522E Error in reading methods from Java bean.
MSG_ERROR_UPDATE_AXIS_WSDD=IWAB0524E Error updating Axis deploy.wsdd file

#
#JavaToWSDLMethodCommand
#
MSG_ERROR_JAVA_TO_METHOD=IWAB0019E Error in getting method from Java bean.

#
#UpdateWEBXMLCommand
#
MSG_ERROR_UPDATE_WEB_XML=IWAB0020E Error in adding servlet in web.xml.

#
#UpdateAxisWSDDFileTask
#
MSG_PLUGIN_FILE_URL=Problem locating plugin file

#
#WebServiceWSDLAxisSelectionPage
#
PAGE_MSG_NO_FILE_SPECIFIED=No file specified.
PAGE_MSG_NO_METHOD_SELECTED=No methods selected.

#
#WebServiceSkeletonAxisConfigPage
#
TOOLTIP_PBSC_PAGE=
TOOLTIP_PBCF_TEXT_URI=The SOAP body namespace and unique identifier of the Web service.
TOOLTIP_PBCF_TEXT_WSDL_FOLDER=The folder of the WSDL file.
TOOLTIP_PBCF_TEXT_WSDL_FILE=The name of the WSDL file.
LABEL_URI=Web service URI:
LABEL_OUTPUT_FOLDER_NAME=WSDL folder:
LABEL_OUTPUT_FILE_NAME=WSDL file:

#
#WebServiceAxisBeanClassPage
#
PAGE_TITLE_WSBEAN_CLASS=Web Service Java Bean Selection
PAGE_DESC_WSBEAN_CLASS=Select a Java bean
LABEL_EXPLORE_MAPPINGS_BEAN2XML=Define custom mapping for package to namespace.
TOOLTIP_P2N_SHOW_MAPPINGS=Define package to namespace mapping for customization.

#
#WebServiceAxisBeanConfigPage
#
TOOLTIP_PBCF_PAGE=
TOOLTIP_PBME_TREE_METHODS=Java bean methods to include.
PAGE_TITLE_WSBEAN_CONFIG=Web Service Java Bean Identity
PAGE_DESC_WSBEAN_CONFIG=Configure the Java bean as a Web service.
LABEL_STYLE_USE=Style and use
STYLE_RPC_LITERAL=document/literal
STYLE_DOC_LITERAL=document/literal (wrapped)
STYLE_RPC_ENCODED=RPC/encoded

#
# AxisCheckCompilerLevelCommand
#
MSG_ERROR_COMPILER_LEVEL_NOT_COMPATIBLE=The workbench is running on Java VM version {0}, however, the compiler compliance level of \
the project "{1}" is set to Java version {2}.  \
Generation of a Web service from Java cannot proceed because the tools will be unable to process the class file compiled within the project.  \
To correct the problem, take one of the following actions: \
\n1. Open project properties, select Project Facets, and use Add/Remove Project Facet to change Java version to {0} or lower.\
\n2. Restart the workbench on a version {2} Java VM.

#
# ModifyWSDLEndpointAddressCommand
#
MSG_ERROR_MODIFY_ENDPOINT=Error in modifying the soap:address location URI for WSDL file {0}.

#
# SkeletonMergeCommand
#
MSG_ERROR_SKELETON_MERGE=Error in merging skeleton file {0}.

#
# Messages for ValidateWSIComplianceCommand
#
WSI_INCOMPLIANCE_RPC_ENCODED=RPC Encoded is selected

