<?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="migrateTo121" class="org.apache.unomi.shell.migration.impl.MigrationTo121"/>
    <bean id="migrateTo122" class="org.apache.unomi.shell.migration.impl.MigrationTo122"/>
    <bean id="migrateTo150" class="org.apache.unomi.shell.migration.impl.MigrationTo150"/>
    <service ref="migrateTo121" interface="org.apache.unomi.shell.migration.Migration" />
    <service ref="migrateTo122" interface="org.apache.unomi.shell.migration.Migration" />
    <service ref="migrateTo150" interface="org.apache.unomi.shell.migration.Migration" />

    <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.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.web-tracker-wab</value>
                <value>org.apache.unomi.cdp-graphql-api-impl</value>
            </list>
        </property>
        <property name="bundleContext" ref="blueprintBundleContext"/>
    </bean>
    <service id="unomiManagementService" ref="unomiManagementServiceImpl" interface="org.apache.unomi.shell.services.UnomiManagementService" />

</blueprint>
