###############################################################################
# Copyright (c) 2007, 2008 WSO2 Inc. 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:
# WSO2 Inc. - initial API and implementation
# yyyymmdd bug      Email and other contact information
# -------- -------- -----------------------------------------------------------
# 20070110   168762 sandakith@wso2.com - Lahiru Sandakith, Initial code to introduce the Axis2 
#										 runtime to the framework for 168762
# 20070511   186440 sandakith@wso2.com - Lahiru Sandakith fix 186440
# 20070517   187307 sandakith@wso2.com - Lahiru Sandakith
# 20070518   187311 sandakith@wso2.com - Lahiru Sandakith, Fixing test resource addition
# 20070601   190505 pmoogk@ca.ibm.com - Peter Moogk
# 20080116   209411 sandakith@wso2.com - Lahiru Sandakith, Introduced for the Fix 209411
# 20080130   216997 katep@wso2.com - Kate Price
###############################################################################


LABEL_SERVICE_NAME_CAPTION=Service Name
LABEL_GENERATE_TESTCASE_CAPTION=Generate a JUnit test case to test the service
LABEL_DATABINDING_CAPTION=Databinding
LABEL_PORTNAME=Port Name
LABEL_GENERATE_ALL=Generate all types for all elements referred to by schemas
LABEL_PACKEGE_NAME=Custom package name
LABEL_NAMESPACE=Namespace
LABEL_PACKAGE=Package
LABEL_CLIENT_SIDE=Client mode
LABEL_SYNC_AND_ASYNC=Generate a client which supports both synchronous and asynchronous invocation
LABEL_SYNC=Generate a synchronous client
LABEL_ASYNC=Generate an asynchronous client

PAGE_TITLE_WS_AXIS2_PROXY=Axis2 Client Web Service Configuration 
PAGE_DESC_WS_AXIS2_PROXY=Select the appropriate code generation settings 

ERROR_INVALID_FILE_READ_WRITEL=Exception occurred while reading or writing files {0}
ERROR_INVALID_WSDL_FILE_READ_WRITEL=Exception occurred while reading or writing WSDL {0}
ERROR_CODEGEN_EXCEPTION=Exception occurred during code generation for WSDL {0}
ERROR_JUNIT_JAR_NOT_FOUND=Exception occurred while copying junit.jar
ERROR_WSDL_PING_TIME_OUT=Could not retrieve the WSDL. Timeout occurred.
