<?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.karaf.decanter</groupId>
        <artifactId>appender</artifactId>
        <version>2.10.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <groupId>org.apache.karaf.decanter.appender</groupId>
    <artifactId>org.apache.karaf.decanter.appender.influxdb</artifactId>
    <packaging>bundle</packaging>
    <name>Apache Karaf :: Decanter :: Appender :: InfluxDB</name>

    <dependencies>
        <dependency>
            <groupId>org.apache.karaf.decanter</groupId>
            <artifactId>org.apache.karaf.decanter.api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.karaf.decanter.appender</groupId>
            <artifactId>org.apache.karaf.decanter.appender.utils</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>

        <dependency>
            <groupId>org.influxdb</groupId>
            <artifactId>influxdb-java</artifactId>
            <version>2.22</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <inherited>true</inherited>
                <extensions>true</extensions>
                <configuration>
                    <obrRepository>NONE</obrRepository>
                    <instructions>
                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                        <Export-Package>!*</Export-Package>
                        <Import-Package>
                            !org.influxdb,
                            !org.influxdb.annotation,
                            !org.influxdb.dto,
                            !org.influxdb.impl,
                            !org.influxdb.msgpack,
                            !retrofit2,
                            !retrofit2.converter.moshi,
                            !retrofit2.http,
                            !retrofit2.internal,
                            !com.squareup.moshi,
                            !com.squareup.moshi.internal,
                            !okhttp3,
                            !okhttp3.internal,
                            !okhttp3.internal.annotations,
                            !okhttp3.internal.authenticator,
                            !okhttp3.internal.cache,
                            !okhttp3.internal.concurrent,
                            !okhttp3.internal.connection,
                            !okhttp3.internal.http,
                            !okhttp3.intenral.http1,
                            !okhttp3.internal.http2,
                            !okhttp3.internal.io,
                            !okhttp3.internal.platform,
                            !okhttp3.internal.platform.android,
                            !okhttp3.internal.publicsuffix,
                            !okhttp3.internal.proxy,
                            !okhttp3.internal.tls,
                            !okhttp3.internal.ws,
                            !okhttp3.logging,
                            !okio,
                            !okio.internal,
                            !org.conscrypt,
                            !org.msgpack.core,
                            !org.msgpack.core.buffer,
                            !org.msgpack.value,
                            !org.msgpack.value.impl,
                            !kotlin*,
                            android*;resolution:=optional,
                            com.android*;resolution:=optional,
                            dalvik.system;resolution:=optional,
                            sun.security*;resolution:=optional,
                            org.apache.harmony*;resolution:=optional,
                            javax.annotation.meta;resolution:=optional,
                            org.bouncycastle.jsse*;resolution:=optional,
                            org.openjsse*;resolution:=optional,
                            *
                        </Import-Package>
                        <Private-Package>
                            org.apache.karaf.decanter.appender.influxdb,
                            org.apache.karaf.decanter.appender.utils,
                            org.influxdb,
                            org.influxdb.annotation,
                            org.influxdb.impl,
                            org.influxdb.dto,
                            org.influxdb.msgpack,
                            retrofit2,
                            retrofit2.converter.moshi,
                            retrofit2.http,
                            retrofit2.internal,
                            com.squareup.moshi,
                            com.squareup.moshi.internal,
                            okhttp3,
                            okhttp3.internal,
                            okhttp3.internal.annotations,
                            okhttp3.internal.authenticator,
                            okhttp3.internal.cache,
                            okhttp3.internal.concurrent,
                            okhttp3.internal.connection,
                            okhttp3.internal.http,
                            okhttp3.internal.http1,
                            okhttp3.internal.http2,
                            okhttp3.internal.io,
                            okhttp3.internal.platform,
                            okhttp3.internal.platform.android,
                            okhttp3.internal.publicsuffix,
                            okhttp3.internal.proxy,
                            okhttp3.internal.tls,
                            okhttp3.internal.ws,
                            okhttp3.logging,
                            okio,
                            okio.internal,
                            org.conscrypt,
                            org.msgpack.core,
                            org.msgpack.core.buffer,
                            org.msgpack.value,
                            org.msgpack.value.impl,
                            kotlin*
                        </Private-Package>
                        <_dsannotations>*</_dsannotations>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>attach-artifact</goal>
                        </goals>
                        <configuration>
                            <artifacts>
                                <artifact>
                                    <file>src/main/cfg/org.apache.karaf.decanter.appender.influxdb.cfg</file>
                                    <type>cfg</type>
                                </artifact>
                            </artifacts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>
