blob: b1964248a6d00ae205761f467ef3e0d0a26ccb45 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:plan="http://www.eclipse.org/virgo/schema/plan"
targetNamespace="http://www.eclipse.org/virgo/schema/plan"
elementFormDefault="qualified">
<!-- Types -->
<complexType name="nameValueType">
<attribute name="name" type="string" use="required" >
<annotation>
<documentation><![CDATA[The name of the attribute/property.]]></documentation>
</annotation>
</attribute>
<attribute name="value" type="string" use="required" >
<annotation>
<documentation><![CDATA[The value of the attribute/property.]]></documentation>
</annotation>
</attribute>
</complexType>
<complexType name="attributesType">
<sequence minOccurs="1" maxOccurs="unbounded">
<element name="attribute" type="plan:nameValueType">
<annotation>
<documentation><![CDATA[An attribute for replacement in the plan.]]></documentation>
</annotation>
</element>
</sequence>
</complexType>
<complexType name="artifactType">
<sequence minOccurs="0" maxOccurs="unbounded">
<element name="property" type="plan:nameValueType">
<annotation>
<documentation>
<![CDATA[Defines a property for the enclosing artifact. Properties are interpreted in an artifact-specific manner.]]>
</documentation>
</annotation>
</element>
</sequence>
<attribute name="type" type="string" use="required" >
<annotation>
<documentation><![CDATA[The type of the artifact.]]></documentation>
</annotation>
</attribute>
<attribute name="name" type="string" use="required" >
<annotation>
<documentation><![CDATA[The name of the artifact.]]></documentation>
</annotation>
</attribute>
<attribute name="version" type="string" use="optional" default="0">
<annotation>
<documentation><![CDATA[The version or version range for this artifact.
This version or version number must meet the OSGi version specification. This attribute is optional and when not specified will result in a default value of "0" meaning 0 to infinity in OSGi.]]></documentation>
</annotation>
</attribute>
</complexType>
<complexType name="plan">
<sequence minOccurs="1" maxOccurs="1">
<sequence minOccurs="0" maxOccurs="1">
<element name="attributes" type="plan:attributesType">
<annotation>
<documentation><![CDATA[The attributes for this plan]]></documentation>
</annotation>
</element>
</sequence>
<sequence minOccurs="1" maxOccurs="unbounded">
<element name="artifact" type="plan:artifactType">
<annotation>
<documentation><![CDATA[An artifact to include as part of this plan.]]></documentation>
</annotation>
</element>
</sequence>
</sequence>
<attribute name="name" type="string" use="required">
<annotation>
<documentation><![CDATA[The name of this plan.
This is one component of the unique identifier for this plan along with a type of 'plan' and a specified version.]]></documentation>
</annotation>
</attribute>
<attribute name="version" use="required">
<annotation>
<documentation><![CDATA[The version of this plan.
This version must meet the OSGi version specification. This is one component of the unique identifier for this plan along with a type of 'plan' and a specified name.]]></documentation>
</annotation>
<simpleType>
<restriction base="string">
<pattern value="\d+(\.\d+(\.\d+(\.([\w_-])+)?)?)?"/>
</restriction>
</simpleType>
</attribute>
<attribute name="scoped" type="boolean" use="required">
<annotation>
<documentation><![CDATA[Whether or not the artifacts in the plan should be installed into a plan-specific scope. When scoping is disabled, the artifacts are deployed into the global scope and are available for access by all other artifacts.]]></documentation>
</annotation>
</attribute>
<attribute name="atomic" type="boolean" use="required" >
<annotation>
<documentation><![CDATA[Whether the lifecycle of the artifacts in the plan should be tied together. Making a plan atomic means that install, start, stop and uninstall events for a single artifact in the plan will be escalated to all artifacts in the plan. Also, in an atomic plan, Virgo prevents artifacts from being in inconsistent states. For example, if one artifact should fail to start, then Virgo will stop all artifacts in the plan.]]></documentation>
</annotation>
</attribute>
<attribute name="provisioning" type="string" default="inherit" >
<annotation>
<documentation><![CDATA[Specifies whether Virgo installs bundles from the repository to attempt to satisfy any missing dependencies in the plan. A value of 'auto' instructs Virgo to install bundles from the repository to attempt to satisfy any missing dependencies in the plan. This is known as 'auto-provisioning'. A value of 'disabled' prevents Virgo from installing bundles from the repository to attempt to satisfy any missing dependencies in the plan. A value of 'inherit', which is the default if no value is specified, inherits the parent plan's provisioning behaviour. If the plan does not have a parent, it inherits Virgo's auto-provisioning behaviour.]]></documentation>
</annotation>
</attribute>
</complexType>
<!-- Elements -->
<element name="plan" type="plan:plan">
<annotation>
<documentation><![CDATA[Plans are a way to group bundles, and other artifacts, together as a single logical unit in Virgo. Within a plan, bundles and services can be placed into a scope that isolates them from the rest of the system. This scoping ensures that the bundles wire to each other and see each other's services in preference to services from outside the scope. Scoping also prevents application code from leaking into the global scope or scope of another application. In addition, a plan can serve as a way to link the lifcycle of a group of bundles together atomically. This atomicity ensures that instal, start, stop, and uninstall events on a single artifact in the plan will be escalated to all artifacts in the plan.]]></documentation>
</annotation>
</element>
</schema>