###############################################################################
# Copyright (c) 2003, 2004 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 J2EE 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/erefvalidation.properties
# :End: WebSphere Quality Validation Information :End:
#
# 14-October-2001:
#

# --------------------------------
ERROR_EAR_MISSING_EREFNAME=CHKJ3009E: In module {1}, ''ejb-ref-name'' element in  ejb-ref: {0} is invalid.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_INVALID_EREFTYPE=CHKJ3010E: In module {1}, ''ejb-ref-type'' element in ejb-ref: {0} is invalid.
#EXPLANATION None.
#USERACTION None.

ERROR_EAR_MISSING_EREFTYPE=CHKJ3014E: In module {1}, ''ejb-ref-type'' element in ejb-ref: {0} is missing.


# --------------------------------
ERROR_EAR_MISSING_EREFHOME=CHKJ3011E: In module {1}, Home interface is missing from ejb-ref: {0} element.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_MISSING_EREFREMOTE=CHKJ3012E: In module {1}, Remote interface is missing from ejb-ref: {0} element.
#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.

# --------------------------------
ERROR_EAR_DUPLICATE_RESREF=CHKJ3013E: Duplicate ''resource-ref'' element named {0}.
#EXPLANATION None.
#USERACTION None.

# new string added for version 5 WSAD
UNRESOLVED_EJB_REF_WARN_=IWAE0034W EJB link element {0} is unresolvable in module {1} and EAR {2}.


