<?xml version="1.0" encoding="UTF-8"?>
<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</groupId>
        <artifactId>service-engines</artifactId>
        <version>2011.02.2-SNAPSHOT</version>
    </parent>

    <groupId>org.apache.servicemix</groupId>
    <artifactId>servicemix-drools</artifactId>
    <packaging>jbi-component</packaging>
    <name>Apache ServiceMix :: Components :: Drools Service Engine</name>
    <description>
        The ServiceMix Drools component provides JBI integration to the Drools Rules Engine. It can be used to deploy a rules set that will implement a router or an actual service. A router will mostly act as a transparent proxy between the consumer and the target service provider mad will mostly be implemented by the jbi.route(uri) method below. This method creates a new exchange identical to the one received by the component and will send it to the specified destination. You can also send back a Fault if needed. A router can also be implemented by using directly the JBI Apis (available with the jbi helper) by using the provided client.
    </description>

    <repositories>
        <repository>
            <id>jboss</id>
            <url>http://repository.jboss.org/nexus/content/groups/public-jboss</url>
        </repository>
    </repositories>

    <properties>
        <drools.version>5.1.1</drools.version>

        <servicemix.osgi.import>
            !org.apache.servicemix.drools*,
            !META-INF.services.org.apache.xbean.spring.http.servicemix.apache.org.drools,
            org.apache.servicemix.common,
            org.apache.servicemix.common.osgi,
            org.apache.servicemix.executors.impl,
            org.apache.xbean.spring.context.v2,
            org.springframework.beans.factory.xml,
            sun.misc;resolution:=optional,
            *
        </servicemix.osgi.import>
        <servicemix.osgi.dynamic.import>
            javax.*,org.w3c.*,org.xml.*,org.drools.*
        </servicemix.osgi.dynamic.import>
        <servicemix.osgi.export>
            org.apache.servicemix.drools*;version=${project.version},
            META-INF.services.org.apache.xbean.spring.http.servicemix.apache.org.drools
        </servicemix.osgi.export>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.servicemix</groupId>
            <artifactId>servicemix-shared</artifactId>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <version>${drools.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-jci-janino</artifactId>
                </exclusion>
            </exclusions>
        </dependency>        
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-core</artifactId>
            <version>${drools.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>jung</groupId>
                    <artifactId>jung</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>xstream</groupId>
                    <artifactId>xstream</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.thoughtworks.xstream</groupId>
                    <artifactId>xstream</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>xpp3</groupId>
                    <artifactId>xpp3</artifactId>
                </exclusion>
            </exclusions>
        </dependency>        

        <!-- provided -->
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jta_1.1_spec</artifactId>
            <scope>provided</scope>
        </dependency>        
        <dependency>
            <groupId>org.apache.servicemix.specs</groupId>
            <artifactId>org.apache.servicemix.specs.jbi-api-1.0</artifactId>
            <scope>provided</scope>
        </dependency>
        
        <!-- test -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.servicemix</groupId>
            <artifactId>servicemix-core</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-jmx</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- documentation -->
        <dependency>
            <groupId>org.apache.servicemix</groupId>
            <artifactId>servicemix-common</artifactId>
            <classifier>sources</classifier>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.servicemix.tooling</groupId>
                <artifactId>jbi-maven-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <type>service-engine</type>
                    <component>org.apache.servicemix.drools.DroolsComponent</component>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.xbean</groupId>
                <artifactId>maven-xbean-plugin</artifactId>
                <executions>
                    <execution>
                        <configuration>
                            <namespace>http://servicemix.apache.org/drools/1.0</namespace>
                        </configuration>
                        <goals>
                            <goal>mapping</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
