<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!--

        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.
    -->
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.servicemix.examples</groupId>
        <artifactId>drools</artifactId>
        <version>7.0.0</version>
    </parent>

    <artifactId>drools-camel-cxf-server</artifactId>
    <name>Apache ServiceMix :: Examples :: Drools :: Camel CXF Server</name>
    <packaging>bundle</packaging>

    <properties>
        <osgi.private.package>
            org.apache.servicemix.examples.drools.camel.cxf.server.osgi,
            org.apache.servicemix.examples.drools.camel.cxf.server.model</osgi.private.package>
        <osgi.import.package>
            org.osgi.service.blueprint,
            org.slf4j;version="[1.6,2)",
            org.kie.jax.rs;version="[6.0,7.0)",
            org.kie.camel.component;version="[6.0,7.0)",
            org.kie.api.event.rule;version="[6.0,7.0)",
            org.kie.api.command;version="[6.0,7.0)",
            org.kie.aries.blueprint.factorybeans;version="[6.0,7.0)",
            org.apache.camel;version="[2.16,2.17)",

            org.kie.internal.command;version="[6.0,7)",
            
            org.kie.internal.runtime.helper;version="[6.0,7)",
            org.drools.core.runtime.impl;version="[6.0,7)",
            org.drools.core.runtime.rule.impl;version="[6.0,7)",
            org.drools.core.command.runtime.process;version="[6.0,7)",
            org.drools.core.common;version="[6.0,7)",
            org.drools.core.command.runtime;version="[6.0,7)",
            org.drools.core.command.runtime.rule;version="[6.0,7)",
            org.drools.core.impl;version="[6.0,7)",
            org.drools.core.runtime.help.impl;version="[6.0,7)",
            com.thoughtworks.xstream;version="1.4",
            javax.ws.rs.ext,
            javax.ws.rs.core,
            javax.ws.rs
        </osgi.import.package>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-api</artifactId>
        </dependency>

        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-camel</artifactId>
        </dependency>

        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
        </dependency>


        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-cxf</artifactId>
        </dependency>

    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>