Author: clement
Date: Mon Sep 22 11:36:07 2008
New Revision: 697938
URL: http://svn.apache.org/viewvc?rev=697938&view=rev
Log:
Add documentations to the XSD files.
Modified:
felix/trunk/ipojo/core/src/main/resources/core.xsd
Modified: felix/trunk/ipojo/core/src/main/resources/core.xsd
URL:
http://svn.apache.org/viewvc/felix/trunk/ipojo/core/src/main/resources/core.xsd?rev=697938&r1=697937&r2=697938&view=diff
==============================================================================
--- felix/trunk/ipojo/core/src/main/resources/core.xsd (original)
+++ felix/trunk/ipojo/core/src/main/resources/core.xsd Mon Sep 22 11:36:07 2008
@@ -19,15 +19,27 @@
<xs:schema elementFormDefault="qualified"
targetNamespace="org.apache.felix.ipojo"
xmlns="org.apache.felix.ipojo"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
- <xs:documentation>iPOJO Core XML-Schema.
This grammars models iPOJO descriptor using core features. It provides several
extensibility mechanism in order to compose this schema with external handlers
and other component implementation type such as
compositions.</xs:documentation></xs:annotation>
+ <xs:documentation>iPOJO Core XML-Schema. This grammars models iPOJO
descriptor using core features. It provides several extensibility mechanism in
order to compose this schema with external handlers and other component
implementation type such as compositions.</xs:documentation></xs:annotation>
<xs:element name="ipojo">
<xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>iPOJO top level element.</xs:documentation>
+ </xs:annotation>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="handler" minOccurs="0"
maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>The handler
declarations.</xs:documentation>
+ </xs:annotation>
</xs:element>
<xs:element ref="instance" minOccurs="0"
maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>The instance
declarations.</xs:documentation>
+ </xs:annotation>
</xs:element>
<xs:element ref="component" minOccurs="0"
maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>The component type
declarations.</xs:documentation>
+ </xs:annotation>
</xs:element>
<xs:any namespace="##other"
processContents="lax" minOccurs="0" maxOccurs="unbounded">
</xs:any>
@@ -35,7 +47,10 @@
</xs:complexType>
</xs:element>
<xs:complexType name="HandlerType">
- <xs:complexContent>
+ <xs:annotation>
+ <xs:documentation>Description of the handler.</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
<xs:extension base="RootElementType">
<xs:sequence maxOccurs="unbounded"
minOccurs="0">
<xs:any minOccurs="0"
maxOccurs="unbounded" namespace="##any"
@@ -43,134 +58,198 @@
</xs:any>
</xs:sequence>
<xs:attribute name="classname" type="xs:string"
use="required">
+ <xs:annotation>
+ <xs:documentation>The implementation class of the
handler. The specified class must implement (direcly or not) the
"org.apache.felix.ipojo.Handler" interface.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="xs:string"
use="required">
+ <xs:annotation>
+ <xs:documentation>The name of the
handler.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="namespace" type="xs:string"
use="optional">
+ <xs:annotation>
+ <xs:documentation>The XML namespace of the
handler.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="architecture"
type="xs:boolean"
use="optional" fixed="false">
+ <xs:annotation>
+ <xs:documentation>Enables or disables the architecture
exposition. By default, the architecture is not exposed. This allows handler
introspection.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="level" type="xs:int"
use="optional">
+ <xs:annotation>
+ <xs:documentation>The start level of the
handler.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="InstanceType">
- <xs:complexContent>
+ <xs:annotation>
+ <xs:documentation>Describes an instance of a
component.</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
<xs:extension base="RootElementType">
<xs:sequence minOccurs="0"
maxOccurs="unbounded">
- <xs:element name="property"
type="InstancePropertyType"></xs:element>
+ <xs:element name="property"
type="InstancePropertyType">
+ <xs:annotation>
+ <xs:documentation>The
instance properties.</xs:documentation>
+ </xs:annotation></xs:element>
</xs:sequence>
- <xs:attribute name="component"
type="xs:string"></xs:attribute>
+ <xs:attribute name="component" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>The name of
the instance component type.</xs:documentation>
+ </xs:annotation></xs:attribute>
<xs:attribute name="name" type="xs:string"
use="optional">
+ <xs:annotation>
+ <xs:documentation>The (unique) name of the
instance.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="InstancePropertyType">
- <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>Defines a property of an instance
configuration.</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
<xs:element name="property" type="InstancePropertyType"
minOccurs="0" maxOccurs="unbounded"></xs:element>
</xs:sequence>
- <xs:attribute name="name" type="xs:string"
use="optional"></xs:attribute>
- <xs:attribute name="value" type="xs:string"
use="optional"></xs:attribute>
- <xs:attribute name="type" type="xs:string"
use="optional"></xs:attribute>
+ <xs:attribute name="name" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Name of the property. Can be
optional if a property is inside a structure.
+The 'instance.name' property has a special semantic as it will be used as the
instance name.</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="value" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Value of the property. Can be
null for property containing other properties.</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="type" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Type of the property, used to
create the adequate object. Supported values are list, array, dictionary and
map.</xs:documentation>
+ </xs:annotation></xs:attribute>
</xs:complexType>
<xs:complexType name="RootElementType"></xs:complexType>
<xs:complexType name="ComponentType">
<xs:annotation>
- <xs:documentation>
- Declares an atomic (i.e. primitive) component
type
- </xs:documentation>
+ <xs:documentation>Declares an atomic (i.e. primitive)
component type.</xs:documentation>
</xs:annotation>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="callback" minOccurs="0"
maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Describes the method(s) to invoke
when the component's state changes.</xs:documentation>
+ </xs:annotation>
</xs:element>
<xs:element ref="provides" minOccurs="0"
maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Indicates the component provided
service(s). By default, all implemented interfaces are
published.</xs:documentation>
+ </xs:annotation>
</xs:element>
<xs:element ref="requires" minOccurs="0"
maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Indicates the service requirements of
the component.</xs:documentation>
+ </xs:annotation>
</xs:element>
<xs:element ref="properties" minOccurs="0"
maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Describes the properties of the
component.</xs:documentation>
+ </xs:annotation>
</xs:element>
- <xs:element ref="controller" minOccurs="0"
maxOccurs="1"></xs:element>
+ <xs:element ref="controller" minOccurs="0"
maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>Lifecycle controller
for this component.</xs:documentation>
+ </xs:annotation></xs:element>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded">
</xs:any>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="optional">
<xs:annotation>
- <xs:documentation>
- Specifies the name of the component
type. This name
- is used to identify the factory
attached to this
- type. If not specified, the factory
name is the
- implementation class name.
- </xs:documentation>
+ <xs:documentation>Specifies the name of the
component type. This name is used to identify the factory attached to this
type. If not specified, the factory name is the implementation class
name.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="public" type="xs:boolean" use="optional">
<xs:annotation>
- <xs:documentation>
- Determines if the component type is
public or
- private. A public factory (default) can
be used from
- any bundles.
- </xs:documentation>
+ <xs:documentation>Determines if the component
type is public or private. A public factory (default) can be used from any
bundles.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="classname" type="xs:string"
use="required">
<xs:annotation>
- <xs:documentation>
- Specifies the implementation class of
the component
- type.
- </xs:documentation>
+ <xs:documentation>Specifies the implementation
class of the component type.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="architecture" type="xs:boolean"
use="optional">
<xs:annotation>
- <xs:documentation>
- Enable or disable the architecture
exposition. By
- default, the architecture is exposed.
This allows
- instance introspection.
- </xs:documentation>
+ <xs:documentation>Enables or disables the
architecture exposition. By default, the architecture is exposed. This allows
instance introspection.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="immediate" type="xs:boolean"
use="optional">
+ <xs:annotation>
+ <xs:documentation>Creates the object of the component
implementation type as soon as the component instance becomes valid. The
default value is "true" if the component doesn't provide any service, "false"
otherwise.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
- <xs:attribute name="factory-method" type="xs:string"
use="optional"></xs:attribute>
+ <xs:attribute name="factory-method" type="xs:string"
use="optional">
+ <xs:annotation>
+ <xs:documentation>Factory method called to
create POJO objects instead of the constructor. The specified method must be a
static method of the implementation class returning an instance of this
implementation class. The factory method can receive the bundle context in
argument.</xs:documentation>
+ </xs:annotation></xs:attribute>
</xs:complexType>
<xs:complexType name="RequiresType">
- <xs:complexContent>
+ <xs:annotation>
+ <xs:documentation>Description of component services
requirements.</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
<xs:extension base="ServiceDependencyType">
<xs:sequence minOccurs="0"
maxOccurs="unbounded">
<xs:element name="callback"
type="DependencyCallbackType">
+ <xs:annotation>
+ <xs:documentation>Service requirement method
invocation description. Here can be specified a bind method called when a
service appears and an unbind method called when a service
disappears.</xs:documentation>
+ </xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="interface" type="xs:string"
use="optional">
+ <xs:annotation>
+ <xs:documentation>The interface describing the required
service type. This attribute is needed only when using aggregate dependencies
with field injection and when the type of this field is a list, vector,
collection and set. This attribute is deprecated.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="field" type="xs:string"
use="optional">
+ <xs:annotation>
+ <xs:documentation>The name of the field representing
the service dependency in the implementation class.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="nullable" type="xs:boolean"
use="optional">
+ <xs:annotation>
+ <xs:documentation>Enable or disable the Nullable
pattern on optional service dependencies. By default, Nullable pattern is
enabled. If disabled, iPOJO will inject null instead of a Nullable
object.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="default-implementation"
type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Specifies the default implementation
class for an optional service dependency. If no providers are found, iPOJO
creates an instance of the default-implementation (nullary constructor) and
injects it. The given class must implement the required service
interface.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="from" type="xs:string"
use="optional">
+ <xs:annotation>
+ <xs:documentation>Specific service provider. The
dependency can only be fulfilled by the component with the matching name, or by
the service with a matching PID.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="scope" use="optional">
@@ -187,9 +266,18 @@
</xs:complexContent>
</xs:complexType>
<xs:complexType name="DependencyCallbackType">
- <xs:attribute name="method" type="xs:string"
use="required"></xs:attribute>
+ <xs:annotation>
+ <xs:documentation>Dependency callbacks are used to receive
notification when service providers arrive and leave.</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="method" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>Method to call</xs:documentation>
+ </xs:annotation></xs:attribute>
<xs:attribute name="type" use="required">
- <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>Type of callback (bind or unbind). Bind means
that the method will be called when a provider arrives. Unbind means that the
method will be called when a provider leaves.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration
value="bind"></xs:enumeration>
<xs:enumeration
value="unbind"></xs:enumeration>
@@ -199,18 +287,21 @@
</xs:complexType>
<xs:complexType name="CallbackType">
<xs:annotation>
- <xs:documentation>Lifecycle Callback.
Allows a POJO to be notified when the instance becomes valid or
invalid.</xs:documentation>
+ <xs:documentation>Lifecycle Callback. Allows a POJO to be
notified when the instance becomes valid or invalid.</xs:documentation>
</xs:annotation>
<xs:attribute name="method" type="xs:string" use="required">
<xs:annotation>
- <xs:documentation>Specifies the method to call on the
transition</xs:documentation>
+ <xs:documentation>Specifies the method to call on the
transition.</xs:documentation>
</xs:annotation></xs:attribute>
<xs:attribute name="transition" use="required">
<xs:annotation>
<xs:documentation>Specifies the transition when the callback
needs to be invoked.</xs:documentation>
</xs:annotation>
<xs:simpleType>
- <xs:restriction base="xs:string">
+ <xs:annotation>
+ <xs:documentation>Lifecycle transition state.
"validate" means that the component's instance was invalid and becomes valid,
"invalidate" means that the component's intance was valid and becomes
invalid.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
<xs:enumeration
value="validate"></xs:enumeration>
<xs:enumeration
value="invalidate"></xs:enumeration>
</xs:restriction>
@@ -219,21 +310,54 @@
</xs:complexType>
<xs:element name="provides" type="ProvidesType"
id="provides"></xs:element>
<xs:complexType name="ProvidesType">
- <xs:sequence minOccurs="0" maxOccurs="unbounded">
- <xs:element name="property"
type="PropertyType"></xs:element>
+ <xs:annotation>
+ <xs:documentation>Provided service(s)
description.</xs:documentation>
+ </xs:annotation>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="property" type="PropertyType">
+ <xs:annotation>
+ <xs:documentation>List of service
specific properties.</xs:documentation>
+ </xs:annotation></xs:element>
</xs:sequence>
- <xs:attribute name="interface" type="xs:string"
use="optional"></xs:attribute>
- <xs:attribute name="factory" type="xs:string"
use="optional"></xs:attribute>
+ <xs:attribute name="interface" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>The list of interfaces of the
service to expose. By default, all interfaces implemented by the component
implementation class are published.</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="factory" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>POJO factory policy. By
default, the POJO object is created once (singleton). If the factory is set to
"SERVICE", the creation policy follows the OSGi service factory policy (one
object object per asking bundle).</xs:documentation>
+ </xs:annotation></xs:attribute>
</xs:complexType>
<xs:complexType name="PropertyType">
- <xs:attribute name="field" type="xs:string"
use="optional"></xs:attribute>
- <xs:attribute name="method" type="xs:string"
use="optional"></xs:attribute>
- <xs:attribute name="name" type="xs:string"
use="optional"></xs:attribute>
- <xs:attribute name="value" type="xs:string"
use="optional"></xs:attribute>
- <xs:attribute name="type" type="xs:string"
use="optional"></xs:attribute>
+ <xs:annotation>
+ <xs:documentation>Defines a component
property.</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="field" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Field of the
property</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="method" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Setter method of the
property. This method is called to inject property value.</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="name" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Name of the
property.</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="value" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Default value of the
property.</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="type" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Type of the
property.</xs:documentation>
+ </xs:annotation></xs:attribute>
</xs:complexType>
<xs:element name="callback" type="CallbackType"
id="callback"></xs:element>
- <xs:element name="controller" type="ControllerType"
id="controller"></xs:element>
+ <xs:element name="controller" type="ControllerType" id="controller">
+ <xs:annotation>
+ <xs:documentation></xs:documentation>
+ </xs:annotation></xs:element>
<xs:element name="requires" type="RequiresType"
id="requires"></xs:element>
<xs:element name="component" type="ComponentType"
id="component"></xs:element>
<xs:element name="handler" type="HandlerType" id="handler"></xs:element>
@@ -241,21 +365,45 @@
<xs:element name="properties" type="PropertiesType"
id="properties"></xs:element>
<xs:complexType name="PropertiesType">
- <xs:sequence minOccurs="0" maxOccurs="unbounded">
- <xs:element name="property"
type="PropertyType"></xs:element>
+ <xs:annotation>
+ <xs:documentation>List of component, instance or service
properties. This field will receive the property value.</xs:documentation>
+ </xs:annotation>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="property" type="PropertyType">
+ <xs:annotation>
+ <xs:documentation>The list of
properties.</xs:documentation>
+ </xs:annotation></xs:element>
</xs:sequence>
- <xs:attribute name="propagation" type="xs:boolean"
use="optional"></xs:attribute>
- <xs:attribute name="pid" type="xs:string"
use="optional"></xs:attribute>
+ <xs:attribute name="propagation" type="xs:boolean"
use="optional">
+ <xs:annotation>
+ <xs:documentation>Propagation of the component
properties to the provided services. If this parameter is set to "true", each
time properties are reconfigured, they are propagated to each service published
by the component.</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="pid" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Unique identifier used to
reconfigure components properties (via Managed Services) with the
Configuration Admin.</xs:documentation>
+ </xs:annotation></xs:attribute>
</xs:complexType>
<xs:complexType name="ServiceDependencyType">
- <xs:attribute name="specification" type="xs:string" use="optional"/>
+ <xs:attribute name="specification" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>The specification describing the
required service type. This attribute is needed only when using aggregate
dependencies with field injection and when the type of this field is a list,
vector, collection and set.</xs:documentation>
+ </xs:annotation></xs:attribute>
<xs:attribute name="optional" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>Sets the service dependency
optionality</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="aggregate" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>Sets the service dependency
cardinality.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
<xs:attribute name="policy" use="optional">
- <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>Sets the binding policy of the dependency.
Three policies are supported. The dynamic policy supports service providers
dynamism. The static policy freezes the provider set as soon as the dependency
is used. The dynamic-priority policy is an extension of the dynamic policy, but
providers are ranked.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration
value="dynamic"></xs:enumeration>
<xs:enumeration
value="static"></xs:enumeration>
@@ -264,13 +412,28 @@
</xs:simpleType>
</xs:attribute>
<xs:attribute name="comparator" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>The comparator attribute allows specifying
the class used to compare providers. This class must implemented the
java.util.Comparator class and must support the comparison of service
references.</xs:documentation>
+ </xs:annotation>
</xs:attribute>
- <xs:attribute name="filter" type="xs:string"
use="optional"></xs:attribute>
- <xs:attribute name="id" type="xs:string"
use="optional"></xs:attribute>
+ <xs:attribute name="filter" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>LDAP filter used to filter
providers</xs:documentation>
+ </xs:annotation></xs:attribute>
+ <xs:attribute name="id" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>id of the service dependency.
The id allows to indentify and to refert to this dependency.</xs:documentation>
+ </xs:annotation></xs:attribute>
</xs:complexType>
<xs:complexType name="ControllerType">
- <xs:attribute name="field" type="xs:string" use="required">
- </xs:attribute>
+ <xs:annotation>
+ <xs:documentation>Specifies the lifecycle controller of a
component, which allows to validate or invalidate component
instances.</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="field" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>The name of the component lifecycle
controller field. The type of the specified field must be boolean. Setting the
value of the specified field to "true" means the validation of the component
instance while setting it to "false" means the invalidation of the component
instance.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
</xs:complexType>
</xs:schema>
\ No newline at end of file