blob: b42f5713c3f51f715d2dc9af1d14a118d68e2a25 [file] [log] [blame]
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.wst.common.project.facet.core">
<annotation>
<appInfo>
<meta.schema plugin="org.eclipse.wst.common.project.facet.core" id="facets" name="Project Facets Extension Point"/>
</appInfo>
<documentation>
This is the main extension point in the faceted project framework. It is used for defining project facets. A project facet can be thought of as a unit of functionality that the user can add to the project when the functionality is needed.
</documentation>
</annotation>
<element name="extension">
<complexType>
<choice>
<element ref="project-facet"/>
<element ref="project-facet-version"/>
<element ref="category"/>
<element ref="preset"/>
<element ref="template"/>
<element ref="action"/>
<element ref="event-handler"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
A fully qualified identifier of the target extension point.
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
An optional identifier of the extension instance.
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
An optional name of the extension instance.
</documentation>
<appInfo>
<meta.attribute translatable="true"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="label" type="string">
<annotation>
<documentation>
The localizable name that is presented to the user.
</documentation>
</annotation>
</element>
<element name="description" type="string">
<annotation>
<documentation>
The description text.
</documentation>
</annotation>
</element>
<element name="and">
<annotation>
<documentation>
A facet constraint operator that performs a conjunction over the results of evaluation of two or more sub-expressions. This operator will return true if and only if all sub-expressions evaluate to true.
</documentation>
</annotation>
<complexType>
<choice minOccurs="2" maxOccurs="unbounded">
<element ref="and"/>
<element ref="or"/>
<element ref="requires"/>
<element ref="conflicts"/>
</choice>
</complexType>
</element>
<element name="or">
<annotation>
<documentation>
A facet constraint operator that performs a disjunction over the results of evaluation of two or more sub-expressions. This operator will return true if any of the sub-expressions evaluate to true.
</documentation>
</annotation>
<complexType>
<choice minOccurs="2" maxOccurs="unbounded">
<element ref="and"/>
<element ref="or"/>
<element ref="requires"/>
<element ref="conflicts"/>
</choice>
</complexType>
</element>
<element name="requires">
<annotation>
<documentation>
A facet constraint operator that is used to declare a dependency of one facet on another. This operator will return true if the dependency is satisfied.
</documentation>
</annotation>
<complexType>
<attribute name="facet" type="string" use="required">
<annotation>
<documentation>
The id of the facet.
</documentation>
</annotation>
</attribute>
<attribute name="version" type="string" use="required">
<annotation>
<documentation>
Specifies the match expression for the facet version. The expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive.
</documentation>
</annotation>
</attribute>
<attribute name="soft" type="boolean">
<annotation>
<documentation>
If set to true indicates that this is a soft dependency. A soft dependency will not prevent the facet from being installed if it is not met. The purpose of specifying a soft dependency is to control facet installation order. If facet A declares a soft dependency on facet B, facet A is guaranteed to be installed after B has been installed (assuming B is selected).
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="conflicts">
<annotation>
<documentation>
A facet constraint operator that is used to declare a conflict between this facet and another facet or this facet and a group of facets. This operator will return true if and only if the conflict is not present. Note that the group attribute should not be used together with the facet and version attributes.
</documentation>
</annotation>
<complexType>
<attribute name="group" type="string">
<annotation>
<documentation>
The id of the facet group that this facet conflicts with. Note that it is safe for the declaring facet to be a member of this group. Conflicts between the facet and itself are ignored. This attribute should not be used in conjunction with the facet and version attributes.
</documentation>
</annotation>
</attribute>
<attribute name="facet" type="string">
<annotation>
<documentation>
The id of the facet that this facet conflicts with. If the version attribute is specified, the conflict declaration will be limited to those versions covered by the version expression.
</documentation>
</annotation>
</attribute>
<attribute name="version" type="string">
<annotation>
<documentation>
Used in conjunction with the facet attribute to limit the versions covered by the conflict declaration. The version expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="constraint">
<annotation>
<documentation>
Specifies the constraint that has to be satisfied before this facet can be installed in a project. A constraint can be used to specify dependencies on other facets as well as conflicts.
</documentation>
</annotation>
<complexType>
<choice>
<element ref="and"/>
<element ref="or"/>
<element ref="requires"/>
<element ref="conflicts"/>
</choice>
</complexType>
</element>
<element name="group-member">
<annotation>
<documentation>
Makes this facet a member of the group specified in the id attribute. A facet can be a member of any number of groups. Groups are auto-created when referenced by this extension point. The facet groups are primarily used when specifying conflict constraints.
</documentation>
</annotation>
<complexType>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
The id of the facet group to add this facet to. Groups are auto-created when referenced by this extension point.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="project-facet">
<annotation>
<documentation>
Declares a project facet. A project facet can be thought of as a unit of functionality that the user can add to the project when the functionality is needed. Note that a facet need to have a least one version declared in order to be useful. See project-facet-version for more details.
</documentation>
</annotation>
<complexType>
<sequence>
<element ref="label"/>
<element ref="description" minOccurs="0" maxOccurs="1"/>
<element ref="version-comparator" minOccurs="0" maxOccurs="1"/>
<element name="category" type="string">
<annotation>
<documentation>
Project facet can optionally belong to a category. This specifies the category id.
</documentation>
</annotation>
</element>
</sequence>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
Project facet identifier.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="project-facet-version">
<annotation>
<documentation>
Declares a project facet version. Each facet needs to have at leas one version declared in order to be useful.
</documentation>
</annotation>
<complexType>
<sequence>
<element ref="constraint" minOccurs="0" maxOccurs="1"/>
<element ref="group-member" minOccurs="0" maxOccurs="unbounded"/>
<element ref="action" minOccurs="0" maxOccurs="unbounded"/>
<element ref="event-handler" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="facet" type="string" use="required">
<annotation>
<documentation>
The id of the project facet that this is a version of. The facet itself needs to be declared using the project-facet element.
</documentation>
</annotation>
</attribute>
<attribute name="version" type="string" use="required">
<annotation>
<documentation>
The version string. Has to be compatible with the version comparator specified for this facet or use the standard decimal version notation (i.e. 1.23.005) if the facet does not specify a custom version comparator.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="version-comparator">
<annotation>
<documentation>
Specifies the version comparator for this project facet. If no version comparator is specified the default comparator will be used. The default version comparator can handle versions that are written in standard decimal notation.
</documentation>
</annotation>
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
The version comparator class name. Has to implement java.util.Comparator&amp;lt;String&amp;gt; interface.
</documentation>
<appInfo>
<meta.attribute kind="java" basedOn="java.util.Comparator"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="category">
<annotation>
<documentation>
Declares a project facets category. Categories are groups of facets that the user will typically want to add or remove as a set.
</documentation>
</annotation>
<complexType>
<sequence>
<element ref="label"/>
<element ref="description" minOccurs="0" maxOccurs="1"/>
</sequence>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
The category id.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="preset">
<annotation>
<documentation>
Declares a preset. A preset represents a common configuration of facets and their versions that a user might want to utilize on several projects. Presets can be supplied via this extension point or created by the user.
</documentation>
</annotation>
<complexType>
<sequence>
<element ref="label"/>
<element ref="description" minOccurs="0" maxOccurs="1"/>
<element name="facet">
<annotation>
<documentation>
Specifies the facet that is part of this preset.
</documentation>
</annotation>
<complexType>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
The project facet id.
</documentation>
</annotation>
</attribute>
<attribute name="version" type="string" use="required">
<annotation>
<documentation>
The facet version.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
</sequence>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
The preset id.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="template">
<annotation>
<documentation>
Declares a template. A template is simply a combination of fixed facets and an optional preset. Templates are used as a guide when creation projects.
</documentation>
</annotation>
<complexType>
<sequence>
<element ref="label"/>
<element name="fixed">
<annotation>
<documentation>
Specifies a facet that should be fixed (made not deselectable) for the project.
</documentation>
</annotation>
<complexType>
<attribute name="facet" type="string" use="required">
<annotation>
<documentation>
The project facet id.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="preset">
<annotation>
<documentation>
Specifies which preset should be selected by default.
</documentation>
</annotation>
<complexType>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
The preset id.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
</sequence>
<attribute name="id" type="string" use="required">
<annotation>
<documentation>
The template id.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="action">
<annotation>
<documentation>
Provides implementation of an action, such as install or uninstall, that a user can take on a project facet. Any action that&apos;s not implemented will not be available to the user. The action element can be used standalone or embeded inside the project-facet-version element. If used inside the project-facet-version element, the facet and version attributes are implied and should not be specified.
</documentation>
</annotation>
<complexType>
<sequence>
<element ref="config-factory" minOccurs="0" maxOccurs="1"/>
<element ref="delegate"/>
<element ref="property" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="type" use="required">
<annotation>
<documentation>
Action type.
</documentation>
</annotation>
<simpleType>
<restriction base="string">
<enumeration value="install">
</enumeration>
<enumeration value="uninstall">
</enumeration>
<enumeration value="version-change">
</enumeration>
<enumeration value="runtime-changed">
</enumeration>
<enumeration value="INSTALL">
</enumeration>
<enumeration value="UNINSTALL">
</enumeration>
<enumeration value="VERSION_CHANGE">
</enumeration>
</restriction>
</simpleType>
</attribute>
<attribute name="facet" type="string">
<annotation>
<documentation>
The id of the project facet that this action applies to. This attribute should not be used when embeding the action element inside the project-facet-version element.
</documentation>
</annotation>
</attribute>
<attribute name="version" type="string">
<annotation>
<documentation>
The version of the project facet that this action applies to. Multiple versions can be specified using version expression syntax. The version expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive. This attribute should not be used when embeding the action element inside the project-facet-version element.
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
The action id. If not specified, a default id will be assigned using the &quot;[facet-id]#[version-expression]#[action-type]&quot; pattern.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="config-factory">
<annotation>
<documentation>
Specifies the factory that will construct a configuration object to be used for parameterizing the action delegate. A configuration object is not necessary if the delegate does not require parameterization.
</documentation>
</annotation>
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
The config factory class name. Has to implement org.eclipse.wst.common.project.facet.core.IActionConfigFactory interface.
</documentation>
<appInfo>
<meta.attribute kind="java" basedOn="org.eclipse.wst.common.project.facet.core.IActionConfigFactory"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="delegate">
<annotation>
<documentation>
Specifies the delegate that should be invoked when an action or an event happens.
</documentation>
</annotation>
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
The delegate class name. Has to implement org.eclipse.wst.common.project.facet.core.IDelegate interface.
</documentation>
<appInfo>
<meta.attribute kind="java" basedOn="org.eclipse.wst.common.project.facet.core.IDelegate"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="event-handler">
<annotation>
<documentation>
Adds an event handler for one of the events in the faceted project life cycle. The event-handler element can be used standalone or embeded inside the project-facet-version element. If used inside the project-facet-version element, the facet and version attributes are implied and should not be specified.
</documentation>
</annotation>
<complexType>
<sequence>
<element ref="delegate"/>
</sequence>
<attribute name="type" use="required">
<annotation>
<documentation>
The type of the event.
</documentation>
</annotation>
<simpleType>
<restriction base="string">
<enumeration value="PRE_INSTALL">
</enumeration>
<enumeration value="POST_INSTALL">
</enumeration>
<enumeration value="PRE_UNINSTALL">
</enumeration>
<enumeration value="POST_UNINSTALL">
</enumeration>
<enumeration value="PRE_VERSION_CHANGE">
</enumeration>
<enumeration value="POST_VERSION_CHANGE">
</enumeration>
<enumeration value="RUNTIME_CHANGED">
</enumeration>
</restriction>
</simpleType>
</attribute>
<attribute name="facet" type="string">
<annotation>
<documentation>
The id of the project facet that this event handler applies to. This attribute should not be used when embeding the event-handler element inside the project-facet-version element.
</documentation>
</annotation>
</attribute>
<attribute name="version" type="string">
<annotation>
<documentation>
The version of the project facet that this event handler applies to. Multiple versions can be specified using version expression syntax. The version expression should be of the form &quot;2.2,2.5,[3.0-5.3],(7.3&quot;, where the comas function as an OR. Brackets and parenthesis are used as part of the range notation. A bracket means inclusive while a parenthesis means exclusive. This attribute should not be used when embeding the event-handler element inside the project-facet-version element.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<element name="property">
<annotation>
<documentation>
Specifies an action property.
</documentation>
</annotation>
<complexType>
<attribute name="name" use="required">
<annotation>
<documentation>
The name of the property.
</documentation>
</annotation>
<simpleType>
<restriction base="string">
<enumeration value="from.versions">
</enumeration>
</restriction>
</simpleType>
</attribute>
<attribute name="value" type="string" use="required">
<annotation>
<documentation>
The value of the property.
</documentation>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appInfo>
<meta.section type="since"/>
</appInfo>
<documentation>
&lt;b&gt;This extension point is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.&lt;/b&gt;
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="examples"/>
</appInfo>
<documentation>
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="apiInfo"/>
</appInfo>
<documentation>
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="implementation"/>
</appInfo>
<documentation>
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="copyright"/>
</appInfo>
<documentation>
Copyright (c) 2005, 2006 BEA Systems, Inc. and others.&lt;br&gt;
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 &lt;a
href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
</documentation>
</annotation>
</schema>