###############################################################################
# Copyright (c) 2001, 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:  Im Modul {1} ist das Element ''ejb-ref-name'' in  ejb-ref: {0} ung\u00fcltig.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_INVALID_EREFTYPE=CHKJ3010E:  Im Modul {1} ist das Element ''ejb-ref-type'' in  ejb-ref: {0} ung\u00fcltig.
#EXPLANATION None.
#USERACTION None.

ERROR_EAR_MISSING_EREFTYPE=CHKJ3010E:  Im Modul {1} fehlt das Element ''ejb-ref-type'' in  ejb-ref: {0}.


# --------------------------------
ERROR_EAR_MISSING_EREFHOME=CHKJ3011E: Im Modul {1} fehlt die Home-Schnittstelle im ejb-ref-Element {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_MISSING_EREFREMOTE=CHKJ3012E: Im Modul {1} fehlt die Remote-Schnittstelle im ejb-ref-Element {0}.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_MISSING_EJB_ROLE=CHKJ2827W: Das Element ''security-role-ref'' {0} definiert das Element ''role-link'', aber keine ''security-role''-Elemente in der Anwendungsbeschreibung.
#EXPLANATION None.
#USERACTION None.

# --------------------------------
ERROR_EAR_DUPLICATE_RESREF=CHKJ3013E: Das Element ''resource-ref'' mit dem Namen {0} ist doppelt vorhanden.
#EXPLANATION None.
#USERACTION None.

# new string added for version 5 WSAD
UNRESOLVED_EJB_REF_WARN_=IWAE0034W Das EJB-Linkelement {0} kann in Modul {1} und EAR {2} nicht aufgel\u00f6st werden.

ERROR_EAR_DUPLICATE_SERVICEREF=CHKJ3015E: Das Element ''service-ref'' mit dem Namen {0} ist doppelt vorhanden.
ERROR_EAR_DUPLICATE_SECURITYROLEREF=CHKJ3016E: Das Element ''security role-ref'' mit dem Namen {0} ist doppelt vorhanden.
ERROR_EAR_DUPLICATE_EJBREF=CHKJ3017E: Das Element ''ejb-ref'' mit dem Namen {0} ist doppelt vorhanden.
ERROR_EAR_DUPLICATE_RESENVREF=CHKJ3018E: Das Element ''resource environment-ref'' mit dem Namen {0} ist doppelt vorhanden.
ERROR_EAR_DUPLICATE_MESSSAGEDESTINATIONREF=CHKJ3019E: Das Element ''message destination-ref'' mit dem Namen {0} ist doppelt vorhanden.




