<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  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.
-->
<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.sling</groupId>
        <artifactId>sling</artifactId>
        <version>26</version>
        <relativePath />
    </parent>

    <artifactId>org.apache.sling.commons.scheduler</artifactId>
    <packaging>bundle</packaging>
    <version>2.4.15-SNAPSHOT</version>

    <name>Apache Sling Scheduler Support</name>
    <description>
        Support for scheduling.
    </description>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/bundles/commons/scheduler</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/scheduler</developerConnection>
        <url>http://svn.apache.org/viewvc/sling/trunk/bundles/commons/scheduler</url>
    </scm>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-scr-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Private-Package>
                            org.apache.sling.commons.scheduler.impl
                        </Private-Package>
                        <Import-Package>
                            !commonj.work,
                            !com.mchange.v2.c3p0,
                            !javax.ejb,
                            !javax.jms,
                            !javax.mail,
                            !javax.mail.internet,
                            !oracle.sql,
                            !org.jboss.logging,
                            !org.jboss.naming,
                            !org.jboss.system,
                            !org.quartz.jobs,
                            !org.terracotta.toolkit,
                            !org.terracotta.toolkit.atomic,
                            !org.terracotta.toolkit.builder,
                            !org.terracotta.toolkit.cluster,
                            !org.terracotta.toolkit.collections,
                            !org.terracotta.toolkit.concurrent.locks,
                            !org.terracotta.toolkit.config,
                            !org.terracotta.toolkit.rejoin,
                            !org.terracotta.toolkit.internal,
                            !org.terracotta.toolkit.internal.concurrent.locks,
                            !org.terracotta.toolkit.search,
                            !org.terracotta.toolkit.search.attribute,
                            !org.terracotta.toolkit.store,
                            !weblogic.jdbc.jts,
                            !weblogic.jdbc.vendor.oracle,
                            org.apache.sling.discovery;resolution:=optional,
                            org.apache.sling.settings;resolution:=optional,
                            *                        
                        </Import-Package>
                        <DynamicImport-Package>
                            org.apache.sling.discovery;version="[1.0,2)",
                            org.apache.sling.settings;version="[1.0,2)",
                            commonj.work,
                            com.mchange.v2.c3p0,
                            javax.ejb,
                            javax.jms,
                            javax.mail,
                            javax.mail.internet,
                            oracle.sql,
                            org.jboss.logging,
                            org.jboss.naming,
                            org.jboss.system,
                            org.quartz.jobs,
                            org.terracotta.toolkit,
                            org.terracotta.toolkit.atomic,
                            org.terracotta.toolkit.builder,
                            org.terracotta.toolkit.cluster,
                            org.terracotta.toolkit.collections,
                            org.terracotta.toolkit.concurrent.locks,
                            org.terracotta.toolkit.config,
                            org.terracotta.toolkit.internal,
                            org.terracotta.toolkit.internal.concurrent.locks,
                            org.terracotta.toolkit.rejoin,
                            org.terracotta.toolkit.search,
                            org.terracotta.toolkit.search.attribute,
                            org.terracotta.toolkit.store,
                            weblogic.jdbc.jts,
                            weblogic.jdbc.vendor.oracle
                        </DynamicImport-Package>
                        <Embed-Dependency>
                            quartz
                        </Embed-Dependency>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <excludePackageNames>
                        org.apache.sling.commons.scheduler.impl
                    </excludePackageNames>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.scr.annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.compendium</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.commons.threads</artifactId>
            <version>3.2.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.discovery.api</artifactId>
            <version>1.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.settings</artifactId>
            <version>1.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.3</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.testing.osgi-mock</artifactId>
            <version>1.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.discovery.impl</artifactId>
            <version>1.1.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.junit.core</artifactId>
            <version>1.0.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>1.9.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
