###############################################################################
# Copyright (c) 2001, 2008 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
# -------- -------- -----------------------------------------------------------
# 20070418   177005 pmoogk@ca.ibm.com - Peter Moogk
# 20080326   171705 trungha@ca.ibm.com - Trung
# 20080326   149060 pmoogk@ca.ibm.com - Peter Moogk
# 20080325   223912 ericdp@ca.ibm.com - Eric D. Peters, Adding PII/MRI to partially address 171705
# 20080328   224563 ericdp@ca.ibm.com - Eric D. Peters, Text incorrect generating web services & clients
###############################################################################

#
# Messages for ResouceUtils
#
MSG_ERROR_PATH_NOT_ABSOLUTE=IWAB0003E Path {0} is not absolute for creating a file.
MSG_ERROR_PATH_EMPTY=IWAB0004E Path {0} is empty while creating a file.
MSG_ERROR_PATH_NOT_FOLDER=IWAB0005E Path {0} is not a folder for creating a file.
MSG_ERROR_FOLDER_CREATION_DISABLED=IWAB0007E Folder creation has been disabled for parent folder {0}. Do you want to create folder {1}?
MSG_ERROR_RESOURCE_NOT_FOLDER=IWAB0008E Resource {0} is not a folder.
MSG_WARN_FILE_OVERWRITE_DISABLED=IWAB0009W Cannot overwrite file {1} in folder {0}.
MSG_ERROR_FILE_CHECKOUT_DISABLED=IWAB0010E Cannot checkout file {1} in folder {0}.
MSG_ERROR_RESOURCE_NOT_FILE=IWAB0011E The following path is not a resource: {0}.
MSG_ERROR_FOLDER_HAS_CHILDREN=IWAB0012E Cannot create folder: {0} that already has children.
MSG_ERROR_IO=IWAB0006E An input/output error occurred while processing the resource "{0}".
MSG_ERROR_FILE_OVERWRITE_DISABLED=IWAB0164E Cannot overwrite the file "{1}" relative to the path "{0}" because automatic file overwriting has not been enabled. Do you want to enable it for this file?
MSG_ERROR_UNEXPECTED_ERROR=IWAB0014E Unexpected exception occurred.
MSG_ERROR_ANT_DATA_TRANSFORM=Exception transforming Ant property key {0} using transformation {1}.
MSG_ERROR_ANT_CALL_SETTER=Exception invoking setter method {0} for Ant property.
MSG_ERROR_ANT_CMD_FRAGMENT=Exception retrieving Ant command fragment from registry.
MSG_ERROR_ANT_SCENARIO_TYPE=Cannot determine scenario type.  Please ensure ScenarioType Ant property is set.
MSG_ERROR_ANT_REQUIRED_PROPERTY=Required property {0} was not set in the Ant property file.
MSG_ERROR_ANT_PROPERTY_WITH_INVALID_VALUE=Property {0} was set with an invalid value: {1}.
MSG_INFO_ANT__PROPERTY_DEFAULT=Property {0} was not set in the Ant property file.  A default value will be used.

LABEL_YES=Yes
LABEL_YES_TO_ALL=Yes to All
LABEL_CANCEL=Cancel



