###############################################################################
# Copyright (c) 2007 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 introduse 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    sandakith@wso2.com - Lahiru Sandakith, Introduced for the Fix 209411
###############################################################################


LABEL_SERVICE_NAME_CAPTION=Service Name
LABEL_GENERATE_TESTCASE_CAPTION=Generate test case to test the service
LABEL_DATABINDING_CAPTION=Databinding Name
LABEL_PORTNAME=Port Name
LABEL_GENERATE_ALL=Generate all types for all elements referred by schemas
LABEL_PACKEGE_NAME=Custom package name
LABEL_NAMESPACE=Namespace
LABEL_PACKAGE=Package
LABEL_CLIENT_SIDE=Client mode
LABEL_SYNC_AND_ASYNC=Generate both sync and async
LABEL_SYNC=Generate sync style only
LABEL_ASYNC=Generate async style only

PAGE_TITLE_WS_AXIS2_PROXY=Axis2 Client Web Service Configuration 
PAGE_DESC_WS_AXIS2_PROXY=Please select the appropriate Codegen 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 while code generation for WSDL {0}
ERROR_JUNIT_JAR_NOT_FOUND=Exception occurred while copying junit.jar
ERROR_WSDL_PING_TIME_OUT=Could not retriew the WSDL, Timeout occurred..
