<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.springframework.org/schema/integration/jmx" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:beans="http://www.springframework.org/schema/beans" xmlns:tool="http://www.springframework.org/schema/tool"
	xmlns:integration="http://www.springframework.org/schema/integration" targetNamespace="http://www.springframework.org/schema/integration/jmx"
	elementFormDefault="qualified" attributeFormDefault="unqualified">

	<xsd:import namespace="http://www.springframework.org/schema/beans" />
	<xsd:import namespace="http://www.springframework.org/schema/tool" />
	<xsd:import namespace="http://www.springframework.org/schema/integration" schemaLocation="http://www.springframework.org/schema/integration/spring-integration-2.1.xsd" />

	<xsd:annotation>
		<xsd:documentation><![CDATA[
	Defines the configuration elements for Spring Integration's JMX adapters.
		]]></xsd:documentation>
	</xsd:annotation>

	<xsd:element name="attribute-polling-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
				Defines an inbound Channel Adapter that polls for JMX attribute values.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="adapterType">
					<xsd:sequence minOccurs="0" maxOccurs="1">
						<xsd:element ref="integration:poller" />
					</xsd:sequence>
					<xsd:attribute name="attribute-name" type="xsd:string" use="required" />
					<xsd:attribute name="auto-startup" type="xsd:string" default="true" />
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="operation-invoking-outbound-gateway">
		<xsd:annotation>
			<xsd:documentation>
				Defines an outbound Gateway which allows for Message-driven invocation of managed operations that
				return values
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="operationInvokingType">
					<xsd:attribute name="request-channel" type="xsd:string" use="required" />
					<xsd:attribute name="reply-channel" type="xsd:string" use="optional" />
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="operation-invoking-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
				Defines an outbound Channel Adapter for invoking JMX operations.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="operationInvokingType">
					<xsd:attribute name="channel" type="xsd:string" use="optional" />
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="notification-listening-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
				Defines an inbound Channel Adapter that listens for JMX notifications.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="adapterType">
					<xsd:attribute name="notification-filter" type="xsd:string" use="optional" />
					<xsd:attribute name="handback" type="xsd:string" use="optional" />
					<xsd:attribute name="send-timeout" type="xsd:string" use="optional" />
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="notification-publishing-channel-adapter">
		<xsd:annotation>
			<xsd:documentation>
				Defines an outbound Channel Adapter that publishes JMX notifications.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="adapterType">
					<xsd:attribute name="default-notification-type" type="xsd:string" use="optional" />
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="mbean-export">
		<xsd:annotation>
			<xsd:documentation>
				Exports Message Channels and Endpoints as MBeans.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="mbeanServerIdentifyerType">
					<xsd:attribute name="default-domain" use="optional">
						<xsd:annotation>
							<xsd:documentation>
								The domain name for the MBeans exported by this Exporter.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="object-name-static-properties" use="optional">
						<xsd:annotation>
							<xsd:appinfo>
								<tool:annotation kind="ref">
									<tool:expected-type type="java.util.Properties" />
								</tool:annotation>
							</xsd:appinfo>
							<xsd:documentation>
								Static object properties to be used for this domain.  These properties are appended to
								the ObjectName of all MBeans registered by this component.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
					<xsd:attribute name="managed-components" use="optional">
						<xsd:annotation>
							<xsd:documentation>
								Comma separated list of simple patterns for component names to register (defaults to '*').
								The pattern is applied to all components before they are registered, looking for a match on
								the 'name' property of the ObjectName.  A MessageChannel and a MessageHandler (for instance)
								can share a name because they have a different type, so in that case they would either both
								be included or both excluded.
							</xsd:documentation>
						</xsd:annotation>
					</xsd:attribute>
				</xsd:extension>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>

	<xsd:complexType name="adapterType">
		<xsd:annotation>
			<xsd:documentation>
				Defines inbound operation invoking type 
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="mbeanServerIdentifyerType">
				<xsd:attribute name="channel" type="xsd:string" />
				<xsd:attribute name="object-name" type="xsd:string" use="required" />
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="operationInvokingType">
		<xsd:annotation>
			<xsd:documentation>
				Defines outbound operation invoking type 
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="mbeanServerIdentifyerType">
				<xsd:attribute name="object-name" type="xsd:string" use="required" />
				<xsd:attribute name="operation-name" type="xsd:string" use="required" />
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="mbeanServerIdentifyerType">
		<xsd:attribute name="id" type="xsd:string" use="optional" />
		<xsd:attribute name="server" type="xsd:string" default="mbeanServer">
			<xsd:annotation>
				<xsd:documentation>
					Defines the name of the MBeanServer bean to connect to.
					</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

</xsd:schema>