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

<blueprint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">

    <bean id="unomiManagementServiceImpl" class="org.apache.unomi.shell.services.internal.UnomiManagementServiceImpl" init-method="init">
        <property name="bundleSymbolicNames">
            <list>
                <value>org.apache.unomi.lifecycle-watcher</value>
                <value>org.apache.unomi.api</value>
                <value>org.apache.unomi.common</value>
                <value>org.apache.unomi.scripting</value>
                <value>org.apache.unomi.metrics</value>
                <value>org.apache.unomi.persistence-spi</value>
                <value>org.apache.unomi.persistence-elasticsearch-core</value>
                <value>org.apache.unomi.services</value>
                <value>org.apache.unomi.cxs-lists-extension-services</value>
                <value>org.apache.unomi.cxs-lists-extension-rest</value>
                <value>org.apache.unomi.cxs-geonames-services</value>
                <value>org.apache.unomi.cxs-geonames-rest</value>
                <value>org.apache.unomi.cxs-privacy-extension-services</value>
                <value>org.apache.unomi.cxs-privacy-extension-rest</value>
                <value>org.apache.unomi.json-schema-services</value>
                <value>org.apache.unomi.json-schema-rest</value>
                <value>org.apache.unomi.rest</value>
                <value>org.apache.unomi.wab</value>
                <value>org.apache.unomi.plugins-base</value>
                <value>org.apache.unomi.plugins-request</value>
                <value>org.apache.unomi.plugins-mail</value>
                <value>org.apache.unomi.plugins-optimization-test</value>
                <value>org.apache.unomi.cxs-lists-extension-actions</value>
                <value>org.apache.unomi.router-api</value>
                <value>org.apache.unomi.router-core</value>
                <value>org.apache.unomi.router-service</value>
                <value>org.apache.unomi.router-rest</value>
                <value>org.apache.unomi.shell-dev-commands</value>
                <value>org.apache.unomi.groovy-actions-services</value>
                <value>org.apache.unomi.groovy-actions-rest</value>
            </list>
        </property>
        <property name="bundleContext" ref="blueprintBundleContext"/>
    </bean>
    <service id="unomiManagementService" ref="unomiManagementServiceImpl"
             interface="org.apache.unomi.shell.services.UnomiManagementService"/>
</blueprint>
