###############################################################################
# Copyright (c) 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
###############################################################################

# Messages for the WSDLValidate text UI interface.

# Error messages
_ERROR_WRONG_ARGUMENTS     = Usage: WSDLValidate [-wsdl11v namespace classname] [-extv namespace classname] [-Dname=value] filename\n\
\  -wsdl11v\tRegister the WSDL 1.1 validator specified by classname\n\
\t\tfor namespace.\n\
\  -extv\t\tRegister the WSDL extension validator specified by\n\
\t\tclassname for namespace.\n\
\  -verbose, -v\tPrint out verbose information.\n\
\  -logger\tSpecify an alternate logger that implements\n\
\t\torg.eclipse.wst.wsdl.validation.internal.logging.ILogger\n\
\  -D\t\tSpecify a property with name and value.  
_ERROR_LOADING_LOGGER      = Unable to load logger class {0}.
_ERROR_UNABLE_TO_READ_FILE = Unable to read file {0}.

# Validation messages
_UI_INFORMATION_DELIMITER  = ---------------------------------------
_UI_FILE_INVALID           = {0} - Not valid
_UI_FILE_VALID             = {0} - Valid
_UI_ERROR_MARKER           = ERROR
_UI_WARNING_MARKER         = WARNING
_UI_VALIDATION_SUMMARY     = {0} files validated. {1} files reported errors.