<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--

      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.
-->
<features name="spring-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">

    <!-- NB: this file is not the one really used. This file is used by the karaf-maven-plugin to define the start-level of bundles in the generated feature.xml -->

    <repository>mvn:org.apache.karaf.features/standard/${project.version}/xml/features</repository>

    <!-- Spring 5.3.x support -->

    <feature name="spring" description="Spring 5.3.x support" version="${spring53.version}">
        <bundle dependency="true" start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/${aopalliance.bundle.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/${spring53.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/${spring53.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/${spring53.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/${spring53.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/${spring53.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/${spring53.version}</bundle>
    </feature>

    <feature name="spring-aspects" description="Spring 5.3.x AOP support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring</feature>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aspects/${spring53.version}</bundle>
    </feature>

    <feature name="spring-instrument" description="Spring 5.3.x Instrument support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring</feature>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-instrument/${spring53.version}</bundle>
    </feature>

    <feature name="spring-jdbc" description="Spring 5.3.x JDBC support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring-tx</feature>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jdbc/${spring53.version}</bundle>
    </feature>

    <feature name="spring-jms" description="Spring 5.3.x JMS support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring-tx</feature>
        <bundle dependency="true" start-level="10">mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo.jta-spec.version}</bundle>
        <bundle dependency="true" start-level="10">mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo.jms-spec.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jms/${spring53.version}</bundle>
    </feature>

    <feature name="spring-messaging" description="Spring 5.3.x Messaging support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring</feature>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-messaging/${spring53.version}</bundle>
    </feature>

    <feature name="spring-test" description="Spring 5.3.x Test support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring</feature>
        <bundle dependency="true">mvn:javax.websocket/javax.websocket-api/1.1</bundle>
        <bundle dependency="true">mvn:org.apache.httpcomponents/httpcore-osgi/4.4.6</bundle>
        <bundle dependency="true">mvn:org.apache.httpcomponents/httpclient-osgi/4.5.2</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-test/${spring53.version}</bundle>
    </feature>

    <feature name="spring-orm" description="Spring 5.3.x ORM support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring-jdbc</feature>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-orm/${spring53.version}</bundle>
    </feature>

    <feature name="spring-oxm" description="Spring 5.3.x OXM support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring</feature>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-oxm/${spring53.version}</bundle>
    </feature>

    <feature name="spring-tx" description="Spring 5.3.x Transaction (TX) support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring</feature>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-tx/${spring53.version}</bundle>
    </feature>

    <feature name="spring-web" description="Spring 5.3.x Web support" version="${spring53.version}">
        <feature version="[${spring53.version},5.4)">spring</feature>
        <feature>http</feature>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-web/${spring53.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-webmvc/${spring53.version}</bundle>
    </feature>

    <feature name="spring-websocket" description="Spring 5.3.x WebSocket support" version="${spring53.version}">
        <bundle dependency="true">mvn:javax.websocket/javax.websocket-api/1.1</bundle>
        <feature version="[${spring53.version},5.4)">spring-web</feature>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-websocket/${spring53.version}</bundle>
    </feature>

    <!-- Spring Security -->

    <feature name="spring-security" description="Spring Security 5.4.x support" version="${spring.security54.version}">
        <feature>war</feature>
        <feature version="[5.2,6)">spring-jdbc</feature>
        <feature version="[5.2,6)">spring-tx</feature>
        <feature version="[5.2,6)">spring-web</feature>
        <bundle dependency="true">mvn:javax.annotation/javax.annotation-api/1.3</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security54.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-config/${spring.security54.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-web/${spring.security54.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-acl/${spring.security54.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-taglibs/${spring.security54.version}</bundle>
    </feature>

    <feature name="spring-security" description="Spring Security 5.1.x support" version="${spring.security51.version}">
        <feature>war</feature>
        <feature version="[5.1,6)">spring-jdbc</feature>
        <feature version="[5.1,6)">spring-tx</feature>
        <feature version="[5.1,6)">spring-web</feature>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
        <bundle dependency="true">mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
        <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security51.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-config/${spring.security51.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-web/${spring.security51.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-acl/${spring.security51.version}</bundle>
        <bundle start-level="30">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-taglibs/${spring.security51.version}</bundle>
    </feature>

    <!-- Aries Blueprint Spring support -->

    <feature name="aries-blueprint-spring">
        <feature>aries-blueprint</feature>
        <feature>spring</feature>
        <bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.spring/${aries.blueprint.spring.version}</bundle>
        <bundle>mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.spring.extender/${aries.blueprint.spring.extender.version}</bundle>
    </feature>

</features>
