<?xml version="1.0" encoding="UTF-8"?>
<!--
  ============LICENSE_START=======================================================
  ONAP : APPC
  ================================================================================
  Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  ================================================================================
  Copyright (C) 2017 Amdocs
  =============================================================================
  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.

  ECOMP is a trademark and service mark of AT&T Intellectual Property.
  ============LICENSE_END=========================================================
  -->
<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>
        <artifactId>appc-java-client</artifactId>
        <groupId>org.onap.appc.client</groupId>
        <version>1.3.0-SNAPSHOT</version>
    </parent>

    <artifactId>client-kit</artifactId>


    <properties>
        <licenseDir>${project.parent.parent.basedir}</licenseDir>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.onap.appc.client</groupId>
                <artifactId>code-generator</artifactId>
                <version>${project.parent.version}</version>
                <dependencies>
                    <dependency>
                        <groupId>org.onap.appc</groupId>
                        <artifactId>appc-provider-model</artifactId>
                        <version>${project.parent.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>code-generate-json</id>
                        <goals>
                            <goal>generate-sources</goal>
                        </goals>
                        <configuration>
                            <sourceFileName>META-INF/yang/appc-provider-lcm.yang</sourceFileName>
                            <outputFileName>target/generated-sources/appc-provider-lcm/appc-provider-lcm.json</outputFileName>
                            <templateName>templates/open-api/yang-to-open-api.ftl</templateName>
                            <contextBuilderClassName>org.onap.appc.tools.generator.extensions.YangContextBuilderImpl
                            </contextBuilderClassName>
                            <contextConfigFileName>APPC</contextConfigFileName>
                        </configuration>
                    </execution>
                    <execution>
                        <id>code-generate-java</id>
                        <goals>
                            <goal>generate-sources</goal>
                        </goals>
                        <configuration>
                            <sourceFileName>target/generated-sources/appc-provider-lcm/appc-provider-lcm.json</sourceFileName>
                            <outputFileName>target/generated-sources/appc-provider-lcm/output.txt</outputFileName>
                            <templateName>templates/client-kit/open-api-to-java.ftl</templateName>
                            <contextBuilderClassName>org.onap.appc.tools.generator.extensions.JsonContextBuilderImpl</contextBuilderClassName>
                            <contextConfigFileName>configuration/client-kit.properties</contextConfigFileName>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.onap.appc.client</groupId>
            <artifactId>client-lib</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>org.opendaylight.yangtools</groupId>
            <artifactId>yang-parser-impl</artifactId>
            <version>${yang.parser.impl.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>
