<?xml version="1.0" encoding="UTF-8"?>
<!-- -->
<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>
  <groupId>at.gv.egiz</groupId>
  <artifactId>eaaf</artifactId>
  <version>1.1.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>EGIZ EAAF components</name>

  <properties>
    <!-- General project properties -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>

    <!-- Project versions -->
    <egiz.eaaf.version>${project.version}</egiz.eaaf.version>

    <!-- ===================================================================== -->
    <at.gv.egiz.components.eventlog-api.version>0.4</at.gv.egiz.components.eventlog-api.version>
    <at.gv.egiz.components.egiz-spring-api>0.3</at.gv.egiz.components.egiz-spring-api>

    <MOA.spss.server.moa-sig-lib.version>3.1.2</MOA.spss.server.moa-sig-lib.version>
    <MOA.spss.tsl_lib.version>2.0.2</MOA.spss.tsl_lib.version>

    <!-- IAIK libs -->
    <iaik.prod.iaik_cms.version>5.1</iaik.prod.iaik_cms.version>
    <iaik.prod.iaik_cpades.version>2.5.1_moa</iaik.prod.iaik_cpades.version>
    <iaik.prod.iaik_cpxlevel.version>0.9_moa</iaik.prod.iaik_cpxlevel.version>
    <iaik.prod.iaik_eccelerate.version>5.01</iaik.prod.iaik_eccelerate.version>
    <iaik.prod.iaik_eccelerate_addon.version>5.01</iaik.prod.iaik_eccelerate_addon.version>
    <iaik.prod.iaik_eccelerate_cms.version>5.01</iaik.prod.iaik_eccelerate_cms.version>
    <iaik.prod.iaik_jce_full.version>5.52_moa</iaik.prod.iaik_jce_full.version>
    <iaik.prod.iaik_jsse.version>4.4</iaik.prod.iaik_jsse.version>
    <iaik.prod.iaik_moa.version>2.06</iaik.prod.iaik_moa.version>
    <iaik.prod.iaik_pki_module.version>2.01_moa</iaik.prod.iaik_pki_module.version>
    <iaik.prod.iaik_sva.version>1.0.3_moa</iaik.prod.iaik_sva.version>
    <iaik.prod.iaik_tsp.version>2.32_eval</iaik.prod.iaik_tsp.version>
    <iaik.prod.iaik_util.version>0.23</iaik.prod.iaik_util.version>
    <iaik.prod.iaik_xades.version>2.13_moa</iaik.prod.iaik_xades.version>
    <iaik.prod.iaik_xsect.version>2.13_moa</iaik.prod.iaik_xsect.version>

    <hsm-facade-provider.version>0.3.0</hsm-facade-provider.version>
    <io.grpc-core.version>1.25.0</io.grpc-core.version>

    <!-- Other third-party libs -->
    <org.springframework.version>5.1.5.RELEASE</org.springframework.version>
    <org.opensaml.version>3.4.3</org.opensaml.version>
    <org.apache.santuario.xmlsec.version>2.1.4</org.apache.santuario.xmlsec.version>
    <org.bouncycastle.bcprov-jdk15on.version>1.64</org.bouncycastle.bcprov-jdk15on.version>

    <org.slf4j.version>1.7.25</org.slf4j.version>
    <commons-codec.version>1.11</commons-codec.version>
    <org.apache.commons-lang3.version>3.8.1</org.apache.commons-lang3.version>
    <org.apache.commons-text.version>1.6</org.apache.commons-text.version>
    <org.apache.commons-collections4>4.2</org.apache.commons-collections4>
    <commons-fileupload.version>1.3.3</commons-fileupload.version>
    <javax.servlet-api>3.0.1</javax.servlet-api>
    <org.apache.velocity.version>1.7</org.apache.velocity.version>
    <javax.annotation-api>1.3.2</javax.annotation-api>
    <joda-time.version>2.10.1</joda-time.version>
    <jsr305.version>3.0.2</jsr305.version>
    <com.google.guava.version>28.1-jre</com.google.guava.version>

    <httpclient.version>4.5.7</httpclient.version>
    <httpcore.version>4.4.11</httpcore.version>

    <com.fasterxml.jackson.core.version>2.9.8</com.fasterxml.jackson.core.version>
    <org.bitbucket.b_c.jose4j.version>0.6.5</org.bitbucket.b_c.jose4j.version>

    <jaxen.jaxen.version>1.1.6</jaxen.jaxen.version>
    <xerces.version>2.11.0</xerces.version>
    <xalan.version>2.7.1</xalan.version>

    <!-- jUnit testing -->
    <surefire.version>2.22.1</surefire.version>
    <junit.version>4.12</junit.version>
    <com.squareup.okhttp3.version>4.0.0</com.squareup.okhttp3.version>

    <!-- Code helper plug-ins -->
    <org.projectlombok.lombok.version>1.18.10</org.projectlombok.lombok.version>

    <!-- Code quality checks -->
    <jacoco-maven-plugin.version>0.8.5</jacoco-maven-plugin.version>
    <maven-checkstyle-plugin.version>3.1.0</maven-checkstyle-plugin.version>
    <maven-pmd-plugin.version>3.12.0</maven-pmd-plugin.version>
    <spotbugs-maven-plugin.version>3.1.12.2</spotbugs-maven-plugin.version>

    <license.outputDirectory>${project.build.directory}/thirdparty_licenses</license.outputDirectory>
    <pmw_rules_location>https://apps.egiz.gv.at/checkstyle/egiz_pmd_checks.xml</pmw_rules_location>

  </properties>

  <repositories>
    <repository>
      <id>asit-snapshot</id>
      <url>https://dev.a-sit.at/repositories/snapshot</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>asit-release</id>
      <url>https://dev.a-sit.at/repositories/release</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>egiz-commons</id>
      <url>https://apps.egiz.gv.at/maven/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
    </repository>
    <repository>
      <id>shibboleth.internet2.edu</id>
      <name>Internet2</name>
      <url>https://apps.egiz.gv.at/shibboleth_nexus/</url>
    </repository>
  </repositories>

  <profiles>
    <profile>
      <id>default</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <property>
          <name>default</name>
        </property>
      </activation>
    </profile>
    <profile>
      <id>jenkinsDeploy</id>
      <distributionManagement>
        <repository>
          <id>egizMaven</id>
          <url>sftp://apps.egiz.gv.at/maven</url>
        </repository>
        <snapshotRepository>
          <id>egizMaven</id>
          <url>sftp://apps.egiz.gv.at/maven-snapshot</url>
        </snapshotRepository>
      </distributionManagement>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
            <configuration>
              <deployAtEnd>true</deployAtEnd>
            </configuration>
            <executions>
              <execution>
                <id>default-deploy</id>
                <phase>deploy</phase>
                <goals>
                  <goal>deploy</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <modules>
    <module>eaaf_core_api</module>
    <module>eaaf_core_utils</module>
    <module>eaaf_core</module>
    <module>eaaf_modules</module>
  </modules>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_core_api</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_core_utils</artifactId>
        <version>${egiz.eaaf.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.components</groupId>
        <artifactId>eventlog-api</artifactId>
        <version>${at.gv.egiz.components.eventlog-api.version}</version>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.components</groupId>
        <artifactId>egiz-spring-api</artifactId>
        <version>${at.gv.egiz.components.egiz-spring-api}</version>
      </dependency>


      <dependency>
        <groupId>MOA.spss.server</groupId>
        <artifactId>moa-sig-lib</artifactId>
        <version>${MOA.spss.server.moa-sig-lib.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <artifactId>*</artifactId>
            <groupId>axis</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>MOA.spss</groupId>
        <artifactId>common</artifactId>
        <version>${MOA.spss.server.moa-sig-lib.version}</version>
      </dependency>
      <dependency>
        <groupId>MOA.spss</groupId>
        <artifactId>tsl_lib</artifactId>
        <version>${MOA.spss.tsl_lib.version}</version>
      </dependency>


      <!-- IAIK libs -->
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_cms</artifactId>
        <version>${iaik.prod.iaik_cms.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_cpades</artifactId>
        <version>${iaik.prod.iaik_cpades.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_cpxlevel</artifactId>
        <version>${iaik.prod.iaik_cpxlevel.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_eccelerate</artifactId>
        <version>${iaik.prod.iaik_eccelerate.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_eccelerate_addon</artifactId>
        <version>${iaik.prod.iaik_eccelerate_addon.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_eccelerate_cms</artifactId>
        <version>${iaik.prod.iaik_eccelerate_cms.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_jce_full</artifactId>
        <version>${iaik.prod.iaik_jce_full.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_jsse</artifactId>
        <version>${iaik.prod.iaik_jsse.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_moa</artifactId>
        <version>${iaik.prod.iaik_moa.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_pki_module</artifactId>
        <version>${iaik.prod.iaik_pki_module.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_sva</artifactId>
        <version>${iaik.prod.iaik_sva.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_tsp</artifactId>
        <version>${iaik.prod.iaik_tsp.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_util</artifactId>
        <version>${iaik.prod.iaik_util.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_xades</artifactId>
        <version>${iaik.prod.iaik_xades.version}</version>
      </dependency>
      <dependency>
        <groupId>iaik.prod</groupId>
        <artifactId>iaik_xsect</artifactId>
        <version>${iaik.prod.iaik_xsect.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>${jsr305.version}</version>
      </dependency>

      <dependency>
        <groupId>at.asitplus.hsmfacade</groupId>
        <artifactId>provider</artifactId>
        <version>${hsm-facade-provider.version}</version>
      </dependency>
      <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-core</artifactId>
        <version>${io.grpc-core.version}</version>
      </dependency>

      <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
        <version>${javax.annotation-api}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>${org.apache.commons-collections4}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${org.slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${org.slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons-codec.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${org.apache.commons-lang3.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>${org.apache.commons-text.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${commons-fileupload.version}</version>
      </dependency>
      <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-core</artifactId>
        <version>${org.opensaml.version}</version>
      </dependency>
      <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-xmlsec-api</artifactId>
        <version>${org.opensaml.version}</version>
      </dependency>
      <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-xmlsec-impl</artifactId>
        <version>${org.opensaml.version}</version>
      </dependency>
      <dependency>
        <groupId>org.opensaml</groupId>
        <artifactId>opensaml-saml-impl</artifactId>
        <version>${org.opensaml.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.santuario</groupId>
        <artifactId>xmlsec</artifactId>
        <version>${org.apache.santuario.xmlsec.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>${org.bouncycastle.bcprov-jdk15on.version}</version>
      </dependency>

      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${javax.servlet-api}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>${org.apache.velocity.version}</version>
      </dependency>
      <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>${jaxen.jaxen.version}</version>
      </dependency>
      <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>${xerces.version}</version>
      </dependency>
      <dependency>
        <groupId>xalan</groupId>
        <artifactId>xalan</artifactId>
        <version>${xalan.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${httpclient.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>${httpcore.version}</version>
      </dependency>

      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda-time.version}</version>
      </dependency>

      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${com.fasterxml.jackson.core.version}</version>
      </dependency>
      <dependency>
        <groupId>org.bitbucket.b_c</groupId>
        <artifactId>jose4j</artifactId>
        <version>${org.bitbucket.b_c.jose4j.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${com.google.guava.version}</version>
      </dependency>

      <!-- Testing -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${org.springframework.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>mockwebserver</artifactId>
        <version>${com.squareup.okhttp3.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_core_utils</artifactId>
        <version>${egiz.eaaf.version}</version>
        <scope>test</scope>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf-core</artifactId>
        <version>${egiz.eaaf.version}</version>
        <scope>test</scope>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>at.gv.egiz.eaaf</groupId>
        <artifactId>eaaf_module_pvp2_core</artifactId>
        <version>${egiz.eaaf.version}</version>
        <scope>test</scope>
        <type>test-jar</type>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${org.projectlombok.lombok.version}</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>3.3.3</version>
      </extension>
    </extensions>

    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>2.7</version>
      </plugin>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
          <threadCount>1</threadCount>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.surefire</groupId>
            <artifactId>surefire-junit47</artifactId>
            <version>${surefire.version}</version>
          </dependency>
        </dependencies>
      </plugin>

      <!-- Code quality checks -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${maven-checkstyle-plugin.version}</version>
        <configuration>
          <configLocation>https://apps.egiz.gv.at/checkstyle/egiz_checks.xml</configLocation>
          <suppressionsLocation>checks/checkstyleSuppress.xml</suppressionsLocation>
          <failsOnError>false</failsOnError>
          <failOnViolation>true</failOnViolation>
          <violationSeverity>warning</violationSeverity>
          <includeTestResources>false</includeTestResources>
          <!-- excludes>**/moaspss_config/**,**/data/**</excludes -->
        </configuration>
        <executions>
          <execution>
            <id>validate</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>8.26</version>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco-maven-plugin.version}</version>
        <executions>
          <execution>
            <id>pre-unit-test</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>post-unit-report</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
            <configuration>
              <outputDirectory>target/jacoco-report</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>post-unit-check</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <haltOnFailure>false</haltOnFailure>
              <rules>
                <rule>
                  <element>BUNDLE</element>
                  <limits>
                    <limit>
                      <counter>INSTRUCTION</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.70</minimum>
                    </limit>
                    <limit>
                      <counter>BRANCH</counter>
                      <value>COVEREDRATIO</value>
                      <minimum>0.70</minimum>
                    </limit>
                  </limits>
                </rule>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>


      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${maven-pmd-plugin.version}</version>
        <executions>
          <execution>
            <id>pmd_validate</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <linkXref>false</linkXref>
          <sourceEncoding>utf-8</sourceEncoding>
          <minimumTokens>100</minimumTokens>
          <targetJdk>1.8</targetJdk>
          <failOnViolation>true</failOnViolation>
          <printFailingErrors>true</printFailingErrors>
          <rulesets>
            <ruleset>${pmw_rules_location}</ruleset>
          </rulesets>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <version>${spotbugs-maven-plugin.version}</version>
        <executions>
          <execution>
            <id>spotbugs_validate</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <failOnError>true</failOnError>
        </configuration>
      </plugin>


    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <reportSets>
          <reportSet>
            <reports>
              <report>report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${maven-pmd-plugin.version}</version>
      </plugin>
    </plugins>
  </reporting>

</project>