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

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

    <feature name="karaf-camel-example-common" version="${project.version}">
        <feature prerequisite="true">aries-blueprint</feature>
        <feature>camel-blueprint</feature>
        <feature>camel-jetty</feature>
        <feature>camel-jsonpath</feature>
        <feature>camel-mail</feature>
        <capability>
            osgi.service;objectClass=org.apache.aries.blueprint.NamespaceHandler;osgi.service.blueprint.namespace=http://camel.apache.org/schema/blueprint;effective:=active;
        </capability>
    </feature>

    <feature name="karaf-camel-example-java" version="${project.version}">
        <feature version="${project.version}">karaf-camel-example-common</feature>
        <bundle>mvn:org.apache.karaf.examples/karaf-camel-example-java/${project.version}</bundle>
    </feature>

    <feature name="karaf-camel-example-blueprint" version="${project.version}">
        <feature version="${project.version}">karaf-camel-example-common</feature>
        <bundle>blueprint:mvn:org.apache.karaf.examples/karaf-camel-example-blueprint/${project.version}/xml/route</bundle>
    </feature>

</features>
