<?xml version="1.0" encoding="UTF-8"?>
<!--
  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 xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="urn:org.apache.camel.component:jmx"
    xmlns:tns="urn:org.apache.camel.component:jmx" elementFormDefault="qualified"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    jxb:version="1.0">
    <xs:annotation>
        <xs:appinfo>
            <jxb:schemaBindings>
                <jxb:package name="org.apache.camel.component.jmx.jaxb"/>
            </jxb:schemaBindings>
        </xs:appinfo>
    </xs:annotation>

    <xs:complexType name="notificationEventType">
        <xs:annotation>
            <xs:documentation>
                Base type that includes all of the elements for a 
                javax.management.Notification
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="source" type="xs:string"/>
            <xs:element name="message" type="xs:string"/>
            <xs:element name="sequence" type="xs:long"/>
            <xs:element name="timestamp" type="xs:long"/>
            <xs:element name="dateTime" type="xs:dateTime"/>
            <xs:element name="type" type="xs:string"/>
            <xs:element name="userData" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:element name="NotificationEvent" type="tns:notificationEventType">
        <xs:annotation>
            <xs:documentation>
                Models a javax.management.Notification
            </xs:documentation>
        </xs:annotation>
    </xs:element>

    <xs:element name="AttributeChangeNotification">
        <xs:annotation>
            <xs:documentation>
                Models a javax.management.AttributeChangeNotification
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="tns:notificationEventType">
                    <xs:sequence>
                        <xs:element name="attributeName" type="xs:string"/>
                        <xs:element name="attributeType" type="xs:string"/>
                        <xs:element name="newValue" type="xs:string" nillable="true">
                            <xs:annotation>
                                <xs:documentation>
                                    Value will be converted to a string. xsi:nil is used
                                    to convey a null value
                                </xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element name="oldValue" type="xs:string" nillable="true">
                            <xs:annotation>
                                <xs:documentation>
                                    Value will be converted to a string. xsi:nil is used
                                    to convey a null value
                                </xs:documentation>
                            </xs:annotation>
                        </xs:element>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="JMXConnectionNotification">
        <xs:annotation>
            <xs:documentation>
                Models a javax.management.JMXConnectionNotification
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="tns:notificationEventType">
                    <xs:sequence>
                        <xs:element name="connectionId" type="xs:string"/>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="MBeanServerNotification">
        <xs:annotation>
            <xs:documentation>
                Models a javax.management.MBeanServerNotification
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="tns:notificationEventType">
                    <xs:sequence>
                        <xs:element name="MBeanName" type="xs:string"/>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="MonitorNotification">
        <xs:annotation>
            <xs:documentation>
                Models a javax.management.MonitorNotification
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="tns:notificationEventType">
                    <xs:sequence>
                        <xs:element name="derivedGauge" type="xs:string"/>
                        <xs:element name="observedAttribute" type="xs:string"/>
                        <xs:element name="observedObject" type="xs:string"/>
                        <xs:element name="trigger" type="xs:string"/>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>

    <xs:element name="RelationNotification">
        <xs:annotation>
            <xs:documentation>
                Models a javax.management.RelationNotification
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="tns:notificationEventType">
                    <xs:sequence>
                        <xs:element name="objectName" type="xs:string"/>
                        <xs:element name="relationId" type="xs:string"/>
                        <xs:element name="relationTypeName" type="xs:string"/>
                        <xs:element name="roleName" type="xs:string" minOccurs="0"/>
                        <xs:element name="MBeansToUnregister" minOccurs="0" type="tns:objectNamesType"/>
                        <xs:element name="newRoleValue" minOccurs="0" type="tns:objectNamesType"/>
                        <xs:element name="oldRoleValue" minOccurs="0" type="tns:objectNamesType"/>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="objectNamesType">
        <xs:annotation>
            <xs:documentation>
                List of object names used in RelationNotification
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="objectName" type="xs:string"
                maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:element name="TimerNotification">
        <xs:annotation>
            <xs:documentation>
                Models a javax.management.TimerNotification
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="tns:notificationEventType">
                    <xs:sequence>
                        <xs:element name="notificationId" type="xs:int"/>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>

</xs:schema>
