<?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.
-->
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0" name="org.apache.sling.server.impl.jmx.ManagedRepository">
    <property name="jmx.objectname" value="org.apache.sling:type=Repository"/>
    <property name="repository.config"/>
    <property name="bootstrap.properties"/>
    <property name="service.vendor" value="The Apache Software Foundation"/>
    <service servicefactory="false">
        <provide interface="org.apache.sling.server.jmx.ManagedRepositoryMBean"/>
    </service>
    <reference name="productInfo" interface="org.apache.sling.license.ProductInfoService" cardinality="1..1" policy="static" bind="bindProductInfo" unbind="unbindProductInfo"/>
    <reference name="repository" interface="org.apache.sling.Repository" cardinality="1..1" policy="static" bind="bindRepository" unbind="unbindRepository"/>
    <reference name="backup" interface="org.apache.sling.FileStoreBackupService" cardinality="1..1" policy="static" bind="bindBackup" unbind="unbindBackup"/>
    <reference name="repositoryManagementMBean" interface="org.apache.jackrabbit.oak.api.jmx.RepositoryManagementMBean" cardinality="1..1" policy="static" bind="bindRepositoryManagementMBean" unbind="unbindRepositoryMa
nagementMBean"/>
    <implementation class="org.apache.sling.server.impl.jmx.ManagedRepository"/>
</scr:component>