<?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.
  -->

<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd"
       xmlns="org.apache.felix.ipojo"
       xmlns:jmx="org.apache.felix.ipojo.handlers.jmx">

    <!-- The simple managed component without annotations and with brand new JMX handler syntax -->
    <component classname="org.apache.felix.ipojo.handler.jmx.components.SimpleManagedComponent" immediate="true">
        <!-- Expose field and methods with JMX handler -->
        <jmx:config>
            <jmx:jmxmethod name="getIntegerValue" description="Get the value of the integer"/>
            <jmx:jmxmethod name="setIntegerValue" description="Set the value of the integer"/>
            <jmx:jmxproperty name="integer" field="m_integer" rights="r" notification="true"/>
        </jmx:config>
    </component>

    <!-- The simple managed component without annotations and with brand new JMX handler syntax -->
    <component classname="org.apache.felix.ipojo.handler.jmx.components.SimpleManagedComponent" immediate="true" name="org.apache.felix.ipojo.handler.jmx.components.SimpleManagedComponentDeprecated">
        <!-- Expose field and methods with JMX handler -->
        <jmx:config>
            <jmx:method name="getIntegerValue" description="Get the value of the integer"/>
            <jmx:method name="setIntegerValue" description="Set the value of the integer"/>
            <jmx:property name="integer" field="m_integer" rights="r" notification="true"/>
        </jmx:config>
    </component>

</ipojo>