<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.unomi</groupId>
        <artifactId>unomi-root</artifactId>
        <version>1.3.1-incubating-SNAPSHOT</version>
    </parent>

    <artifactId>unomi-rest</artifactId>
    <name>Apache Unomi :: REST API</name>
    <description>Apache Unomi Context Server REST API</description>
    <packaging>bundle</packaging>

    <pluginRepositories>
        <pluginRepository>
            <id>miredot</id>
            <name>Miredot Releases</name>
            <url>http://nexus.qmino.com/content/repositories/miredot</url>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <dependency>
            <groupId>org.apache.unomi</groupId>
            <artifactId>unomi-api</artifactId>
            <version>1.3.1-incubating-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-rs-security-cors</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.jaxrs</groupId>
            <artifactId>jackson-jaxrs-json-provider</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.unomi</groupId>
            <artifactId>unomi-persistence-spi</artifactId>
            <version>1.3.1-incubating-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <!--<dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-core</artifactId>
            <scope>compile</scope>
            <version>1.5.3</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.ws.rs</groupId>
                    <artifactId>jsr311-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>-->
    </dependencies>

    <build>
        <plugins>
            <!--<plugin>
                <groupId>com.sebastian-daschner</groupId>
                <artifactId>jaxrs-analyzer-maven-plugin</artifactId>
                <version>0.8</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>analyze-jaxrs</goal>
                        </goals>
                        <configuration>
                            &lt;!&ndash; Available backends are plaintext (default), swagger and asciidoc &ndash;&gt;
                            <backend>swagger</backend>
                            &lt;!&ndash; Domain of the deployed project, defaults to example.com &ndash;&gt;
                            &lt;!&ndash;<deployedDomain>example.com</deployedDomain>&ndash;&gt;
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.github.kongchen</groupId>
                <artifactId>swagger-maven-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <apiSources>
                        <apiSource>
                            <springmvc>false</springmvc>
                            <locations>org.apache.unomi.rest</locations>
                            <templatePath>${basedir}/api-doc-template/markdown.hbs</templatePath>
                            <outputPath>${basedir}/generated/document.html</outputPath>
                            <swaggerDirectory>generated/swagger-ui</swaggerDirectory>
                            <info>
                                <title>Documentation for Apache Unomi's RESTful API</title>
                                <version>${project.version}</version>
                            </info>
                            <securityDefinitions>
                                <securityDefinition>
                                    <name>MybasicAuth</name>
                                    <type>basic</type>
                                </securityDefinition>
                            </securityDefinitions>
                        </apiSource>
                    </apiSources>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>-->
            <plugin>
                <groupId>com.qmino</groupId>
                <artifactId>miredot-plugin</artifactId>
                <version>2.0.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>restdoc</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <licence>cHJvamVjdHxvcmcuYXBhY2hlLnVub21pLnVub21pLXJlc3R8MjAyMC0wMi0yOHx0cnVlfC0xI01Dd0NGQ01pMDRxTFZ6LzJ4SG82MjAranZITnRLYWovQWhRcG4vS01jdTU2NXpOWkRpUzcwQXMrdC96bVdRPT0=</licence>
                    <output>
                        <title>Documentation for Apache Unomi's RESTful API ${project.version}</title>
                        <html>
                            <!-- optional html configuration -->
                            <location>${project.parent.build.directory}/staging/rest-api-doc</location>
                        </html>
                        <raml />
                    </output>
                    <restModel>
                        <restFramework>
                            <name>jax-rs</name>
                            <cxfServiceConfig>
                                <item>src/main/resources/OSGI-INF/blueprint/blueprint.xml</item>
                            </cxfServiceConfig>
                        </restFramework>
                        <httpStatusCodes>
                            <httpStatusCode>
                                <httpCode>200</httpCode>
                                <document>always</document>
                                <defaultMessage>The service call has completed successfully.</defaultMessage>
                            </httpStatusCode>
                            <httpStatusCode>
                                <httpCode>401</httpCode>
                                <document>explicit: com.acme.exceptions.AuthorizationException</document>
                                <defaultMessage>The user is not authorized to use this service.</defaultMessage>
                            </httpStatusCode>
                            <httpStatusCode>
                                <httpCode>412</httpCode>
                                <document>put,post</document>
                                <defaultMessage>Invalid JSON/XML input.</defaultMessage>
                            </httpStatusCode>
                            <httpStatusCode>
                                <httpCode>500</httpCode>
                                <document>always</document>
                                <defaultMessage>The service call has not succeeded.</defaultMessage>
                                <sticky>true</sticky> <!-- Document always, even if there is an @statuscode tag -->
                            </httpStatusCode>
                        </httpStatusCodes>
                        <externalSources>
                            <sourceDirs>
                                <sourceDir>../api/src/main/java</sourceDir>
                            </sourceDirs>
                        </externalSources>
                    </restModel>
                    <analysis>
                        <checks>
                            <JAVADOC_MISSING_SUMMARY>warn</JAVADOC_MISSING_SUMMARY>
                            <JAVADOC_MISSING_INTERFACEDOCUMENTATION>warn</JAVADOC_MISSING_INTERFACEDOCUMENTATION>
                            <JAVADOC_MISSING_PARAMETER_DOCUMENTATION>warn</JAVADOC_MISSING_PARAMETER_DOCUMENTATION>
                            <JAVADOC_MISSING_EXCEPTION_DOCUMENTATION>warn</JAVADOC_MISSING_EXCEPTION_DOCUMENTATION>
                            <JAVADOC_MISSING_AUTHORS>ignore</JAVADOC_MISSING_AUTHORS>
                            <JAXRS_MISSING_PRODUCES>warn</JAXRS_MISSING_PRODUCES>
                            <JAXRS_MISSING_CONSUMES>warn</JAXRS_MISSING_CONSUMES>
                            <JAXRS_MISSING_PATH_PARAM>warn</JAXRS_MISSING_PATH_PARAM>
                            <REST_UNMAPPED_EXCEPTION>warn</REST_UNMAPPED_EXCEPTION>
                            <UNREACHABLE_RESOURCE>warn</UNREACHABLE_RESOURCE>
                            <PARTIAL_RESOURCE_OVERLAP>warn</PARTIAL_RESOURCE_OVERLAP>
                        </checks>
                    </analysis>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <tags>
                        <tag>
                            <name>summary</name>
                            <placement>a</placement>
                            <head>MireDot summary (resource title)</head>
                        </tag>
                        <tag>
                            <name>title</name>
                            <placement>a</placement>
                            <head>MireDot title (resource title)</head>
                        </tag>
                        <tag>
                            <name>servicetag</name>
                            <placement>a</placement>
                            <head>MireDot resource tag (label)</head>
                        </tag>
                        <tag>
                            <name>statuscode</name>
                            <placement>a</placement>
                            <head>MireDot resource status code(s)</head>
                        </tag>
                        <tag>
                            <name>responseheader</name>
                            <placement>a</placement>
                            <head>MireDot response header</head>
                        </tag>
                    </tags>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

</project>
