<?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.syncope</groupId>
    <artifactId>syncope-fit</artifactId>
    <version>2.0.16</version>
  </parent>

  <name>Apache Syncope FIT Enduser Reference</name>
  <description>Apache Syncope FIT Enduser Reference</description>
  <groupId>org.apache.syncope.fit</groupId>
  <artifactId>syncope-fit-enduser-reference</artifactId>
  <packaging>war</packaging>
  
  <properties>
    <rootpom.basedir>${basedir}/../..</rootpom.basedir>
    <enduser-test.dir>${project.build.directory}/enduser-test</enduser-test.dir>
    <protractor.cmd>${enduser-test.dir}/nodejs/bin/protractor</protractor.cmd>
    <webdriver-manager.cmd>${enduser-test.dir}/nodejs/bin/webdriver-manager</webdriver-manager.cmd>
  </properties>

  <dependencies>
    <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.taglibs</groupId>
      <artifactId>taglibs-standard-impl</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.syncope.client</groupId>
      <artifactId>syncope-client-enduser</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.syncope.ext.saml2sp</groupId>
      <artifactId>syncope-ext-saml2sp-client-enduser</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.syncope.ext.oidcclient</groupId>
      <artifactId>syncope-ext-oidcclient-client-enduser</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
    </dependency>
    <dependency>
      <groupId>com.lmax</groupId>
      <artifactId>disruptor</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
    </dependency>
    
    <!-- TEST -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.syncope.fit</groupId>
      <artifactId>syncope-fit-build-tools</artifactId>
      <version>${project.version}</version>
      <type>war</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.syncope.fit</groupId>
      <artifactId>syncope-fit-core-reference</artifactId>
      <version>${project.version}</version>
      <type>war</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.syncope.fit</groupId>
      <artifactId>syncope-fit-console-reference</artifactId>
      <version>${project.version}</version>
      <type>war</type>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <inherited>true</inherited>
        <executions>
          <execution>
            <id>setup-enduser-it</id>
            <phase>pre-integration-test</phase>
            <configuration>
              <target>
                <mkdir dir="${enduser-test.dir}" />
                <copy todir="${enduser-test.dir}" overwrite="true">
                  <file name="${project.build.directory}/test-classes/protractor-conf.js" />
                  <fileset dir="${project.build.directory}/test-classes" includes="tests/**" />
                </copy>

                <delete file="${basedir}/../core-reference/target/syncope-fit-core-reference-${project.version}/WEB-INF/classes/userWorkflow.bpmn20.xml" />
              </target>
              <skip>${skipTests}</skip>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>     

      <plugin>
        <groupId>com.github.eirslett</groupId>
        <artifactId>frontend-maven-plugin</artifactId>
        <configuration>
          <skip>${skipTests}</skip>
          <skipTests>${skipTests}</skipTests>
        </configuration>
        <executions>
          <execution>
            <id>install-node-npm</id>
            <phase>pre-integration-test</phase>            
            <goals>
              <goal>install-node-and-npm</goal>
            </goals>
            <configuration>
              <workingDirectory>${enduser-test.dir}/nodejs</workingDirectory>
              <nodeVersion>${nodejs.version}</nodeVersion>
            </configuration>
          </execution>
        </executions>
      </plugin>
           
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <configuration>
          <skip>${skipTests}</skip>
        </configuration>
        <executions>
          <execution>            
            <id>install-protractor</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <workingDirectory>${enduser-test.dir}/nodejs/node/node_modules</workingDirectory>
              <executable>${enduser-test.dir}/nodejs/node/node</executable>
              <arguments>
                <argument>npm/bin/npm-cli.js</argument>
                <argument>install</argument>
                <argument>-g</argument>
                <argument>protractor@${protractor.version}</argument>                
              </arguments>
            </configuration>
          </execution>
          <execution>            
            <id>update-protractor-webdriver-manager</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <workingDirectory>${enduser-test.dir}/nodejs/lib</workingDirectory>
              <executable>${enduser-test.dir}/nodejs/node/node</executable>
              <arguments>
                <argument>${webdriver-manager.cmd}</argument>
                <argument>update</argument>                             
              </arguments>
            </configuration>
          </execution>
          <execution>            
            <id>exec-protractor</id>
            <phase>integration-test</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>${enduser-test.dir}/nodejs/node/node</executable>
              <arguments>
                <argument>${protractor.cmd}</argument>
                <argument>${enduser-test.dir}/protractor-conf.js</argument>                             
              </arguments>
            </configuration>
          </execution>                          
        </executions>
      </plugin>
            
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <inherited>true</inherited>
        <executions>
          <execution>
            <id>verify</id>
            <goals>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      
      <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <inherited>true</inherited>
        <configuration>
          <container>
            <dependencies>
              <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
              </dependency>
            </dependencies>
          </container>
          <configuration>
            <type>standalone</type>
            <properties>
              <cargo.servlet.port>${cargo.servlet.port}</cargo.servlet.port>
              <cargo.tomcat.ajp.port>${cargo.tomcat.ajp.port}</cargo.tomcat.ajp.port>
              <cargo.rmi.port>${cargo.rmi.port}</cargo.rmi.port>

              <cargo.jvmargs>-XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m</cargo.jvmargs>
            </properties>
            <configfiles>
              <configfile>
                <file>${basedir}/src/main/resources/context.xml</file>
                <todir>conf/</todir>
                <tofile>context.xml</tofile>
              </configfile>
            </configfiles>
          </configuration>
          <deployables>
            <deployable>
              <groupId>org.apache.syncope.fit</groupId>
              <artifactId>syncope-fit-build-tools</artifactId>
              <type>war</type>
              <properties>
                <context>syncope-fit-build-tools</context>
              </properties>
            </deployable>
            <deployable>
              <location>${basedir}/../core-reference/target/syncope-fit-core-reference-${project.version}</location>
              <pingURL>http://localhost:${cargo.servlet.port}/syncope/cacheStats.jsp</pingURL>
              <pingTimeout>60000</pingTimeout>
              <properties>
                <context>syncope</context>
              </properties>
            </deployable>
            <deployable>
              <location>${basedir}/../console-reference/target/syncope-fit-console-reference-${project.version}</location>
              <properties>
                <context>syncope-console</context>
              </properties>
            </deployable>
            <deployable>
              <location>${project.build.directory}/${project.build.finalName}</location>
              <properties>
                <context>syncope-enduser</context>
              </properties>
            </deployable>
          </deployables>
        </configuration>
        <executions>
          <execution>
            <id>start-container</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>start</goal>
            </goals>
          </execution>
          <execution>
            <id>stop-container</id>
            <phase>post-integration-test</phase>
            <goals>
              <goal>stop</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <resourceIncludes>src/main/resources/**/*.properties</resourceIncludes>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>ianal-maven-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
    
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
          <exclude>context.xml</exclude>
        </excludes>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
      </testResource>
    </testResources>
  </build>
  
  <profiles>
    <profile>
      <id>windows-it</id>

      <activation>
        <os>
          <family>Windows</family>
        </os>
      </activation>

      <properties>
        <protractor.cmd>${enduser-test.dir}/nodejs/node/node_modules/protractor/bin/protractor</protractor.cmd>
        <webdriver-manager.cmd>${enduser-test.dir}/nodejs/node/node_modules/protractor/bin/webdriver-manager</webdriver-manager.cmd>
      </properties>
    </profile>

    <profile>
      <id>skipTests</id>

      <properties>
        <skipTests>true</skipTests>
      </properties>
      
      <dependencies>
        <dependency>
          <groupId>com.h2database</groupId>
          <artifactId>h2</artifactId>
        </dependency>
      </dependencies>

      <build>
        <plugins>      
          <plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <inherited>true</inherited>
            <configuration>
              <deployables>
                <deployable>
                  <location>${project.build.directory}/${project.build.finalName}.war</location>
                </deployable>
              </deployables>
            </configuration>
            <executions>
              <execution>
                <id>install-container</id>
                <phase>package</phase>
                <goals>
                  <goal>install</goal>
                </goals>
              </execution>
              <execution>
                <id>start-container</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>stop-container</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>debug</id>

      <build>
        <defaultGoal>clean verify cargo:run</defaultGoal>

        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <inherited>true</inherited>
            <executions>
              <execution>            
                <id>exec-protractor</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
      
          <plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <inherited>true</inherited>
            <configuration>
              <configuration>
                <properties>
                  <cargo.jvmargs>-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
                    -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m</cargo.jvmargs>
                </properties>
              </configuration>
            </configuration>
            <executions>
              <execution>
                <id>start-container</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>stop-container</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    
    <profile>
      <id>hotswap</id>
      
      <dependencies>
        <dependency>
          <groupId>org.hotswapagent</groupId>
          <artifactId>hotswap-agent</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>

      <build>
        <defaultGoal>clean verify cargo:run</defaultGoal>

        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <inherited>true</inherited>
            <executions>
              <execution>            
                <id>exec-protractor</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
       
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <inherited>true</inherited>
            <executions>
              <execution>
                <id>enableHotSwapForCoreAndConsole</id>
                <phase>package</phase>
                <configuration>
                  <target>                                               
                    <copy file="${basedir}/../core-reference/target/test-classes/hotswap-agent.properties" tofile="${basedir}/../core-reference/target/syncope-fit-core-reference-${project.version}/WEB-INF/classes/hotswap-agent.properties" overwrite="true" />
                    <copy file="${basedir}/../console-reference/target/test-classes/hotswap-agent.properties" tofile="${basedir}/../console-reference/target/syncope-fit-console-reference-${project.version}/WEB-INF/classes/hotswap-agent.properties" overwrite="true" />
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <inherited>true</inherited>
            <configuration>
              <configuration>
                <properties>
                  <cargo.jvmargs>
                    -Dwicket.configuration=development
                    -XXaltjvm=dcevm -javaagent:${settings.localRepository}/org/hotswapagent/hotswap-agent/${hotswap.version}/hotswap-agent-${hotswap.version}.jar=autoHotswap=true,disablePlugin=Spring
                    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
                    -XX:MaxPermSize=512m -Xmx1024m -Xms512m</cargo.jvmargs>
                </properties>
              </configuration>
            </configuration>
            <executions>
              <execution>
                <id>start-container</id>
                <phase>none</phase>
              </execution>
              <execution>
                <id>stop-container</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
        
        <resources>
          <resource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
            <includes>
              <include>hotswap-agent.properties</include>
            </includes>
          </resource>
        </resources>
      </build>
    </profile>
    
    <profile>
      <id>apache-release</id>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <inherited>false</inherited>
            <configuration>
              <skipSource>true</skipSource>
            </configuration>
          </plugin>          
        </plugins>
      </build>
    </profile>

  </profiles>
</project>
