<?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>onos-netconf-providers</artifactId>
        <version>1.3.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>onos-netconf-provider-flow</artifactId>
    <packaging>bundle</packaging>

    <dependencies>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.compendium</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.ethz.ganymed</groupId>
            <artifactId>ganymed-ssh2</artifactId>
            <version>262</version>
        </dependency>
        <dependency>
            <!-- TODO: change this appropriately when the official TailF JNC is available -->
            <groupId>org.onosproject</groupId>
            <artifactId>jnc</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.jdom</groupId>
            <artifactId>jdom2</artifactId>
            <version>2.0.5</version>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.1.4</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.onosproject</groupId>
            <artifactId>onlab-junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.onosproject</groupId>
            <artifactId>onos-yang-tool</artifactId>
            <version>1.2.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <filters>
                        <filter>
                            <artifact>com.tailf:JNC</artifact>
                            <includes>
                                <include>com/tailf/jnc/**</include>
                            </includes>
                        </filter>
                        <filter>
                            <artifact>ch.ethz.ganymed:ganymed-ssh2</artifact>
                            <includes>
                                <include>ch/ethz/ssh2/**</include>
                            </includes>
                        </filter>
                        <filter>
                            <artifact>org.jdom:jdom2</artifact>
                            <includes>
                                <include>org/jdom2/**</include>
                            </includes>
                        </filter>
                        <filter>
                            <artifact>org.onosproject:onos-yang-tool</artifact>
                            <includes>
                                <include>org/opendaylight/yang/gen/**</include>
                            </includes>
                        </filter>
                    </filters>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-scr-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <instructions>
                        <Export-Package>
                            com.tailf.jnc,
                            ch.ethz.ssh2,
                            ch.ethz.ssh2.auth,
                            ch.ethz.ssh2.channel,
                            ch.ethz.ssh2.crypto,
                            ch.ethz.ssh2.crypto.cipher,
                            ch.ethz.ssh2.crypto.dh,
                            ch.ethz.ssh2.crypto.digest,
                            ch.ethz.ssh2.log,
                            ch.ethz.ssh2.packets,
                            ch.ethz.ssh2.server,
                            ch.ethz.ssh2.sftp,
                            ch.ethz.ssh2.signature,
                            ch.ethz.ssh2.transport,
                            ch.ethz.ssh2.util,
                            org.jdom2,
                            org.jdom2.input,
                            org.jdom2.output,
                            org.jdom2.adapters,
                            org.jdom2.filter,
                            org.jdom2.internal,
                            org.jdom2.located,
                            org.jdom2.transform,
                            org.jdom2.util,
                            org.jdom2.xpath,
                            org.jdom2.input.sax,
                            org.jdom2.input.stax,
                            org.jdom2.output.support,
                            org.jdom2.xpath.jaxen,
                            org.jdom2.xpath.util,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev140520,
                            org.opendaylight.yangtools.yang.data.impl.schema.tree,
                            org.opendaylight.yangtools.yang.data.impl.codec,
                            org.opendaylight.yangtools.yang.model.parser.api,
                            org.opendaylight.yangtools.yang.data.impl.schema.nodes,
                            org.opendaylight.yangtools.yang.binding.util,
                            org.opendaylight.yangtools.yang.data.impl,
                            org.opendaylight.yangtools.sal.binding.generator.impl,
                            org.opendaylight.yangtools.yang.parser.impl.util,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.packet.fields.rev140625,
                            org.opendaylight.yangtools.yang.data.api,
                            org.opendaylight.yangtools.objcache.spi,
                            org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser,
                            org.opendaylight.yangtools.maven.sal.api.gen.plugin,
                            org.opendaylight.yangtools.yang.data.impl.schema.builder.impl,
                            org.opendaylight.yangtools.yang.data.api.schema.tree,
                            org.opendaylight.yangtools.binding.generator.util,
                            org.opendaylight.yangtools.sal.binding.generator.spi,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715,
                            org.opendaylight.yangtools.yang2sources.spi,
                            org.opendaylight.yangtools.yang.model.repo.api,
                            org.opendaylight.yangtools.util,
                            org.opendaylight.yangtools.yang.parser.util,
                            org.opendaylight.yangtools.yang.data.api.schema.stream,
                            org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serializer,
                            org.opendaylight.yangtools.concepts,
                            org.opendaylight.yangtools.yang.binding,
                            org.opendaylight.yangtools.yang.model.util.repo,
                            org.opendaylight.yangtools.yang.wadl.generator.maven,
                            org.opendaylight.yangtools.yang.data.api.schema,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev140520.access.list.access.list.entries.matches.ace.type,
                            org.opendaylight.yangtools.concepts.util,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev140520.access.list.access.list.entries,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev140520.access.list.access.list.entries.matches.ace.type.ace.ip.ace.ip.version,
                            org.opendaylight.yangtools.sal.binding.model.api,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev140520.access.list.access.list.entries.matches.ace.type.ace.ip,
                            org.opendaylight.yangtools.yang.data.impl.schema.builder.api,
                            org.opendaylight.yangtools.util.concurrent,
                            org.opendaylight.yangtools.yang.parser.builder.impl,
                            org.opendaylight.yangtools.yang.data.impl.schema.transform.base,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev140520.access.list.access.list.entries.actions.packet.handling,
                            org.opendaylight.yangtools.sal.binding.model.api.type.builder,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.packet.fields.rev140625.acl.transport.header.fields,
                            org.opendaylight.yangtools.yang2sources.plugin,
                            org.opendaylight.yangtools.yang.data.impl.codec.xml,
                            org.opendaylight.yangtools.antlrv4.code.gen,
                            org.opendaylight.yangtools.yang.parser.builder.util,
                            org.opendaylight.yangtools.yang.data.impl.schema.transform,
                            org.opendaylight.yangtools.yang.model.api.type,
                            org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.serializer,
                            org.opendaylight.yangtools.yang.data.api.schema.tree.spi,
                            org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser,
                            org.opendaylight.yangtools.sal.binding.yang.types,
                            org.opendaylight.yangtools.yang.data.impl.schema.transform.dom,
                            org.opendaylight.yangtools.yang.data.impl.util,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.packet.fields.rev140625.timerange,
                            org.opendaylight.yangtools.sal.binding.generator.api,
                            org.opendaylight.yangtools.sal.java.api.generator,
                            org.opendaylight.yangtools.yang.binding.annotations,
                            org.opendaylight.yangtools.sal.binding.generator.util,
                            org.opendaylight.yangtools.yang.model.repo.util,
                            org.opendaylight.yangtools.yang.model.api,
                            org.opendaylight.yangtools.yang.common,
                            org.opendaylight.yangtools.yang.wadl.generator,
                            org.opendaylight.yangtools.yang.parser.builder.api,
                            org.opendaylight.yangtools.yang.model.util,
                            org.opendaylight.yangtools.yang.parser.impl,
                            org.opendaylight.yangtools.yang.data.impl.schema,
                            org.opendaylight.yangtools.yang.data.api.codec,
                            org.opendaylight.yangtools.yang.unified.doc.generator,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev140520.access.list,
                            org.opendaylight.yangtools.objcache,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev140520.access.list.access.list.entries.actions,
                            org.opendaylight.yangtools.yang.data.util,
                            org.opendaylight.yangtools.yang.unified.doc.generator.maven,
                            org.opendaylight.yangtools.binding.generator.util.generated.type.builder,
                            org.opendaylight.yangtools.yang.model.repo.spi,
                            org.opendaylight.yangtools.yang.parser.repo,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715,
                            org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.acl.rev140520.access.list.access.list.entries.matches,
                            org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid,
                            com.romix.scala,
                            com.romix.scala.collection,
                            com.romix.scala.collection.concurrent,
                            org.opendaylight.yangtools.objcache.impl
                        </Export-Package>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.onosproject</groupId>
                <artifactId>onos-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
