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

-->
<features>
    <repository>mvn:org.apache.camel.karaf/apache-camel/${project.version}/xml/features</repository>
    
    <feature name='activemq-feature' version='${project.version}'>
       <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle>
       <bundle>mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/1.1.1</bundle>
       <bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-management_1.1_spec/1.0.1</bundle>
       <bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.5_spec/2.0.0</bundle>
       <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-pool/1.5.4_1</bundle>
       <bundle>mvn:org.apache.xbean/xbean-spring/3.4.3</bundle>
       <bundle>mvn:org.apache.activemq/kahadb/${activemq-version}</bundle>
       <bundle>mvn:org.apache.activemq/activemq-core/${activemq-version}</bundle>
       <bundle>mvn:org.apache.activemq/activemq-ra/${activemq-version}</bundle>
       <bundle>mvn:org.apache.activemq/activemq-pool/${activemq-version}</bundle>
       <bundle>mvn:org.apache.activemq/activemq-camel/${activemq-version}</bundle>
    </feature>
    
    <feature name='camel-example-spring-xquery' version='${project.version}'>
        <feature version="${project.version}">camel</feature>
        <feature version="${project.version}">camel-jms</feature>
        <feature version="${project.version}">camel-saxon</feature>
        <bundle>mvn:org.apache.camel/camel-example-spring-xquery/${project.version}</bundle>
    </feature>

</features>