<?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.4.0-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>${project.version}</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>${project.version}</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>

    <profiles>
        <profile>
            <id>rest-doc</id>
            <activation>
                <os>
                    <family>!windows</family>
                </os>
            </activation>
            <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.1.2</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>
                    <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>
            </build>
        </profile>
    </profiles>

    <build>
    </build>
</project>
