<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2014 Open Networking Laboratory
  ~
  ~ Licensed 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.onosproject</groupId>
    <artifactId>onlab-utils</artifactId>
    <version>1.5.0-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <artifactId>onlab-thirdparty</artifactId>
  <packaging>bundle</packaging>

  <description>ONLab third-party dependencies</description>

  <dependencies>
    <dependency>
      <groupId>com.googlecode.concurrent-trees</groupId>
      <artifactId>concurrent-trees</artifactId>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>${commons.io.version}</version>
    </dependency>

    <dependency>
        <groupId>io.atomix</groupId>
        <artifactId>atomix</artifactId>
        <version>${atomix.version}</version>
    </dependency>

    <dependency>
      <!-- FIXME once fixes get merged to upstream -->
      <groupId>org.onosproject</groupId>
        <artifactId>copycat-api</artifactId>
        <version>${copycat.version}</version>
    </dependency>

    <dependency>
      <!-- FIXME once fixes get merged to upstream -->
      <groupId>org.onosproject</groupId>
        <artifactId>copycat-core</artifactId>
        <version>${copycat.version}</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <configuration>
          <createSourcesJar>true</createSourcesJar>

          <artifactSet>
            <excludes>
              <!-- exclude OSGi-ready transitive dependencies -->
              <exclude>com.google.guava:guava</exclude>
              <exclude>com.esotericsoftware:*</exclude>
              <exclude>org.ow2.asm:asm</exclude>
              <exclude>org.objenesis:objenesis</exclude>
              <exclude>io.netty:*</exclude>
            </excludes>
          </artifactSet>

          <filters>

            <filter>
              <artifact>com.googlecode.concurrent-trees:concurrent-trees</artifact>
              <includes>
                <include>com/googlecode/**</include>
              </includes>
            </filter>

            <filter>
              <artifact>commons-io:commons-io</artifact>
              <includes>
                <include>org/apache/commons/io/**</include>
              </includes>
            </filter>

            <filter>
              <artifact>org.onosproject:copycat*</artifact>
                <includes>
                  <include>**</include>
                </includes>
                <excludes>
                  <exclude>net/kuujo/copycat/**</exclude>
                </excludes>
            </filter>

            <filter>
              <artifact>org.onosproject</artifact>
                <excludes>
                  <exclude>org/apache/commons/io/**</exclude>
                  <exclude>io/atomix/**</exclude>
                  <exclude>com/googlecode/concurrenttrees/**</exclude>
                </excludes>
            </filter>

            <filter>
              <artifact>io.atomix:atomix-resource-manager</artifact>
                <excludes>
                  <exclude>io/atomix/resource/**</exclude>
                </excludes>
            </filter>

          </filters>
          <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                  <resource>META-INF/services/io.atomix.catalyst.serializer.CatalystSerializable</resource>
              </transformer>
              <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                  <resource>META-INF/services/io.atomix.resource.Resource</resource>
              </transformer>
          </transformers>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Export-Package>
              com.googlecode.concurrenttrees.*;net.kuujo.copycat.*;io.atomix.*;org.apache.commons.io.*
            </Export-Package>
            <Import-Package>
              !sun.nio.ch,!sun.misc,*
            </Import-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
