<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
 * Copyright (c) Codice Foundation
 *
 * This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either
 * version 3 of the License, or any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details. A copy of the GNU Lesser General Public License is distributed along with this program and can be found at
 * <http://www.gnu.org/licenses/lgpl.html>.
 *
 **/
-->
<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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>platform-solr</artifactId>
        <groupId>ddf.platform.solr</groupId>
        <version>2.29.33</version>
    </parent>
    <artifactId>solr-dependencies</artifactId>
    <name>DDF :: Platform :: Solr :: Dependencies</name>
    <description>Contains Solr dependencies. Exports solr related packages required by DDF.</description>
    <packaging>bundle</packaging>
    <dependencies>
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-api</artifactId>
            <version>${solr.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>${solr.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jcl-over-slf4j</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>http2-client</artifactId>
                    <groupId>org.eclipse.jetty.http2</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>http2-common</artifactId>
                    <groupId>org.eclipse.jetty.http2</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>http2-hpack</artifactId>
                    <groupId>org.eclipse.jetty.http2</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>http2-http-client-transport</artifactId>
                    <groupId>org.eclipse.jetty.http2</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jetty-alpn-client</artifactId>
                    <groupId>org.eclipse.jetty</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jetty-alpn-java-client</artifactId>
                    <groupId>org.eclipse.jetty</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jetty-client</artifactId>
                    <groupId>org.eclipse.jetty</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jetty-http</artifactId>
                    <groupId>org.eclipse.jetty</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jetty-io</artifactId>
                    <groupId>org.eclipse.jetty</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jetty-util</artifactId>
                    <groupId>org.eclipse.jetty</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <artifactId>http2-client</artifactId>
            <groupId>org.eclipse.jetty.http2</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <artifactId>http2-common</artifactId>
            <groupId>org.eclipse.jetty.http2</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <artifactId>http2-hpack</artifactId>
            <groupId>org.eclipse.jetty.http2</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <artifactId>http2-http-client-transport</artifactId>
            <groupId>org.eclipse.jetty.http2</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <artifactId>jetty-alpn-client</artifactId>
            <groupId>org.eclipse.jetty</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <artifactId>jetty-alpn-java-client</artifactId>
            <groupId>org.eclipse.jetty</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <artifactId>jetty-client</artifactId>
            <groupId>org.eclipse.jetty</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <artifactId>jetty-http</artifactId>
            <groupId>org.eclipse.jetty</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <artifactId>jetty-io</artifactId>
            <groupId>org.eclipse.jetty</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <artifactId>jetty-util</artifactId>
            <groupId>org.eclipse.jetty</groupId>
            <version>${solr.jetty.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj-zookeeper</artifactId>
            <version>${solr.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jcl-over-slf4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>${solr.httpclient.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>${solr.httpcore.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>${solr.httpmime.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>${solr.zookeeper.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.github.spotbugs</groupId>
                    <artifactId>spotbugs-annotations</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-transport</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-handler</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-common</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-transport-native-epoll</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper-jute</artifactId>
            <version>${solr.zookeeper.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.github.spotbugs</groupId>
                    <artifactId>spotbugs-annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                        <Require-Capability>osgi.ee;filter:="(&amp;(osgi.ee=JavaSE)(version=1.8))"</Require-Capability>
                        <Export-Package>
                            <!--packages required for solrj -->
                            org.apache.jute;version=${solr.zookeeper.version},
                            org.apache.solr.client.solrj.*;version=${solr.version},
                            org.apache.solr.client.api.util.*;version=${solr.version},
                            org.apache.solr.common.*;version=${solr.version},
                            org.apache.zookeeper.*;version=${solr.zookeeper.version},
                            com.fasterxml.jackson.*;version=${jackson.version}
                        </Export-Package>
                        <Embed-Dependency>
                            solr-api,
                            solr-solrj,
                            solr-solrj-zookeeper,
                            commons-io,
                            httpmime,
                            zookeeper,
                            zookeeper-jute
                        </Embed-Dependency>
                        <Import-Package>
                            org.slf4j;version=${org.slf4j.version},
                            javax.annotation,
                            javax.crypto,
                            javax.crypto.spec,
                            javax.imageio,
                            javax.imageio.metadata,
                            javax.imageio.spi,
                            javax.imageio.stream,
                            javax.mail.internet,
                            javax.management,
                            javax.management.openmbean,
                            javax.management.remote,
                            javax.naming,
                            javax.naming.directory,
                            javax.net,
                            javax.net.ssl,
                            javax.script,
                            javax.security.auth,
                            javax.security.auth.callback,
                            javax.security.auth.kerberos,
                            javax.security.auth.login,
                            javax.security.auth.spi,
                            javax.security.auth.x500,
                            javax.security.sasl,
                            javax.servlet;version="[3.1,4)",
                            javax.servlet.descriptor;version="[3.1,4)",
                            javax.servlet.http;version="[3.1,4)",
                            javax.sql,
                            javax.swing,
                            javax.swing.table,
                            javax.swing.tree,
                            javax.xml.bind;version="[2.2,3)",
                            javax.xml.datatype,
                            javax.xml.namespace,
                            javax.xml.parsers,
                            javax.xml.stream,
                            javax.xml.stream.events,
                            javax.xml.stream.util,
                            javax.xml.transform,
                            javax.xml.transform.dom,
                            javax.xml.transform.sax,
                            javax.xml.transform.stream,
                            javax.xml.xpath,

                            <!--jetty-->
                            org.eclipse.jetty.client;resolution:=optional,
                            org.eclipse.jetty.client.api;resolution:=optional,
                            org.eclipse.jetty.client.http;resolution:=optional,
                            org.eclipse.jetty.client.util;resolution:=optional,
                            org.eclipse.jetty.http;resolution:=optional,
                            org.eclipse.jetty.http2.client;resolution:=optional,
                            org.eclipse.jetty.http2.client.http;resolution:=optional,
                            org.eclipse.jetty.io;resolution:=optional,
                            org.eclipse.jetty.io.*;resolution:=optional,
                            org.eclipse.jetty.util;resolution:=optional,
                            org.eclipse.jetty.util.*;resolution:=optional,

                            <!--
                                There are ddf dependencies using both this solr-dependencies and httpclient/httpcore.
                                These packages are imported so that only one instance of the classes are being shared at runtime to avoid a class collision.
                            -->

                            <!--httpclient-->
                            org.apache.http.auth;version=${solr.httpclient.version},
                            org.apache.http.auth.params;version=${solr.httpclient.version},
                            org.apache.http.cookie;version=${solr.httpclient.version},
                            org.apache.http.cookie.params;version=${solr.httpclient.version},
                            org.apache.http.conn;version=${solr.httpclient.version},
                            org.apache.http.conn.params;version=${solr.httpclient.version},
                            org.apache.http.conn.routing;version=${solr.httpclient.version},
                            org.apache.http.conn.scheme;version=${solr.httpclient.version},
                            org.apache.http.conn.socket;version=${solr.httpclient.version},
                            org.apache.http.conn.ssl;version=${solr.httpclient.version},
                            org.apache.http.conn.util;version=${solr.httpclient.version},
                            org.apache.http.client;version=${solr.httpclient.version},
                            org.apache.http.client.cache;version=${solr.httpclient.version},
                            org.apache.http.client.config;version=${solr.httpclient.version},
                            org.apache.http.client.entity;version=${solr.httpclient.version},
                            org.apache.http.client.fluent;version=${solr.httpclient.version},
                            org.apache.http.client.methods;version=${solr.httpclient.version},
                            org.apache.http.client.params;version=${solr.httpclient.version},
                            org.apache.http.client.protocol;version=${solr.httpclient.version},
                            org.apache.http.client.utils;version=${solr.httpclient.version},
                            org.apache.http.entity.mime;version=${solr.httpclient.version},
                            org.apache.http.entity.mime.content;version=${solr.httpclient.version},
                            org.apache.http.impl.auth;version=${solr.httpclient.version},
                            org.apache.http.impl.cookie;version=${solr.httpclient.version},
                            org.apache.http.impl.conn;version=${solr.httpclient.version},
                            org.apache.http.impl.conn.tsccm;version=${solr.httpclient.version},
                            org.apache.http.impl.execchain;version=${solr.httpclient.version},
                            org.apache.http.impl.client;version=${solr.httpclient.version},
                            org.apache.http.impl.client.cache;version=${solr.httpclient.version},
                            org.apache.http.impl.client.cache.ehcache;version=${solr.httpclient.version},
                            org.apache.http.impl.client.cache.memcached;version=${solr.httpclient.version},
                            org.apache.http.osgi.services;version=${solr.httpclient.version},

                            <!--httpcore-->
                            org.apache.http;version=${solr.httpcore.version},
                            org.apache.http.annotation;version=${solr.httpcore.version},
                            org.apache.http.concurrent;version=${solr.httpcore.version},
                            org.apache.http.config;version=${solr.httpcore.version},
                            org.apache.http.entity;version=${solr.httpcore.version},
                            org.apache.http.impl;version=${solr.httpcore.version},
                            org.apache.http.impl.bootstrap;version=${solr.httpcore.version},
                            org.apache.http.impl.entity;version=${solr.httpcore.version},
                            org.apache.http.impl.io;version=${solr.httpcore.version},
                            org.apache.http.impl.nio;version=${solr.httpcore.version},
                            org.apache.http.impl.nio.bootstrap;version=${solr.httpcore.version},
                            org.apache.http.impl.nio.codecs;version=${solr.httpcore.version},
                            org.apache.http.impl.nio.pool;version=${solr.httpcore.version},
                            org.apache.http.impl.nio.reactor;version=${solr.httpcore.version},
                            org.apache.http.impl.nio.ssl;version=${solr.httpcore.version},
                            org.apache.http.impl.pool;version=${solr.httpcore.version},
                            org.apache.http.io;version=${solr.httpcore.version},
                            org.apache.http.message;version=${solr.httpcore.version},
                            org.apache.http.nio;version=${solr.httpcore.version},
                            org.apache.http.nio.entity;version=${solr.httpcore.version},
                            org.apache.http.nio.params;version=${solr.httpcore.version},
                            org.apache.http.nio.pool;version=${solr.httpcore.version},
                            org.apache.http.nio.protocol;version=${solr.httpcore.version},
                            org.apache.http.nio.reactor;version=${solr.httpcore.version},
                            org.apache.http.nio.reactor.ssl;version=${solr.httpcore.version},
                            org.apache.http.nio.util;version=${solr.httpcore.version},
                            org.apache.http.params;version=${solr.httpcore.version},
                            org.apache.http.pool;version=${solr.httpcore.version},
                            org.apache.http.protocol;version=${solr.httpcore.version},
                            org.apache.http.ssl;version=${solr.httpcore.version},
                            org.apache.http.util;version=${solr.httpcore.version}
                        </Import-Package>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>check-artifact-size</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <ArtifactSizeEnforcerRule implementation="org.codice.maven.artifactsize.ArtifactSizeEnforcerRule">
                                    <maxArtifactSize>44_MB</maxArtifactSize>
                                </ArtifactSizeEnforcerRule>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
