<?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>
        <artifactId>karaf</artifactId>
        <groupId>org.apache.karaf</groupId>
        <version>4.3.0.RC1</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

    <groupId>org.apache.karaf.services</groupId>
    <artifactId>org.apache.karaf.services.eventadmin</artifactId>
    <packaging>bundle</packaging>
    <name>Apache Karaf :: OSGi Services :: EventAdmin</name>
    <description>EventAdmin Service</description>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>
                            ${project.artifactId}
                        </Bundle-SymbolicName>
                        <Bundle-Activator>
                            org.apache.felix.eventadmin.impl.Activator
                        </Bundle-Activator>
                        <Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
                        <DynamicImport-Package>
                            org.osgi.service.log;version="[1.3,2)"
                        </DynamicImport-Package>
                        <Import-Package>
                            <!--
                                Configuration Admin is optional and if it is
                                present, version 1.2 (from R4.0) is enough
                            -->
                            org.osgi.service.cm;version="[1.2,2)";resolution:=optional,

                            <!--
                                Metatype is optional and if it is
                                present, version 1.1 (from R4.1) is enough
                            -->
                            org.osgi.service.metatype;version="[1.1,2)";resolution:=optional,

                            <!--
                                Optional import to back the dynamic import on org.osgi.service.log
                            -->
                            org.osgi.service.log;version="[1.3,2)";resolution:=optional,

                            <!-- default -->
                            org.osgi.framework;version="[1,3)",
                            *
                        </Import-Package>
                        <Export-Package>org.osgi.service.event</Export-Package>
                        <Private-Package>
                            org.apache.felix.eventadmin.impl.*;-split-package:=merge-first,
                            EDU.oswego.cs.dl.util.concurrent,
                            org.osgi.util.tracker
                        </Private-Package>
                        <Import-Service>
                            org.osgi.service.event.EventHandler;availability:=optional;multiple:=true,
                            org.osgi.service.log.LogService;availability:=optional;multiple:=false,
                            org.osgi.service.log.LogReaderService;availability:=optional;multiple:=false
                        </Import-Service>
                        <Export-Service>
                            org.osgi.service.event.EventAdmin
                        </Export-Service>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>osgi.core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.eventadmin</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>osgi.cmpn</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>
