<?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>
            </filter>

            <filter>
              <artifact>io.atomix:atomix-all</artifact>
              <includes>
                <include>**</include>
              </includes>
            </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>
