###############################################################################
# Copyright (c) 2009, 2019 IBM Corporation and others.
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
# 'shortname' effects all foldernames too, plus some content, in distribution section
# should be same name as this property file (for future use). 
shortname=xmlsec


# These first three properties are mainly for component templates

#  'featurename' assumes group of three features
#  a) featurename.feature
#  b) featurename_sdk.feature
#  c) featurename_tests.feature

featurename=org.eclipse.wst.xml.security

#  'zipprefix' is prefixed to -[type]-${buildlabel},
#  where type is empty, 'sdk' or 'tests',
#  usually of the form [top-level project]-[project]-[component]
#  for example, wtp-incubator-xmlsecurity
zipprefix=wtp-incubator-xmlsecurity

#  'relengmapseng' must match the environment variable set in
#  commonComputedVariables, such as RELENGXMLSEC
relengmapsenv=RELENGXMLSEC

#  prereq is the basic prereq on top of platform, jdt, emf, gef
#  (only realistic options for right now are wst, jst). 
prereq.eclipse=true
prereq.emf=true
prereq.emfxsd=true
prereq.gef=true
prereq.wst=true

# These next properties are mainly for distribution template files

# longdescription appears on the download webpage
longdescription=The Zip files includes the features and plugins for the WTP Incubator XML Security Component.

# suffixes for base feature names
testsuffix=_tests.feature