<!--
	Licensed to the Apache Software Foundation (ASF) under one
	or more contributor license agreements.  See the NOTICE file
	distributed with this work for additional information
	regarding copyright ownership.  The ASF licenses this file
	to you under the Apache License, Version 2.0 (the
	"License"); you may not use this file except in compliance
	with the License.  You may obtain a copy of the License at
	
	http://www.apache.org/licenses/LICENSE-2.0
	
	Unless required by applicable law or agreed to in writing,
	software distributed under the License is distributed on an
	"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
	KIND, either express or implied.  See the License for the
	specific language governing permissions and limitations
	under the License.
-->
<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:element name="ipojo">
		<xs:complexType>
            <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>
			</xs:choice>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="HandlerType">
        <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"
						processContents="skip">
					</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: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:annotation>
							<xs:documentation>The instance properties.</xs:documentation>
						</xs:annotation></xs:element>
				</xs:sequence>
				<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: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: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: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: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: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: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:annotation>
		</xs:attribute>
		<xs:attribute name="architecture" type="xs:boolean"
			use="optional">
			<xs:annotation>
				<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: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: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="prohibited">
                    <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, use 'specification'.</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">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="global"></xs:enumeration>
							<xs:enumeration value="composite"></xs:enumeration>
							<xs:enumeration value="composite+global"></xs:enumeration>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>

			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DependencyCallbackType">
        <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: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>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</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: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: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: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>
			</xs:simpleType>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="provides" type="ProvidesType" id="provides"></xs:element>
	<xs:complexType name="ProvidesType">
        <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: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: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:attribute name="mandatory" type="xs:boolean" use="optional" default="false">
        	<xs:annotation>
        		<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>
        	</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: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>
	<xs:element name="instance" type="InstanceType" id="instance"></xs:element>

    <xs:element name="properties" type="PropertiesType" id="properties"></xs:element>
	<xs:complexType name="PropertiesType">
        <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: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: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: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>
					<xs:enumeration value="dynamic-priority"></xs:enumeration>
				</xs:restriction>
			</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: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: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>