blob: 66cb2d5079b8d038015b04be2776c74262e95359 [file] [log] [blame]
Clement Escoffier69257912011-08-18 11:32:19 +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
9
10 http://www.apache.org/licenses/LICENSE-2.0
11
12 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>
22 <xs:documentation>iPOJO Core XML-Schema. This grammars models iPOJO descriptor using core
23 features. It provides several extensibility mechanism in order to compose this schema with
24 external handlers and other component implementation type such as
25 compositions.</xs:documentation>
26 </xs:annotation>
27 <xs:element name="ipojo">
28 <xs:complexType>
29 <xs:annotation>
30 <xs:documentation>iPOJO top level element.</xs:documentation>
31 </xs:annotation>
32 <xs:choice minOccurs="0" maxOccurs="unbounded">
33 <xs:element ref="handler" minOccurs="0" maxOccurs="unbounded">
34 <xs:annotation>
35 <xs:documentation>The handler declarations.</xs:documentation>
36 </xs:annotation>
37 </xs:element>
38 <xs:element ref="instance" minOccurs="0" maxOccurs="unbounded">
39 <xs:annotation>
40 <xs:documentation>The instance declarations.</xs:documentation>
41 </xs:annotation>
42 </xs:element>
43 <xs:element ref="component" minOccurs="0" maxOccurs="unbounded">
44 <xs:annotation>
45 <xs:documentation>The component type declarations.</xs:documentation>
46 </xs:annotation>
47 </xs:element>
48 <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"
49 > </xs:any>
50 </xs:choice>
51 </xs:complexType>
52 </xs:element>
53 <xs:complexType name="HandlerType">
54 <xs:annotation>
55 <xs:documentation>Description of the handler.</xs:documentation>
56 </xs:annotation>
57 <xs:complexContent>
58 <xs:extension base="RootElementType">
59 <xs:sequence maxOccurs="unbounded" minOccurs="0">
60 <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip"
61 > </xs:any>
62 </xs:sequence>
63 <xs:attribute name="classname" type="xs:string" use="required">
64 <xs:annotation>
65 <xs:documentation>The implementation class of the handler. The specified class must
66 implement (direcly or not) the "org.apache.felix.ipojo.Handler"
67 interface.</xs:documentation>
68 </xs:annotation>
69 </xs:attribute>
70 <xs:attribute name="name" type="xs:string" use="required">
71 <xs:annotation>
72 <xs:documentation>The name of the handler.</xs:documentation>
73 </xs:annotation>
74 </xs:attribute>
75 <xs:attribute name="namespace" type="xs:string" use="optional">
76 <xs:annotation>
77 <xs:documentation>The XML namespace of the handler.</xs:documentation>
78 </xs:annotation>
79 </xs:attribute>
80 <xs:attribute name="architecture" type="xs:boolean" use="optional" fixed="false">
81 <xs:annotation>
82 <xs:documentation>Enables or disables the architecture exposition. By default, the
83 architecture is not exposed. This allows handler introspection.</xs:documentation>
84 </xs:annotation>
85 </xs:attribute>
86 <xs:attribute name="level" type="xs:int" use="optional">
87 <xs:annotation>
88 <xs:documentation>The start level of the handler.</xs:documentation>
89 </xs:annotation>
90 </xs:attribute>
91 </xs:extension>
92 </xs:complexContent>
93 </xs:complexType>
94 <xs:complexType name="InstanceType">
95 <xs:annotation>
96 <xs:documentation>Describes an instance of a component.</xs:documentation>
97 </xs:annotation>
98 <xs:complexContent>
99 <xs:extension base="RootElementType">
100 <xs:sequence minOccurs="0" maxOccurs="unbounded">
101 <xs:element name="property" type="InstancePropertyType">
102 <xs:annotation>
103 <xs:documentation>The instance properties.</xs:documentation>
104 </xs:annotation>
105 </xs:element>
106 </xs:sequence>
107 <xs:attribute name="component" type="xs:string">
108 <xs:annotation>
109 <xs:documentation>The name of the instance component type.</xs:documentation>
110 </xs:annotation>
111 </xs:attribute>
112 <xs:attribute name="name" type="xs:string" use="optional">
113 <xs:annotation>
114 <xs:documentation>The (unique) name of the instance.</xs:documentation>
115 </xs:annotation>
116 </xs:attribute>
117 <xs:attribute name="version" type="xs:string" use="optional">
118 <xs:annotation>
119 <xs:documentation>The version of the factory to use.</xs:documentation>
120 </xs:annotation>
121 </xs:attribute>
122 </xs:extension>
123 </xs:complexContent>
124 </xs:complexType>
125 <xs:complexType name="InstancePropertyType">
126 <xs:annotation>
127 <xs:documentation>Defines a property of an instance configuration.</xs:documentation>
128 </xs:annotation>
129 <xs:sequence>
130 <xs:element name="property" type="InstancePropertyType" minOccurs="0" maxOccurs="unbounded"/>
131 </xs:sequence>
132 <xs:attribute name="name" type="xs:string" use="optional">
133 <xs:annotation>
134 <xs:documentation>Name of the property. Can be optional if a property is inside a structure.
135 The 'instance.name' property has a special semantic as it will be used as the instance
136 name.</xs:documentation>
137 </xs:annotation>
138 </xs:attribute>
139 <xs:attribute name="value" type="xs:string" use="optional">
140 <xs:annotation>
141 <xs:documentation>Value of the property. Can be null for property containing other
142 properties.</xs:documentation>
143 </xs:annotation>
144 </xs:attribute>
145 <xs:attribute name="type" type="xs:string" use="optional">
146 <xs:annotation>
147 <xs:documentation>Type of the property, used to create the adequate object. Supported values
148 are list, array, dictionary and map.</xs:documentation>
149 </xs:annotation>
150 </xs:attribute>
151 </xs:complexType>
152 <xs:complexType name="RootElementType"/>
153 <xs:complexType name="ComponentType">
154 <xs:annotation>
155 <xs:documentation>Declares an atomic (i.e. primitive) component type.</xs:documentation>
156 </xs:annotation>
157 <xs:choice minOccurs="0" maxOccurs="unbounded">
158 <xs:element ref="callback" minOccurs="0" maxOccurs="unbounded">
159 <xs:annotation>
160 <xs:documentation>Describes the method(s) to invoke when the component's state
161 changes.</xs:documentation>
162 </xs:annotation>
163 </xs:element>
164 <xs:element ref="provides" minOccurs="0" maxOccurs="unbounded">
165 <xs:annotation>
166 <xs:documentation>Indicates the component provided service(s). By default, all implemented
167 interfaces are published.</xs:documentation>
168 </xs:annotation>
169 </xs:element>
170 <xs:element ref="requires" minOccurs="0" maxOccurs="unbounded">
171 <xs:annotation>
172 <xs:documentation>Indicates the service requirements of the component.</xs:documentation>
173 </xs:annotation>
174 </xs:element>
175 <xs:element ref="properties" minOccurs="0" maxOccurs="unbounded">
176 <xs:annotation>
177 <xs:documentation>Describes the properties of the component.</xs:documentation>
178 </xs:annotation>
179 </xs:element>
180 <xs:element ref="controller" minOccurs="0" maxOccurs="1">
181 <xs:annotation>
182 <xs:documentation>Lifecycle controller for this component.</xs:documentation>
183 </xs:annotation>
184 </xs:element>
185 <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"
186 > </xs:any>
187 </xs:choice>
188 <xs:attribute name="name" type="xs:string" use="optional">
189 <xs:annotation>
190 <xs:documentation>Specifies the name of the component type. This name is used to identify
191 the factory attached to this type. If not specified, the factory name is the
192 implementation class name.</xs:documentation>
193 </xs:annotation>
194 </xs:attribute>
195 <xs:attribute name="public" type="xs:boolean" use="optional">
196 <xs:annotation>
197 <xs:documentation>Determines if the component type is public or private. A public factory
198 (default) can be used from any bundles.</xs:documentation>
199 </xs:annotation>
200 </xs:attribute>
201 <xs:attribute name="classname" type="xs:string" use="required">
202 <xs:annotation>
203 <xs:documentation>Specifies the implementation class of the component
204 type.</xs:documentation>
205 </xs:annotation>
206 </xs:attribute>
207 <xs:attribute name="architecture" type="xs:boolean" use="optional">
208 <xs:annotation>
209 <xs:documentation>Enables or disables the architecture exposition. By default, the
210 architecture is exposed. This allows instance introspection.</xs:documentation>
211 </xs:annotation>
212 </xs:attribute>
213 <xs:attribute name="immediate" type="xs:boolean" use="optional">
214 <xs:annotation>
215 <xs:documentation>Creates the object of the component implementation type as soon as the
216 component instance becomes valid. The default value is "true" if the component doesn't
217 provide any service, "false" otherwise.</xs:documentation>
218 </xs:annotation>
219 </xs:attribute>
220 <xs:attribute name="factory-method" type="xs:string" use="optional">
221 <xs:annotation>
222 <xs:documentation>Factory method called to create POJO objects instead of the constructor.
223 The specified method must be a static method of the implementation class returning an
224 instance of this implementation class. The factory method can receive the bundle context
225 in argument.</xs:documentation>
226 </xs:annotation>
227 </xs:attribute>
228 <xs:attribute name="version" type="xs:string" use="optional">
229 <xs:annotation>
230 <xs:documentation>Set the version of this component type</xs:documentation>
231 </xs:annotation>
232 </xs:attribute>
233 </xs:complexType>
234 <xs:complexType name="RequiresType">
235 <xs:annotation>
236 <xs:documentation>Description of component services requirements.</xs:documentation>
237 </xs:annotation>
238 <xs:complexContent>
239 <xs:extension base="ServiceDependencyType">
240 <xs:sequence minOccurs="0" maxOccurs="unbounded">
241 <xs:element name="callback" type="DependencyCallbackType">
242 <xs:annotation>
243 <xs:documentation>Service requirement method invocation description. Here can be
244 specified a bind method called when a service appears and an unbind method called
245 when a service disappears.</xs:documentation>
246 </xs:annotation>
247 </xs:element>
248 </xs:sequence>
249
250 <xs:attribute name="interface" type="xs:string" use="prohibited">
251 <xs:annotation>
252 <xs:documentation>The interface describing the required service type. This attribute is
253 needed only when using aggregate dependencies with field injection and when the type
254 of this field is a list, vector, collection and set. This attribute is deprecated, use
255 'specification'.</xs:documentation>
256 </xs:annotation>
257 </xs:attribute>
258
259 <xs:attribute name="field" type="xs:string" use="optional">
260 <xs:annotation>
261 <xs:documentation>The name of the field representing the service dependency in the
262 implementation class.</xs:documentation>
263 </xs:annotation>
264 </xs:attribute>
265
266 <xs:attribute name="nullable" type="xs:boolean" use="optional">
267 <xs:annotation>
268 <xs:documentation>Enable or disable the Nullable pattern on optional service
269 dependencies. By default, Nullable pattern is enabled. If disabled, iPOJO will inject
270 null instead of a Nullable object.</xs:documentation>
271 </xs:annotation>
272 </xs:attribute>
273
274 <xs:attribute name="default-implementation" type="xs:string" use="optional">
275 <xs:annotation>
276 <xs:documentation>Specifies the default implementation class for an optional service
277 dependency. If no providers are found, iPOJO creates an instance of the
278 default-implementation (nullary constructor) and injects it. The given class must
279 implement the required service interface.</xs:documentation>
280 </xs:annotation>
281 </xs:attribute>
282
283 <xs:attribute name="from" type="xs:string" use="optional">
284 <xs:annotation>
285 <xs:documentation>Specific service provider. The dependency can only be fulfilled by the
286 component with the matching name, or by the service with a matching
287 PID.</xs:documentation>
288 </xs:annotation>
289 </xs:attribute>
290
291 <xs:attribute name="proxy" type="xs:boolean" use="optional">
292 <xs:annotation>
293 <xs:documentation>Enables or Disable the proxy injection (on field
294 injection)</xs:documentation>
295 </xs:annotation>
296 </xs:attribute>
297
298 <xs:attribute name="scope" use="optional">
299 <xs:simpleType>
300 <xs:restriction base="xs:string">
301 <xs:enumeration value="global"/>
302 <xs:enumeration value="composite"/>
303 <xs:enumeration value="composite+global"/>
304 </xs:restriction>
305 </xs:simpleType>
306 </xs:attribute>
307
308 </xs:extension>
309 </xs:complexContent>
310 </xs:complexType>
311 <xs:complexType name="DependencyCallbackType">
312 <xs:annotation>
313 <xs:documentation>Dependency callbacks are used to receive notification when service providers
314 arrive and leave.</xs:documentation>
315 </xs:annotation>
316 <xs:attribute name="method" type="xs:string" use="required">
317 <xs:annotation>
318 <xs:documentation>Method to call</xs:documentation>
319 </xs:annotation>
320 </xs:attribute>
321 <xs:attribute name="type" use="required">
322 <xs:annotation>
323 <xs:documentation> Type of callback (bind, unbind, or updated). Bind means that the method
324 will be called when a provider arrives. Unbind means that the method will be called when a
325 provider leaves. Updated means that a service was modified but is still valid for the
326 service dependency. </xs:documentation>
327 </xs:annotation>
328 <xs:simpleType>
329 <xs:restriction base="xs:string">
330 <xs:enumeration value="bind"/>
331 <xs:enumeration value="unbind"/>
332 <xs:enumeration value="modified"/>
333 </xs:restriction>
334 </xs:simpleType>
335 </xs:attribute>
336 </xs:complexType>
337 <xs:complexType name="CallbackType">
338 <xs:annotation>
339 <xs:documentation>Lifecycle Callback. Allows a POJO to be notified when the instance becomes
340 valid or invalid.</xs:documentation>
341 </xs:annotation>
342 <xs:attribute name="method" type="xs:string" use="required">
343 <xs:annotation>
344 <xs:documentation>Specifies the method to call on the transition.</xs:documentation>
345 </xs:annotation>
346 </xs:attribute>
347 <xs:attribute name="transition" use="required">
348 <xs:annotation>
349 <xs:documentation>Specifies the transition when the callback needs to be
350 invoked.</xs:documentation>
351 </xs:annotation>
352 <xs:simpleType>
353 <xs:annotation>
354 <xs:documentation>Lifecycle transition state. "validate" means that the component's
355 instance was invalid and becomes valid, "invalidate" means that the component's intance
356 was valid and becomes invalid.</xs:documentation>
357 </xs:annotation>
358 <xs:restriction base="xs:string">
359 <xs:enumeration value="validate"/>
360 <xs:enumeration value="invalidate"/>
361 </xs:restriction>
362 </xs:simpleType>
363 </xs:attribute>
364 </xs:complexType>
365 <xs:element name="provides" type="ProvidesType" id="provides"/>
366 <xs:complexType name="ProvidesType">
367 <xs:annotation>
368 <xs:documentation>Provided service(s) description.</xs:documentation>
369 </xs:annotation>
370 <xs:sequence minOccurs="0" maxOccurs="unbounded">
371 <xs:choice>
372 <xs:element name="property" type="PropertyType">
373 <xs:annotation>
374 <xs:documentation>List of service specific properties.</xs:documentation>
375 </xs:annotation>
376 </xs:element>
377 <xs:element name="controller" minOccurs="0" maxOccurs="1" type="ServiceControllerType">
378 <xs:annotation>
379 <xs:documentation>Service Controller impacting the current provided
380 service</xs:documentation>
381 </xs:annotation>
382 </xs:element>
383 </xs:choice>
384 </xs:sequence>
385 <xs:attribute name="interface" type="xs:string" use="prohibited">
386 <xs:annotation>
387 <xs:documentation>Deprecated attribute, use 'specifications' instead of
388 'interface'</xs:documentation>
389 </xs:annotation>
390 </xs:attribute>
391 <xs:attribute name="specifications" type="xs:string" use="optional">
392 <xs:annotation>
393 <xs:documentation>The list of service specifications (i.e. interfaces) to expose. By
394 default, all interfaces implemented by the component implementation class are
395 published.</xs:documentation>
396 </xs:annotation>
397 </xs:attribute>
398 <xs:attribute name="factory" type="xs:string" use="prohibited">
399 <xs:annotation>
400 <xs:documentation>Use 'strategy' instead of 'factory'</xs:documentation>
401 </xs:annotation>
402 </xs:attribute>
403 <xs:attribute name="strategy" type="xs:string" use="optional">
404 <xs:annotation>
405 <xs:documentation>POJO creation strategy. By default, the POJO object is created once
406 (singleton). If the factory is set to "SERVICE", the creation policy follows the OSGi
407 service factory policy (one object object per asking bundle). INSTANCE allows creating one
408 different POJO object per asking instance. Finally, a custom strategy can be used by
409 specifying the qualified name of the class extending CreationPolicy</xs:documentation>
410 </xs:annotation>
411 </xs:attribute>
412 <xs:attribute name="post-registration" type="xs:string" use="optional">
413 <xs:annotation>
414 <xs:documentation>Defines a callback called after the service registration. The callback takes a ServiceReference
415 as parameter</xs:documentation>
416 </xs:annotation>
417 </xs:attribute>
418 <xs:attribute name="post-unregistration" type="xs:string" use="optional">
419 <xs:annotation>
420 <xs:documentation>Defines a callback called after the service unregistration. The callback takes a ServiceReference
421 as parameter</xs:documentation>
422 </xs:annotation>
423 </xs:attribute>
424 </xs:complexType>
425 <xs:complexType name="ServiceControllerType">
426 <xs:annotation>
427 <xs:documentation> Defines a service controller. </xs:documentation>
428 </xs:annotation>
429 <xs:attribute name="field" type="xs:string" use="required">
430 <xs:annotation>
431 <xs:documentation> Field of the controller </xs:documentation>
432 </xs:annotation>
433 </xs:attribute>
434 <xs:attribute name="value" type="xs:string" use="optional">
435 <xs:annotation>
436 <xs:documentation> Intiail value of the controller </xs:documentation>
437 </xs:annotation>
438 </xs:attribute>
439 </xs:complexType>
440 <xs:complexType name="PropertyType">
441 <xs:annotation>
442 <xs:documentation> Defines a component property. </xs:documentation>
443 </xs:annotation>
444 <xs:attribute name="field" type="xs:string" use="optional">
445 <xs:annotation>
446 <xs:documentation> Field of the property </xs:documentation>
447 </xs:annotation>
448 </xs:attribute>
449 <xs:attribute name="method" type="xs:string" use="optional">
450 <xs:annotation>
451 <xs:documentation> Setter method of the property. This method is called to inject property
452 value. </xs:documentation>
453 </xs:annotation>
454 </xs:attribute>
455 <xs:attribute name="name" type="xs:string" use="optional">
456 <xs:annotation>
457 <xs:documentation> Name of the property. </xs:documentation>
458 </xs:annotation>
459 </xs:attribute>
460 <xs:attribute name="value" type="xs:string" use="optional">
461 <xs:annotation>
462 <xs:documentation> Default value of the property. </xs:documentation>
463 </xs:annotation>
464 </xs:attribute>
465 <xs:attribute name="type" type="xs:string" use="optional">
466 <xs:annotation>
467 <xs:documentation> Type of the property. </xs:documentation>
468 </xs:annotation>
469 </xs:attribute>
470 <xs:attribute name="mandatory" type="xs:boolean" use="optional" default="false">
471 <xs:annotation>
472 <xs:documentation>Set the property as mandatory. A mandatory property MUST receive a value
473 either in the component type description or in the instance configuration. Properties are
474 optional by default.</xs:documentation>
475 </xs:annotation>
476 </xs:attribute>
477 </xs:complexType>
478 <xs:element name="callback" type="CallbackType" id="callback"/>
479 <xs:element name="controller" type="ControllerType" id="controller">
480 <xs:annotation>
481 <xs:documentation/>
482 </xs:annotation>
483 </xs:element>
484 <xs:element name="requires" type="RequiresType" id="requires"/>
485 <xs:element name="component" type="ComponentType" id="component"/>
486 <xs:element name="handler" type="HandlerType" id="handler"/>
487 <xs:element name="instance" type="InstanceType" id="instance"/>
488
489 <xs:element name="properties" type="PropertiesType" id="properties"/>
490 <xs:complexType name="PropertiesType">
491 <xs:annotation>
492 <xs:documentation>List of component, instance or service properties. This field will receive
493 the property value.</xs:documentation>
494 </xs:annotation>
495 <xs:sequence minOccurs="0" maxOccurs="unbounded">
496 <xs:element name="property" type="PropertyType">
497 <xs:annotation>
498 <xs:documentation>The list of properties.</xs:documentation>
499 </xs:annotation>
500 </xs:element>
501 </xs:sequence>
502 <xs:attribute name="propagation" type="xs:boolean" use="optional">
503 <xs:annotation>
504 <xs:documentation>Propagation of the component properties to the provided services. If this
505 parameter is set to "true", each time properties are reconfigured, they are propagated to
506 each service published by the component.</xs:documentation>
507 </xs:annotation>
508 </xs:attribute>
509 <xs:attribute name="pid" type="xs:string" use="optional">
510 <xs:annotation>
511 <xs:documentation>Unique identifier used to reconfigure components properties (via Managed
512 Services) with the Configuration Admin.</xs:documentation>
513 </xs:annotation>
514 </xs:attribute>
515 <xs:attribute name="updated" type="xs:string" use="optional">
516 <xs:annotation>
517 <xs:documentation>Method called when a reconfiguration is done</xs:documentation>
518 </xs:annotation>
519 </xs:attribute>
520 </xs:complexType>
521
522 <xs:complexType name="ServiceDependencyType">
523 <xs:attribute name="specification" type="xs:string" use="optional">
524 <xs:annotation>
525 <xs:documentation>The specification describing the required service type. This attribute is
526 needed only when using aggregate dependencies with field injection and when the type of
527 this field is a list, vector, collection and set.</xs:documentation>
528 </xs:annotation>
529 </xs:attribute>
530 <xs:attribute name="optional" type="xs:boolean" use="optional">
531 <xs:annotation>
532 <xs:documentation>Sets the service dependency optionality</xs:documentation>
533 </xs:annotation>
534 </xs:attribute>
535 <xs:attribute name="aggregate" type="xs:boolean" use="optional">
536 <xs:annotation>
537 <xs:documentation>Sets the service dependency cardinality.</xs:documentation>
538 </xs:annotation>
539 </xs:attribute>
540 <xs:attribute name="policy" use="optional">
541 <xs:annotation>
542 <xs:documentation>Sets the binding policy of the dependency. Three policies are supported.
543 The dynamic policy supports service providers dynamism. The static policy freezes the
544 provider set as soon as the dependency is used. The dynamic-priority policy is an
545 extension of the dynamic policy, but providers are ranked.</xs:documentation>
546 </xs:annotation>
547 <xs:simpleType>
548 <xs:restriction base="xs:string">
549 <xs:enumeration value="dynamic"/>
550 <xs:enumeration value="static"/>
551 <xs:enumeration value="dynamic-priority"/>
552 </xs:restriction>
553 </xs:simpleType>
554 </xs:attribute>
555 <xs:attribute name="comparator" type="xs:string" use="optional">
556 <xs:annotation>
557 <xs:documentation>The comparator attribute allows specifying the class used to compare
558 providers. This class must implemented the java.util.Comparator class and must support the
559 comparison of service references.</xs:documentation>
560 </xs:annotation>
561 </xs:attribute>
562 <xs:attribute name="filter" type="xs:string" use="optional">
563 <xs:annotation>
564 <xs:documentation>LDAP filter used to filter providers</xs:documentation>
565 </xs:annotation>
566 </xs:attribute>
567 <xs:attribute name="id" type="xs:string" use="optional">
568 <xs:annotation>
569 <xs:documentation>id of the service dependency. The id allows to indentify and to refert to
570 this dependency.</xs:documentation>
571 </xs:annotation>
572 </xs:attribute>
573 </xs:complexType>
574
575 <xs:complexType name="ControllerType">
576 <xs:annotation>
577 <xs:documentation>Specifies the lifecycle controller of a component, which allows to validate
578 or invalidate component instances.</xs:documentation>
579 </xs:annotation>
580 <xs:attribute name="field" type="xs:string" use="required">
581 <xs:annotation>
582 <xs:documentation>The name of the component lifecycle controller field. The type of the
583 specified field must be boolean. Setting the value of the specified field to "true" means
584 the validation of the component instance while setting it to "false" means the
585 invalidation of the component instance.</xs:documentation>
586 </xs:annotation>
587 </xs:attribute>
588 </xs:complexType>
589</xs:schema>