blob: e29f8a3ab0300a22c1177f1a567f020fa050fa34 [file] [log] [blame]
Clement Escoffierf58887c2008-09-09 14:21:15 +00001<!--
2 Licensed to the Apache Software Foundation (ASF) under one
3 or more contributor license agreements. See the NOTICE file
4 distributed with this work for additional information
5 regarding copyright ownership. The ASF licenses this file
6 to you under the Apache License, Version 2.0 (the
7 "License"); you may not use this file except in compliance
8 with the License. You may obtain a copy of the License at
Clement Escoffier0b93f382009-07-03 13:16:24 +00009
Clement Escoffierf58887c2008-09-09 14:21:15 +000010 http://www.apache.org/licenses/LICENSE-2.0
Clement Escoffier0b93f382009-07-03 13:16:24 +000011
Clement Escoffierf58887c2008-09-09 14:21:15 +000012 Unless required by applicable law or agreed to in writing,
13 software distributed under the License is distributed on an
14 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 KIND, either express or implied. See the License for the
16 specific language governing permissions and limitations
17 under the License.
18-->
19<xs:schema elementFormDefault="qualified" targetNamespace="org.apache.felix.ipojo"
20 xmlns="org.apache.felix.ipojo" xmlns:xs="http://www.w3.org/2001/XMLSchema">
21 <xs:annotation>
Clement Escoffier58b3f182008-09-22 18:36:07 +000022 <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>
Clement Escoffierf58887c2008-09-09 14:21:15 +000023 <xs:element name="ipojo">
24 <xs:complexType>
Clement Escoffier58b3f182008-09-22 18:36:07 +000025 <xs:annotation>
26 <xs:documentation>iPOJO top level element.</xs:documentation>
27 </xs:annotation>
28 <xs:choice minOccurs="0" maxOccurs="unbounded">
Clement Escoffierf58887c2008-09-09 14:21:15 +000029 <xs:element ref="handler" minOccurs="0" maxOccurs="unbounded">
Clement Escoffier58b3f182008-09-22 18:36:07 +000030 <xs:annotation>
31 <xs:documentation>The handler declarations.</xs:documentation>
32 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +000033 </xs:element>
34 <xs:element ref="instance" minOccurs="0" maxOccurs="unbounded">
Clement Escoffier58b3f182008-09-22 18:36:07 +000035 <xs:annotation>
36 <xs:documentation>The instance declarations.</xs:documentation>
37 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +000038 </xs:element>
39 <xs:element ref="component" minOccurs="0" maxOccurs="unbounded">
Clement Escoffier58b3f182008-09-22 18:36:07 +000040 <xs:annotation>
41 <xs:documentation>The component type declarations.</xs:documentation>
42 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +000043 </xs:element>
44 <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
45 </xs:any>
46 </xs:choice>
47 </xs:complexType>
48 </xs:element>
49 <xs:complexType name="HandlerType">
Clement Escoffier58b3f182008-09-22 18:36:07 +000050 <xs:annotation>
51 <xs:documentation>Description of the handler.</xs:documentation>
52 </xs:annotation>
53 <xs:complexContent>
Clement Escoffierf58887c2008-09-09 14:21:15 +000054 <xs:extension base="RootElementType">
55 <xs:sequence maxOccurs="unbounded" minOccurs="0">
56 <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any"
57 processContents="skip">
58 </xs:any>
59 </xs:sequence>
60 <xs:attribute name="classname" type="xs:string" use="required">
Clement Escoffier58b3f182008-09-22 18:36:07 +000061 <xs:annotation>
62 <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>
63 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +000064 </xs:attribute>
65 <xs:attribute name="name" type="xs:string" use="required">
Clement Escoffier58b3f182008-09-22 18:36:07 +000066 <xs:annotation>
67 <xs:documentation>The name of the handler.</xs:documentation>
68 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +000069 </xs:attribute>
70 <xs:attribute name="namespace" type="xs:string" use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +000071 <xs:annotation>
72 <xs:documentation>The XML namespace of the handler.</xs:documentation>
73 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +000074 </xs:attribute>
75 <xs:attribute name="architecture" type="xs:boolean"
76 use="optional" fixed="false">
Clement Escoffier58b3f182008-09-22 18:36:07 +000077 <xs:annotation>
78 <xs:documentation>Enables or disables the architecture exposition. By default, the architecture is not exposed. This allows handler introspection.</xs:documentation>
79 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +000080 </xs:attribute>
81 <xs:attribute name="level" type="xs:int" use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +000082 <xs:annotation>
83 <xs:documentation>The start level of the handler.</xs:documentation>
84 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +000085 </xs:attribute>
86 </xs:extension>
87 </xs:complexContent>
88 </xs:complexType>
89 <xs:complexType name="InstanceType">
Clement Escoffier58b3f182008-09-22 18:36:07 +000090 <xs:annotation>
91 <xs:documentation>Describes an instance of a component.</xs:documentation>
92 </xs:annotation>
93 <xs:complexContent>
Clement Escoffierf58887c2008-09-09 14:21:15 +000094 <xs:extension base="RootElementType">
95 <xs:sequence minOccurs="0" maxOccurs="unbounded">
Clement Escoffier58b3f182008-09-22 18:36:07 +000096 <xs:element name="property" type="InstancePropertyType">
97 <xs:annotation>
98 <xs:documentation>The instance properties.</xs:documentation>
99 </xs:annotation></xs:element>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000100 </xs:sequence>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000101 <xs:attribute name="component" type="xs:string">
102 <xs:annotation>
103 <xs:documentation>The name of the instance component type.</xs:documentation>
104 </xs:annotation></xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000105 <xs:attribute name="name" type="xs:string" use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000106 <xs:annotation>
107 <xs:documentation>The (unique) name of the instance.</xs:documentation>
108 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000109 </xs:attribute>
Clement Escoffier0b93f382009-07-03 13:16:24 +0000110 <xs:attribute name="version" type="xs:string" use="optional">
111 <xs:annotation>
112 <xs:documentation>The version of the factory to use.</xs:documentation>
113 </xs:annotation>
114 </xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000115 </xs:extension>
116 </xs:complexContent>
117 </xs:complexType>
118 <xs:complexType name="InstancePropertyType">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000119 <xs:annotation>
120 <xs:documentation>Defines a property of an instance configuration.</xs:documentation>
121 </xs:annotation>
122 <xs:sequence>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000123 <xs:element name="property" type="InstancePropertyType" minOccurs="0" maxOccurs="unbounded"></xs:element>
124 </xs:sequence>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000125 <xs:attribute name="name" type="xs:string" use="optional">
126 <xs:annotation>
127 <xs:documentation>Name of the property. Can be optional if a property is inside a structure.
128The 'instance.name' property has a special semantic as it will be used as the instance name.</xs:documentation>
129 </xs:annotation></xs:attribute>
130 <xs:attribute name="value" type="xs:string" use="optional">
131 <xs:annotation>
132 <xs:documentation>Value of the property. Can be null for property containing other properties.</xs:documentation>
133 </xs:annotation></xs:attribute>
134 <xs:attribute name="type" type="xs:string" use="optional">
135 <xs:annotation>
136 <xs:documentation>Type of the property, used to create the adequate object. Supported values are list, array, dictionary and map.</xs:documentation>
137 </xs:annotation></xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000138 </xs:complexType>
139 <xs:complexType name="RootElementType"></xs:complexType>
140 <xs:complexType name="ComponentType">
141 <xs:annotation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000142 <xs:documentation>Declares an atomic (i.e. primitive) component type.</xs:documentation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000143 </xs:annotation>
144 <xs:choice minOccurs="0" maxOccurs="unbounded">
145 <xs:element ref="callback" minOccurs="0"
146 maxOccurs="unbounded">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000147 <xs:annotation>
148 <xs:documentation>Describes the method(s) to invoke when the component's state changes.</xs:documentation>
149 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000150 </xs:element>
151 <xs:element ref="provides" minOccurs="0"
152 maxOccurs="unbounded">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000153 <xs:annotation>
154 <xs:documentation>Indicates the component provided service(s). By default, all implemented interfaces are published.</xs:documentation>
155 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000156 </xs:element>
157 <xs:element ref="requires" minOccurs="0"
158 maxOccurs="unbounded">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000159 <xs:annotation>
160 <xs:documentation>Indicates the service requirements of the component.</xs:documentation>
161 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000162 </xs:element>
163 <xs:element ref="properties" minOccurs="0"
164 maxOccurs="unbounded">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000165 <xs:annotation>
166 <xs:documentation>Describes the properties of the component.</xs:documentation>
167 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000168 </xs:element>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000169 <xs:element ref="controller" minOccurs="0" maxOccurs="1">
170 <xs:annotation>
171 <xs:documentation>Lifecycle controller for this component.</xs:documentation>
172 </xs:annotation></xs:element>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000173 <xs:any namespace="##other" processContents="lax"
174 minOccurs="0" maxOccurs="unbounded">
175 </xs:any>
176 </xs:choice>
177 <xs:attribute name="name" type="xs:string" use="optional">
178 <xs:annotation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000179 <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>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000180 </xs:annotation>
181 </xs:attribute>
182 <xs:attribute name="public" type="xs:boolean" use="optional">
183 <xs:annotation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000184 <xs:documentation>Determines if the component type is public or private. A public factory (default) can be used from any bundles.</xs:documentation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000185 </xs:annotation>
186 </xs:attribute>
187 <xs:attribute name="classname" type="xs:string"
188 use="required">
189 <xs:annotation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000190 <xs:documentation>Specifies the implementation class of the component type.</xs:documentation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000191 </xs:annotation>
192 </xs:attribute>
193 <xs:attribute name="architecture" type="xs:boolean"
194 use="optional">
195 <xs:annotation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000196 <xs:documentation>Enables or disables the architecture exposition. By default, the architecture is exposed. This allows instance introspection.</xs:documentation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000197 </xs:annotation>
198 </xs:attribute>
199 <xs:attribute name="immediate" type="xs:boolean"
200 use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000201 <xs:annotation>
202 <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>
203 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000204 </xs:attribute>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000205 <xs:attribute name="factory-method" type="xs:string" use="optional">
206 <xs:annotation>
207 <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>
208 </xs:annotation></xs:attribute>
Clement Escoffier0b93f382009-07-03 13:16:24 +0000209 <xs:attribute name="version" type="xs:string" use="optional">
210 <xs:annotation>
211 <xs:documentation>Set the version of this component type</xs:documentation>
212 </xs:annotation></xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000213 </xs:complexType>
214 <xs:complexType name="RequiresType">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000215 <xs:annotation>
216 <xs:documentation>Description of component services requirements.</xs:documentation>
217 </xs:annotation>
218 <xs:complexContent>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000219 <xs:extension base="ServiceDependencyType">
220 <xs:sequence minOccurs="0" maxOccurs="unbounded">
221 <xs:element name="callback"
222 type="DependencyCallbackType">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000223 <xs:annotation>
224 <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>
225 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000226 </xs:element>
227 </xs:sequence>
Clement Escoffier0b93f382009-07-03 13:16:24 +0000228
Clement Escoffierf58887c2008-09-09 14:21:15 +0000229 <xs:attribute name="interface" type="xs:string"
Clement Escoffier2bbf30b2008-11-05 13:10:54 +0000230 use="prohibited">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000231 <xs:annotation>
Clement Escoffier2bbf30b2008-11-05 13:10:54 +0000232 <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, use 'specification'.</xs:documentation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000233 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000234 </xs:attribute>
Clement Escoffier0b93f382009-07-03 13:16:24 +0000235
Clement Escoffierf58887c2008-09-09 14:21:15 +0000236 <xs:attribute name="field" type="xs:string"
237 use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000238 <xs:annotation>
239 <xs:documentation>The name of the field representing the service dependency in the implementation class.</xs:documentation>
240 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000241 </xs:attribute>
242
243 <xs:attribute name="nullable" type="xs:boolean"
244 use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000245 <xs:annotation>
246 <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>
247 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000248 </xs:attribute>
249
250 <xs:attribute name="default-implementation"
251 type="xs:string" use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000252 <xs:annotation>
253 <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>
254 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000255 </xs:attribute>
256
257 <xs:attribute name="from" type="xs:string"
258 use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000259 <xs:annotation>
260 <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>
261 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000262 </xs:attribute>
Clement Escoffier0b93f382009-07-03 13:16:24 +0000263
Clement Escoffierf58887c2008-09-09 14:21:15 +0000264 <xs:attribute name="scope" use="optional">
265 <xs:simpleType>
266 <xs:restriction base="xs:string">
267 <xs:enumeration value="global"></xs:enumeration>
268 <xs:enumeration value="composite"></xs:enumeration>
269 <xs:enumeration value="composite+global"></xs:enumeration>
270 </xs:restriction>
271 </xs:simpleType>
272 </xs:attribute>
273
274 </xs:extension>
275 </xs:complexContent>
276 </xs:complexType>
277 <xs:complexType name="DependencyCallbackType">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000278 <xs:annotation>
279 <xs:documentation>Dependency callbacks are used to receive notification when service providers arrive and leave.</xs:documentation>
280 </xs:annotation>
281 <xs:attribute name="method" type="xs:string" use="required">
282 <xs:annotation>
283 <xs:documentation>Method to call</xs:documentation>
284 </xs:annotation></xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000285 <xs:attribute name="type" use="required">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000286 <xs:annotation>
287 <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>
288 </xs:annotation>
289 <xs:simpleType>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000290 <xs:restriction base="xs:string">
291 <xs:enumeration value="bind"></xs:enumeration>
292 <xs:enumeration value="unbind"></xs:enumeration>
293 </xs:restriction>
294 </xs:simpleType>
295 </xs:attribute>
296 </xs:complexType>
297 <xs:complexType name="CallbackType">
298 <xs:annotation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000299 <xs:documentation>Lifecycle Callback. Allows a POJO to be notified when the instance becomes valid or invalid.</xs:documentation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000300 </xs:annotation>
301 <xs:attribute name="method" type="xs:string" use="required">
302 <xs:annotation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000303 <xs:documentation>Specifies the method to call on the transition.</xs:documentation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000304 </xs:annotation></xs:attribute>
305 <xs:attribute name="transition" use="required">
306 <xs:annotation>
307 <xs:documentation>Specifies the transition when the callback needs to be invoked.</xs:documentation>
308 </xs:annotation>
309 <xs:simpleType>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000310 <xs:annotation>
311 <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>
312 </xs:annotation>
313 <xs:restriction base="xs:string">
Clement Escoffierf58887c2008-09-09 14:21:15 +0000314 <xs:enumeration value="validate"></xs:enumeration>
315 <xs:enumeration value="invalidate"></xs:enumeration>
316 </xs:restriction>
317 </xs:simpleType>
318 </xs:attribute>
319 </xs:complexType>
320 <xs:element name="provides" type="ProvidesType" id="provides"></xs:element>
Clement Escoffier422057d2008-12-19 16:04:04 +0000321 <xs:complexType name="ProvidesType">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000322 <xs:annotation>
323 <xs:documentation>Provided service(s) description.</xs:documentation>
324 </xs:annotation>
325 <xs:sequence minOccurs="0" maxOccurs="unbounded">
326 <xs:element name="property" type="PropertyType">
327 <xs:annotation>
328 <xs:documentation>List of service specific properties.</xs:documentation>
329 </xs:annotation></xs:element>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000330 </xs:sequence>
Clement Escoffierdf788b42008-12-29 18:59:40 +0000331 <xs:attribute name="interface" type="xs:string" use="prohibited">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000332 <xs:annotation>
Clement Escoffierdf788b42008-12-29 18:59:40 +0000333 <xs:documentation>Deprecated attribute, use 'specifications' instead of 'interface'</xs:documentation>
334 </xs:annotation></xs:attribute>
335 <xs:attribute name="specifications" type="xs:string" use="optional">
336 <xs:annotation>
337 <xs:documentation>The list of service specifications (i.e. interfaces) to expose. By default, all interfaces implemented by the component implementation class are published.</xs:documentation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000338 </xs:annotation></xs:attribute>
Clement Escoffier422057d2008-12-19 16:04:04 +0000339 <xs:attribute name="factory" type="xs:string" use="prohibited">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000340 <xs:annotation>
Clement Escoffier422057d2008-12-19 16:04:04 +0000341 <xs:documentation>Use 'strategy' instead of 'factory'</xs:documentation>
342 </xs:annotation></xs:attribute>
343 <xs:attribute name="strategy" type="xs:string" use="optional">
344 <xs:annotation>
345 <xs:documentation>POJO creation strategy. 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).
346 INSTANCE allows creating one different POJO object per asking instance. Finally, a custom strategy can be used by specifying the qualified name of the class extending CreationPolicy</xs:documentation>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000347 </xs:annotation></xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000348 </xs:complexType>
349 <xs:complexType name="PropertyType">
Clement Escoffieraa52ee32008-11-14 11:05:57 +0000350 <xs:annotation>
351 <xs:documentation>
352 Defines a component property.
353 </xs:documentation>
354 </xs:annotation>
355 <xs:attribute name="field" type="xs:string" use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000356 <xs:annotation>
Clement Escoffieraa52ee32008-11-14 11:05:57 +0000357 <xs:documentation>
358 Field of the property
359 </xs:documentation>
360 </xs:annotation>
361 </xs:attribute>
362 <xs:attribute name="method" type="xs:string" use="optional">
363 <xs:annotation>
364 <xs:documentation>
365 Setter method of the property. This method is called
366 to inject property value.
367 </xs:documentation>
368 </xs:annotation>
369 </xs:attribute>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000370 <xs:attribute name="name" type="xs:string" use="optional">
371 <xs:annotation>
Clement Escoffieraa52ee32008-11-14 11:05:57 +0000372 <xs:documentation>
373 Name of the property.
374 </xs:documentation>
375 </xs:annotation>
376 </xs:attribute>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000377 <xs:attribute name="value" type="xs:string" use="optional">
378 <xs:annotation>
Clement Escoffieraa52ee32008-11-14 11:05:57 +0000379 <xs:documentation>
380 Default value of the property.
381 </xs:documentation>
382 </xs:annotation>
383 </xs:attribute>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000384 <xs:attribute name="type" type="xs:string" use="optional">
385 <xs:annotation>
Clement Escoffieraa52ee32008-11-14 11:05:57 +0000386 <xs:documentation>
387 Type of the property.
388 </xs:documentation>
389 </xs:annotation>
390 </xs:attribute>
391 <xs:attribute name="mandatory" type="xs:boolean" use="optional" default="false">
392 <xs:annotation>
393 <xs:documentation>Set the property as mandatory. A mandatory property MUST receive a value either in the component type description or in the instance configuration. Properties are optional by default.</xs:documentation>
394 </xs:annotation></xs:attribute>
395 </xs:complexType>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000396 <xs:element name="callback" type="CallbackType" id="callback"></xs:element>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000397 <xs:element name="controller" type="ControllerType" id="controller">
398 <xs:annotation>
399 <xs:documentation></xs:documentation>
400 </xs:annotation></xs:element>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000401 <xs:element name="requires" type="RequiresType" id="requires"></xs:element>
402 <xs:element name="component" type="ComponentType" id="component"></xs:element>
403 <xs:element name="handler" type="HandlerType" id="handler"></xs:element>
404 <xs:element name="instance" type="InstanceType" id="instance"></xs:element>
405
406 <xs:element name="properties" type="PropertiesType" id="properties"></xs:element>
407 <xs:complexType name="PropertiesType">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000408 <xs:annotation>
409 <xs:documentation>List of component, instance or service properties. This field will receive the property value.</xs:documentation>
410 </xs:annotation>
411 <xs:sequence minOccurs="0" maxOccurs="unbounded">
412 <xs:element name="property" type="PropertyType">
413 <xs:annotation>
414 <xs:documentation>The list of properties.</xs:documentation>
415 </xs:annotation></xs:element>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000416 </xs:sequence>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000417 <xs:attribute name="propagation" type="xs:boolean" use="optional">
418 <xs:annotation>
419 <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>
420 </xs:annotation></xs:attribute>
421 <xs:attribute name="pid" type="xs:string" use="optional">
422 <xs:annotation>
423 <xs:documentation>Unique identifier used to reconfigure components properties (via Managed Services) with the Configuration Admin.</xs:documentation>
424 </xs:annotation></xs:attribute>
Clement Escoffier0b93f382009-07-03 13:16:24 +0000425 <xs:attribute name="updated" type="xs:string" use="optional">
426 <xs:annotation>
427 <xs:documentation>Method called when a reconfiguration is done</xs:documentation>
428 </xs:annotation></xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000429 </xs:complexType>
Clement Escoffier0b93f382009-07-03 13:16:24 +0000430
Clement Escoffierf58887c2008-09-09 14:21:15 +0000431 <xs:complexType name="ServiceDependencyType">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000432 <xs:attribute name="specification" type="xs:string" use="optional">
433 <xs:annotation>
434 <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>
435 </xs:annotation></xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000436 <xs:attribute name="optional" type="xs:boolean" use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000437 <xs:annotation>
438 <xs:documentation>Sets the service dependency optionality</xs:documentation>
439 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000440 </xs:attribute>
441 <xs:attribute name="aggregate" type="xs:boolean" use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000442 <xs:annotation>
443 <xs:documentation>Sets the service dependency cardinality.</xs:documentation>
444 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000445 </xs:attribute>
446 <xs:attribute name="policy" use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000447 <xs:annotation>
448 <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>
449 </xs:annotation>
450 <xs:simpleType>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000451 <xs:restriction base="xs:string">
452 <xs:enumeration value="dynamic"></xs:enumeration>
453 <xs:enumeration value="static"></xs:enumeration>
454 <xs:enumeration value="dynamic-priority"></xs:enumeration>
455 </xs:restriction>
456 </xs:simpleType>
457 </xs:attribute>
458 <xs:attribute name="comparator" type="xs:string" use="optional">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000459 <xs:annotation>
460 <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>
461 </xs:annotation>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000462 </xs:attribute>
Clement Escoffier58b3f182008-09-22 18:36:07 +0000463 <xs:attribute name="filter" type="xs:string" use="optional">
464 <xs:annotation>
465 <xs:documentation>LDAP filter used to filter providers</xs:documentation>
466 </xs:annotation></xs:attribute>
467 <xs:attribute name="id" type="xs:string" use="optional">
468 <xs:annotation>
469 <xs:documentation>id of the service dependency. The id allows to indentify and to refert to this dependency.</xs:documentation>
470 </xs:annotation></xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000471 </xs:complexType>
472
473 <xs:complexType name="ControllerType">
Clement Escoffier58b3f182008-09-22 18:36:07 +0000474 <xs:annotation>
475 <xs:documentation>Specifies the lifecycle controller of a component, which allows to validate or invalidate component instances.</xs:documentation>
476 </xs:annotation>
477 <xs:attribute name="field" type="xs:string" use="required">
478 <xs:annotation>
479 <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>
480 </xs:annotation>
481 </xs:attribute>
Clement Escoffierf58887c2008-09-09 14:21:15 +0000482 </xs:complexType>
483</xs:schema>