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

   Licensed 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="redback-components-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">

  <feature name="redback-apacheds" version="${project.version}" resolver="(obr)">
    <!-- TODO add ApacheDS bundle -->
    <bundle>mvn:org.apache.archiva.redback.components/spring-apacheds/${project.version}</bundle>
  </feature>

  <feature name="redback-cache-api" version="${project.version}" resolver="(obr)">
    <feature>spring</feature>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/${javax-inject.bundle.version}</bundle>
    <bundle dependency="true">mvn:commons-lang/commons-lang/${commons-lang.version}</bundle>
    <bundle>mvn:org.apache.archiva.redback.components.cache/spring-cache-api/${project.version}</bundle>
  </feature>

  <feature name="redback-cache-ehcache" version="${project.version}" resolver="(obr)">
    <feature version="${project.version}">redback-cache-api</feature>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ehcache/${ehcache.bundle.version}</bundle>
    <bundle>mvn:org.apache.archiva.redback.components.cache/spring-cache-ehcache/${project.version}</bundle>
  </feature>

  <feature name="redback-cache-hashmap" version="${project.version}" resolver="(obr)">
    <feature version="${project.version}">redback-cache-api</feature>
    <bundle>mvn:org.apache.archiva.redback.components.cache/spring-cache-hashmap/${project.version}</bundle>
  </feature>

  <feature name="redback-cache-oscache" version="${project.version}" resolver="(obr)">
    <feature version="${project.version}">redback-cache-api</feature>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oscache/${oscache.bundle.version}</bundle>
    <bundle>mvn:org.apache.archiva.redback.components.cache/spring-cache-oscache/${project.version}</bundle>
  </feature>

  <feature name="redback-jdo2" version="${project.version}" resolver="(obr)">
    <bundle dependency="true">mvn:commons-lang/commons-lang/${commons-lang.version}</bundle>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdo2-api/${jdo2-api.bundle.version}</bundle>
    <bundle>mvn:org.apache.archiva.redback.components/spring-jdo2/${project.version}</bundle>
  </feature>

  <feature name="redback-quartz" version="${project.version}" resolver="(obr)">
    <feature>spring</feature>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/${javax-inject.bundle.version}</bundle>
    <bundle dependency="true">mvn:commons-lang/commons-lang/${commons-lang.version}</bundle>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.quartz/${quartz.bundle.version}</bundle>
    <bundle>mvn:org.apache.archiva.redback.components/spring-quartz/${project.version}</bundle>
  </feature>

  <feature name="redback-registry" version="${project.version}" resolver="(obr)">
    <!-- TODO add jackrabbit bundle -->
    <feature>war</feature>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-net/${commons-net.bundle.version}</bundle>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-httpclient/${commons-httpclient.bundle.version}</bundle>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/${jsch.bundle.version}</bundle>
    <bundle dependency="true">mvn:org.apache.commons/commons-vfs2/${commons-vfs2.version}</bundle>
    <bundle dependency="true">mvn:commons-lang/commons-lang/${commons-lang.version}</bundle>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${jdom.bundle.version}</bundle>
    <bundle dependency="true">mvn:commons-jxpath/commons-jxpath/${commons-jxpath.version}</bundle>
    <bundle dependency="true">mvn:org.apache.commons/commons-jexl/${commons-jexl.version}</bundle>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-digester/${commons-digester.bundle.version}</bundle>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/${commons-collections.bundle.version}</bundle>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-codec/${commons-codec.bundle.version}</bundle>
    <bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-beanutils/${commons-beanutils.bundle.version}</bundle>
    <bundle dependency="true">mvn:commons-configuration/commons-configuration/${commons-configuration.version}</bundle>
    <bundle>mvn:org.apache.archiva.redback.components.registry/spring-registry-api/${project.version}</bundle>
    <bundle>mvn:org.apache.archiva.redback.components.registry/spring-registry-commons/${project.version}</bundle>
  </feature>

</features>