<!--
  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:attribute name="version" type="xs:string" use="optional">
          <xs:annotation>
            <xs:documentation>The version of the factory to use.</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: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 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:attribute name="version" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation>Set the version of this component type</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="proxy" type="xs:boolean" use="optional">
          <xs:annotation>
            <xs:documentation>Enables or Disable the proxy injection (on field
              injection)</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 value="composite"/>
              <xs:enumeration value="composite+global"/>
            </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, unbind, or updated). Bind means that the method
          will be called when a provider arrives. Unbind means that the method will be called when a
          provider leaves. Updated means that a service was modified but is still valid for the
          service dependency. </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="bind"/>
          <xs:enumeration value="unbind"/>
          <xs:enumeration value="modified"/>
        </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 value="invalidate"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
  <xs:element name="provides" type="ProvidesType" id="provides"/>
  <xs:complexType name="ProvidesType">
    <xs:annotation>
      <xs:documentation>Provided service(s) description.</xs:documentation>
    </xs:annotation>
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:choice>
      <xs:element name="property" type="PropertyType">
        <xs:annotation>
          <xs:documentation>List of service specific properties.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="controller" minOccurs="0" maxOccurs="1" type="ServiceControllerType">
          <xs:annotation>
            <xs:documentation>Service Controller impacting the current provided
              service</xs:documentation>
          </xs:annotation>
       </xs:element>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="interface" type="xs:string" use="prohibited">
      <xs:annotation>
        <xs:documentation>Deprecated attribute, use 'specifications' instead of
          'interface'</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="specifications" type="xs:string" use="optional">
      <xs:annotation>
        <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>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="factory" type="xs:string" use="prohibited">
      <xs:annotation>
        <xs:documentation>Use 'strategy' instead of 'factory'</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="strategy" type="xs:string" use="optional">
      <xs:annotation>
        <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). 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>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="post-registration" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation>Defines a callback called after the service registration. The callback takes a ServiceReference
        as parameter</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="post-unregistration" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation>Defines a callback called after the service unregistration. The callback takes a ServiceReference
        as parameter</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="ServiceControllerType">
    <xs:annotation>
      <xs:documentation> Defines a service controller. </xs:documentation>
    </xs:annotation>
    <xs:attribute name="field" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation> Field of the controller </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation> Intiail value of the controller </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 name="controller" type="ControllerType" id="controller">
    <xs:annotation>
      <xs:documentation/>
    </xs:annotation>
  </xs:element>
  <xs:element name="requires" type="RequiresType" id="requires"/>
  <xs:element name="component" type="ComponentType" id="component"/>
  <xs:element name="handler" type="HandlerType" id="handler"/>
  <xs:element name="instance" type="InstanceType" id="instance"/>

  <xs:element name="properties" type="PropertiesType" id="properties"/>
  <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:attribute name="updated" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation>Method called when a reconfiguration is done</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 value="static"/>
          <xs:enumeration value="dynamic-priority"/>
        </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>
