###############################################################################
# Copyright (c) 2003, 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 string is the name of one of the validators.
# The name is displayed in the validation properties page
# and also in subtask messages (e.g. "Invoking Map Validator on <file name>")
#
#
# Version 1.6
#
EJB_VALIDATOR=EJB (1.x-2.x) Validator
validation_UI_=Validation

DEPLOY_TASK_UI_=EJB Deployment Message
EJB_VALIDATION_PROBLEMMARKER_NAME=EJB Validator Message
EJB_FACET_LABEL=EJB Module
EJB_FACET_DESCRIPTION=Enables the project to be deployed as an EJB module.
EJB_FACET_TEMPLATE=EJB Project

Bundle-Vendor.0 = Eclipse Web Tools Platform
Bundle-Name.0 = EJB component Plug-in
