<?xml version="1.0" encoding="utf-8"?>
<!--
 ~ Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
 ~
 ~ WSO2 Inc. 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../../feature.properties
 ~ KIND, either express or implied.  See the License for the
 ~ specific language governing permissions and limitations
 ~ under the License.
 -->
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.stratos</groupId>
        <artifactId>cep-features</artifactId>
        <version>4.1.5</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>org.apache.stratos.event.processor.server.feature</artifactId>
    <packaging>pom</packaging>
    <name>Apache Stratos - Event Processor Server Feature</name>
    <description>This feature contains the core bundles required for Back-end Event Processor functionality
    </description>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>src/main/resources</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>resources</directory>
                                    <includes>
                                        <include>build.properties</include>
                                        <!--<include>conf/broker-manager-config.xml</include>-->
                                        <!--<include>conf/broker-manager-config.xsd</include>-->
                                        <include>p2.inf</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.wso2.maven</groupId>
                <artifactId>carbon-p2-plugin</artifactId>
                <executions>
                    <execution>
                        <id>4-p2-feature-generation</id>
                        <phase>package</phase>
                        <goals>
                            <goal>p2-feature-gen</goal>
                        </goals>
                        <configuration>
                            <id>org.apache.stratos.event.processor.server</id>
                            <propertiesFile>../../../../etc/feature.properties</propertiesFile>
                            <adviceFile>
                                <properties>
                                    <propertyDef>org.wso2.carbon.p2.category.type:server
                                    </propertyDef>
                                    <propertyDef>org.eclipse.equinox.p2.type.group:false
                                    </propertyDef>
                                </properties>
                            </adviceFile>
                            <bundles>
                                <bundleDef>
                                    org.wso2.carbon:org.wso2.carbon.event.processor.core:${siddhi.event.processor.version}
                                </bundleDef>
                                <bundleDef>
                                    org.wso2.carbon:org.wso2.carbon.event.processor.admin:${siddhi.event.processor.version}
                                </bundleDef>
                                <bundleDef>
                                    org.wso2.carbon:org.wso2.carbon.event.processor.siddhi.extension:${siddhi.event.processor.version}
                                </bundleDef>
                                <bundleDef>
                                    org.wso2.carbon:org.wso2.carbon.event.processor.api:${siddhi.event.processor.version}
                                </bundleDef>
                                <bundleDef>
                                    org.wso2.siddhi:siddhi-core:${siddhi.version}
                                </bundleDef>
                                <bundleDef>
                                    org.wso2.siddhi:siddhi-api:${siddhi.version}
                                </bundleDef>
                                <bundleDef>
                                    org.wso2.siddhi:siddhi-query:${siddhi.version}
                                </bundleDef>
                            </bundles>
                            <importFeatures>
                                <importFeatureDef>org.wso2.carbon.core.server:${carbon.kernel.version}
                                </importFeatureDef>
                            </importFeatures>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
