###############################################################################
# Copyright (c) 2001, 2007 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
###############################################################################
#This properties file hold all the externalised strings for eTools WAR Validation project
# Validation project
#
# Messages should be according to the format at:
#     http://hany.austin.ibm.com/messages/index.html
#
# Briefly:
#     MESSAGE_ID=<ComponentPrefix><MessageNumber><TypeCode>: <MessageText>
#
# The prefix for this component is:
#     CHKJ (IBM WebSphere Validation)
#
# Note the ": " that appears between the type code and the message text.
#
# :Begin: WebSphere Quality Validation Information :Begin:
#COMPONENTPREFIX CHKJ
#COMPONENTNAMEFOR CHKJ IBM WebSphere Validation
#CMVCPATHNAME ncf/src/java/com/ibm/websphere/validation/warvalidation.properties
# :End: WebSphere Quality Validation Information :End:
#

# 2-July-2001:
#  This file has been tested using the ProcessMsgFile tool, written by
#  Hany Salem and owned by Dennis Hebert.  Any future changes should
#  also be verified using this tool.  Please contact Dennis
#  (hebert@us.ibm.com or T/L 543-2520) for more information.
#

# --------------------------------
ERROR_WAR_VALIDATION_FAILED=CHKJ3000E: WAR Validation Failed: {0}
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_DUPLICATE_ROLES=CHKJ1002E: Duplicate security role named {0}.
MESSAGE_WAR_VALIDATION_MISSING_JSP=CHKJ3001E: The JSP file, {0}, for the servlet \"{1}\" is missing.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_SMALL_ICON=CHKJ3002E: The <small-icon> file, {0}, is missing.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_LARGE_ICON=CHKJ3003E: The <large-icon> file, {0}, is missing.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_BROKEN_SERVLET_MAPPING=CHKJ3004W: The servlet mapping \"{0}\" refers to a servlet that is not defined.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_NO_WELCOME_FILE=CHKJ3005E: Empty welcome file list entry.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_MISSING_WELCOME_FILE=CHKJ3006E: Welcome file {0} is missing.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_MISSING_TLD=CHKJ3007E: The Tag Library Descriptor File, {0}, is missing.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_INVALID_WAR_FILE=CHKJ3008E: Missing or invalid WAR file.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_BROKEN_FILTER_MAPPING=CHKJ3009E: The filter mapping \"{0}\" refers to a filter that is not defined.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_WELCOME_FILE=CHKJ3010W: Welcome Files cannot begin or end with a /.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_PARSE_LINECOL=CHKJ1009E: Parsing Error: {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_PARSE_LINE=CHKJ1010E: Deployment Descriptor Parsing error.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_PARSE_NOINFO=CHKJ1011E: Deployment Descriptor Parsing error.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
WAR_DD_CANNOT_OPEN_DD=CHKJ1012E: Cannot open the deployment descriptor. Validation cannot complete.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_URL=CHKJ3013E: The URL Mapping \"{0}\" is invalid.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_SEC_ROLE=CHKJ3014E: Invalid Security role-link: {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_HTTP_CMD=CHKJ3015E: Invalid HTTP method: {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_TRANSPORT=CHKJ3016E: Invalid Transport Gurarantee.  Valid values are \"NONE\", \"INTEGRAL\", or \"CONFIDENTIAL\".

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_JSPFILE_REF=CHKJ3018E: The jsp-file \"{0}\" referenced by servlet {1} must be a full absolute path.


# --------------------------------
ERROR_EAR_INVALID_CONTEXT_ROOT=CHKJ3017E: Web Project: {0} is mapped to an invalid Context root: {1} in EAR Project: {2}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_ERROR_PAGE=IWAE0001E CHKJ3019E: The Location of the Error Page Must Begin with a /.
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_INVALID_SEC_ROLE_NAME=CHKJ3020E: Invalid Security role-name: {0}.
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_INVALID_AUTH_METHOD=CHKJ3021E: Invalid auth method.  Valid values are: \"BASIC\", \"DIGEST\", \"FORM\", or \"CLIENT-CERT\".
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_IGNORE_FORM_LOGIN=CHKJ3022E:  Authentication method is {0}.  The form-login-config values will be ignored unless using FORM authentication method.
#EXPLANATION None.
#USERACTION None.

MESSAGE_WAR_VALIDATION_RES_AUTH_REQUIRED_22=CHKJ3023E:  Resource ref {0} must contain res-auth of "SERVLET" or "CONTAINER".
MESSAGE_WAR_VALIDATION_RES_AUTH_REQUIRED_23=CHKJ3024E:  Resource ref {0} must contain res-auth of "Application" or "Container".
MESSAGE_WAR_VALIDATION_RES_AUTH_INVALID_22=CHKJ3025E:  \"Application\" is not a valid value for.res-auth in a 2.2 level deployment descriptor.  Use \"SERVLET\" instead.
MESSAGE_WAR_VALIDATION_RES_AUTH_INVALID_23=CHKJ3026E:  \"SERVLET\" is not a valid value for.res-auth in a 2.2 level deployment descriptor.  Use \"Application\" instead.

MESSAGE_WAR_VALIDATION_INVALID_EXCEPTION_TYPE=CHKJ3027E:  Invalid Exception Type {0}.  The exception type must contain a fully qualified class name of a Java exception type.
#EXPLANATION None.
#USERACTION None.



# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_MAPPING=CHKJ4010W: Duplicate URL mapping {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_SERVLET=CHKJ4011W: Duplicate Servlet Entry {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_SESSION_TIMEOUT=CHKJ4012W: Session Timeout is not valid.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_ENTRY=CHKJ4013W: Duplicate Entry {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_EMPTY_ENTRY=CHKJ4014W: Empty Entry {0}.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_FILTER=CHKJ4015W: Duplicate Filter Entry {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_DUPLICATE_EJB_REF=CHKJ4016W: Duplicate ejb-ref element named {0}.
#EXPLANATION None.
#USERACTION None.

# This was missing.  It's defined in constants...
ERROR_EAR_UNCONTAINED_MODULE_FILE_EXCEPTION=CHKJ4017W: ERROR EAR UNCONTAINED MODULE FILE EXCEPTION

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_ERROR_CODE=IWAE0036E CHKJ4018W: Unknown Error Code: {0}.  error-code must contain a valid HTTP status code.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_RES_SHARING_SCOPE=CHKJ4019W: Invalid res-sharing-scope; valid values are \"Shareable\" or \"Unshareable\".
#USERACTION None.

MESSAGE_WAR_VALIDATION_INVALID_ENV_ENTRY=CHKJ4020W: Invalid Environment Entry Type. Valid values are \"java.lang.TYPE\", where TYPE is one of the following: Boolean, Byte, Character, String, Short, Integer, Long, Float, or Double."
#USERACTION None.

MESSAGE_WAR_VALIDATION_MISSING_WLP_PROJECT=CHKJ4021W: Missing Web Library Project ({0}).  Check the properties of this project to fix this problem.
MESSAGE_WAR_VALIDATION_CONFLICTING_WLP_PROJECT=CHKJ4022W: The Web Library Project JAR ({0}) conflicts with an actual JAR in the WEB-INF/lib directory.
MSG_SERVER_TARGET_MISMATCH=CHKJ4023W: The target server of the Web Library Project ({1}) does not match that of this Web Project ({0}).  Run validation on the Web Project if you think that is not the case.
MESSAGE_URL_PATTERN_END_WITH_CARRAIGE_RETURN=The URL pattern string "{0}" ends with a invalid carraige return for servlet {1}

# --------------------------------
MESSAGE_WAR_VALIDATION_INVALID_EJB_REF_TYPE=CHKJ4023W: ejb-ref-type must be 'Entity' or 'Session'.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_MISSING_EJB_ROLE=CHKJ2827W: ''security-role-ref'' element {0} defines the ''role-link'' element but no ''security-role'' elements in the application descriptor.
#EXPLANATION None.
#USERACTION None.

of_Type_Security_Role_Name_6=of Type Security Role Name
Web_Archive_Validator_8=Web Archive Validator
of_Type_Role_Name_19=of Type Role Name
of_Type_Parameter_Name_25=of Type Parameter Name
of_Type_Parameter_Value_26=of Type Parameter Value
of_Type_Parameter_Name_32=of Type Parameter Name
of_Type_Parameter_Value_33=of Type Parameter Value
of_Type_Parameter_Name_39=of Type Parameter Name
of_Type_Parameter_Value_40=of Type Parameter Value
of_Type_ejb_ref_name_44=of Type ejb-ref-name
of_Type_Error_Location_47=of Type Error Location
of_Type_Error_Location_49=of Type Error Location
of_Type_Mime_Extension_54=of Type Mime Extension
of_Type_Mime_Type_55=of Type Mime Type
of_Type_Mime_Extension___56=of Type Mime Extension:
of_Type_Web_Resource_Collection_64=of Type Web Resource Collection
of_Type_Filter_Name_66=of Type Filter Name
Invalid_URL_70=Invalid URL
Invalid_URL_75=Invalid URL
of_Type_Servlet_Name_77=of Type Servlet Name
of_Type_Taglib_80=of Type Taglib
of_Type_TagLib___81=of Type TagLib:
of_Type_Web_Resource_Name_84=of Type Web Resource Name
of_Type_Welcome_File_Name__87=of Type Welcome File Name
of_Type_Env_Entry_Name___88=of Type Environment Entry Name
