<?xml version="1.0"?>
<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>
        <groupId>org.opendaylight.openflowjava</groupId>
        <artifactId>openflow-protocol-parent</artifactId>
        <version>0.6.4-Lithium-SR4</version>
    </parent>
    <artifactId>openflow-protocol-api</artifactId>
    <packaging>bundle</packaging>
    <name>Openflow Protocol Library - API</name>
    <scm>
        <url>https://wiki.opendaylight.org/view/Openflow_Protocol_Library:Main</url>
        <tag>HEAD</tag>
    </scm>

    <build>
        <plugins>
            <plugin>
                <groupId>org.opendaylight.yangtools</groupId>
                <artifactId>yang-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate-sources</goal>
                        </goals>
                        <configuration>
                            <yangFilesRootDir>src/main/yang</yangFilesRootDir>
                            <codeGenerators>
                                <generator>
                                    <codeGeneratorClass>
                                        org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
                                    </codeGeneratorClass>
                                    <outputBaseDir>
                                        ${salGeneratorPath}
                                    </outputBaseDir>
                                </generator>
                                <generator>
                                    <codeGeneratorClass>org.opendaylight.yangtools.yang.unified.doc.generator.maven.DocumentationGeneratorImpl</codeGeneratorClass>
                                    <outputBaseDir>target/site/restconf</outputBaseDir>
                                </generator>
                            </codeGenerators>
                            <inspectDependencies>true</inspectDependencies>
                        </configuration>
                    </execution>
                </executions>

                <dependencies>
                    <dependency>
                        <groupId>org.opendaylight.yangtools</groupId>
                        <artifactId>maven-sal-api-gen-plugin</artifactId>
                        <version>${yangtools.version}</version>
                        <type>jar</type>
                    </dependency>
                </dependencies>
            </plugin>

            <!-- TODO: maven-antrun-plugin deletes yang source files from target.
                       This is done because otherwise openflowjava models are stored in controller
                       and exposed for further use - which is not desired.
                       (https://bugs.opendaylight.org/show_bug.cgi?id=2926)

                       This plugin should be removed after relevant configuration is added into 
                       yang-maven-plugin - which is supposed to happen in BERYLLIUM release -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <delete>
                                    <fileset dir="${project.build.directory}/classes/META-INF/yang">
                                        <include name="*.yang"/>
                                        <exclude name="openflow-types.yang"/>
                                        <exclude name="openflow-extensible-match.yang"/>
                                        <exclude name="openflow-action.yang"/>
                                        <exclude name="openflow-configuration.yang"/>
                                    </fileset>
                                    <fileset dir="${project.build.directory}/generated-sources/yang/META-INF/yang">
                                        <include name="*.yang"/>
                                        <exclude name="openflow-types.yang"/>
                                        <exclude name="openflow-extensible-match.yang"/>
                                        <exclude name="openflow-action.yang"/>
                                        <exclude name="openflow-configuration.yang"/>
                                    </fileset>
                                </delete>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!--This plugin's configuration is used to store Eclipse 
                    m2e settings only. It has no influence on the Maven build itself. -->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>
                                            org.opendaylight.yangtools
                                        </groupId>
                                        <artifactId>
                                            yang-maven-plugin
                                        </artifactId>
                                        <versionRange>
                                            (0.5.6,)
                                        </versionRange>
                                        <goals>
                                            <goal>
                                                generate-sources
                                            </goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.opendaylight.yangtools</groupId>
            <artifactId>yang-binding</artifactId>
        </dependency>
        <dependency>
            <groupId>org.opendaylight.yangtools</groupId>
            <artifactId>yang-common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.opendaylight.yangtools.model</groupId>
            <artifactId>ietf-inet-types</artifactId>
        </dependency>
        <dependency>
            <groupId>org.opendaylight.yangtools.model</groupId>
            <artifactId>ietf-yang-types</artifactId>
        </dependency>
        <dependency>
            <groupId>org.opendaylight.yangtools.model</groupId>
            <artifactId>yang-ext</artifactId>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-buffer</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
        </dependency>
    </dependencies>
</project>
