<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2015 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-apps</artifactId>
        <version>1.3.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>onos-app-virtualbng</artifactId>
    <packaging>bundle</packaging>

    <description>A virtual Broadband Network Gateway(BNG) application</description>

    <properties>
        <onos.app.name>org.onosproject.virtualbng</onos.app.name>
        <web.context>/onos/virtualbng</web.context>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.19</version>
        </dependency>
        <dependency>
            <groupId>org.onosproject</groupId>
            <artifactId>onos-cli</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.karaf.shell</groupId>
            <artifactId>org.apache.karaf.shell.console</artifactId>
        </dependency>
        <dependency>
            <groupId>org.onosproject</groupId>
            <artifactId>onlab-rest</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <_wab>src/main/webapp/</_wab>
                        <Bundle-SymbolicName>
                            ${project.groupId}.${project.artifactId}
                        </Bundle-SymbolicName>
                        <Import-Package>
                            org.slf4j,
                            javax.ws.rs,
                            javax.ws.rs.core,
                            com.sun.jersey.api.core,
                            com.sun.jersey.api.client,
                            com.sun.jersey.spi.container.servlet,
                            com.sun.jersey.server.impl.container.servlet,
                            com.fasterxml.jackson.databind,
                            com.fasterxml.jackson.databind.node,
                            org.apache.karaf.shell.commands,
                            com.google.common.*,
                            org.onlab.packet.*,
                            org.onlab.rest.*,
                            org.onosproject.*
                        </Import-Package>
                        <Web-ContextPath>${web.context}</Web-ContextPath>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>