###############################################################################
# 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   127016 andyzhai@ca.ibm.com - Andy Zhai
# 20060424   120137 kathy@ca.ibm.com - Kathy Chan
###############################################################################

#
# Messages in plugin.xml.
#

MSG_ERROR_DEFAULT_BEAN=IWAB0491E Error encountered while setting up default values for Java bean
MSG_ERROR_WSDL_NO_DEFINITION=IWAB0495E WSDL file at {0} has no definition element
MSG_ERROR_WSDL_NO_PORT=IWAB0496E WSDL file at {0} has no port element
MSG_ERROR_WRITE_WSDL=IWAB0497E Error in writing WSDL file {0}

#
# Messages for CopyClientWSDLTask
#
MSG_ERROR_IMPORT_WSDL=IWAB0531E Error in resolving WSDL file {0}, import WSDL file must have absolute URL or relative URL in the same directory


#
#DefaultsForClientJavaWSDLCommand
#
MSG_ERROR_WSDL_LOCATION_NOT_SET=IWAB0501E WSDL location not set.

#
#AddJarsToProjectBuildPathTask
#
MSG_WARN_NO_JAVA_NATURE=IWAB0502W The project is not a Java project.
MSG_ERROR_BAD_BUILDPATH=IWAB0503E Unable to update Java build path. Please check your system environment.

#
#CopyAxisJarCommand
#
PROGRESS_INFO_COPY_AXIS_CFG=IWAB0505I Copying Axis jar files to web project.
MSG_ERROR_FILECOPY=IWAB0506E Error when copying Axis jar files to web project

#
#RefreshProjectTask
#
MSG_ERROR_REFRESH_PROJECT=IWAB0508E Unable to refresh project.

#
#WebServiceAxisProxyPage
#
TOOLTIP_PWJB_PAGE=Page
TOOLTIP_PWJB_TEXT_FOLDER=Folder for proxy to be generated for the selected binding.
TOOLTIP_PWJB_CHECKBOX_GENPROXY=Check to enable/disable the generation of a proxy.

PAGE_TITLE_WS_AXIS_PROXY=Web Service Proxy Page
PAGE_DESC_WS_AXIS_PROXY=Select generate proxy if you want to generate proxy for your service.
CHECKBOX_GENPROXY=Generate proxy
LABEL_FOLDER_NAME=Output folder

#
# Messages for WebSerivceAxisMappingsPage
#
PAGE_TITLE_WS_BEAN2XML=Web Service Package to Namespace Mapping
PAGE_TITLE_WS_XML2PROXY=Web Service Client Namespace to Package Mapping
PAGE_DESC_P2N_MAPPINGS=Define custom mapping for package to namespace.


LABEL_MAPPING_PAIRS=Mapping pairs
TABLE_COLUMN_LABEL_PACKAGE=package
TABLE_COLUMN_LABEL_NAMESPACE=namespace
LABEL_EXPLORE_MAPPINGS_XML2BEAN=Define custom mapping for namespace to package.
TOOLTIP_N2P_SHOW_MAPPINGS=Define namespace to package mapping for customization.

# Messages for Axis Emitter Preference Page
TOOLTIP_PPAE_PAGE=Set preferences that control Axis Emitter.
TOOLTIP_PPAE_CHECKBOX_ALL_WANTED=By default, code is generated only for referenced elements. \nCall bGenerateAll(true) and WSDL2Java will generate code \nfor all elements in the scope regardless of whether they are referenced. \nScope means: by default, all WSDL files; if generateImports(false),\nthen only the immediate WSDL file.
TOOLTIP_PPAE_CHECKBOX_HELPER_WANTED=Emits separate Helper classes for meta data.
TOOLTIP_PPAE_CHECKBOX_WRAP_ARRAYS=Prefers building beans to straight arrays for wrapped XML array types.
TOOLTIP_PPAE_CHECKBOX_USE_INHERITED_METHODS=If this option is selected, the Java2WSDL parser will look into extended classes to determine the list of methods to export into the WSDL file.
TOOLTIP_PPAE_CHECKBOX_VALIDATE_AGAINST_JAXRPC=If selected, the tools will examine the Java service class and its value types to determine if it satisfies important requirements of the JAX-RPC specification.    
TOOLTIP_PPAE_COMBO_DEPLOY_SCOPE=Add scope to deploy.wsdd.
TOOLTIP_PPAE_FIELD_TIME_OUT=Timeout in seconds (default is 45, specify -1 to disable).
TOOLTIP_PPAE_GROUP_WSDL2JAVA=Set preferences for wsdl2java.
TOOLTIP_PPAE_GROUP_JAVA2WSDL=Set preferences for java2wsdl.
BUTTON_ALL_WANTED=&Generate code for all elements, even unreferenced ones
BUTTON_HELPER_WANTED=Emits separate &helper classes for meta data
BUTTON_WRAP_ARRAYS=Prefers building beans to straight arrays for &wrapped XML array types
BUTTON_USE_INHERITED_METHODS=Look for allowed &methods in inherited class
BUTTON_VALIDATE_AGAINST_JAXRPC=Analyze the service class for compliance to JAX-RPC before generating code
LABEL_DEPLOY_SCOPE=Add &scope to deploy.wsdd:
LABEL_TIME_OUT=&Timeout in seconds:
GROUP_WSDL2JAVA_NAME=Wsdl2Java
GROUP_JAVA2WSDL_NAME=Java2Wsdl
DEPLOY_SCOPE_APPLICATION=Application
DEPLOY_SCOPE_REQUEST=Request
DEPLOY_SCOPE_SESSION=Session
MSG_ERROR_INVALID_TIME_OUT=Invalid timeout! Timeout should be positive integer or -1 to disable.
MSG_USE_JVM_ARGUMENT_FOR_TIME_OUT=Using timeout value (in milliseconds) from JVM arguments AxisWsdl2JavaTimeout


