<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.directory.project</groupId>
    <artifactId>project</artifactId>
    <version>34</version>
    <relativePath />
  </parent>

  <groupId>org.apache.directory.fortress</groupId>
  <artifactId>fortress-web</artifactId>
  <packaging>war</packaging>
  <version>2.0.1-SNAPSHOT</version>
  <name>Apache Fortress Web</name>
  <url>http://directory.apache.org/fortress/</url>
  <description>Fortress Web is an administrative UI that drives the APIs</description>

  <licenses>
    <license>
      <name>Apache License 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0</url>
    </license>
  </licenses>

  <scm>
    <connection>scm:git:http://git-wip-us.apache.org/repos/asf/directory-fortress-commander.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/directory-fortress-commander.git
    </developerConnection>
    <tag>2.0.0</tag>
  </scm>

  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/DIRFORTRESS</url>
  </issueManagement>

  <mailingLists>
    <mailingList>
      <name>Apache Directory -- Fortress List</name>
      <post>fortress@directory.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/directory-fortress/</archive>
    </mailingList>
  </mailingLists>

  <!-- ====================================================== -->
  <!-- The list of current developers            -->
  <!-- ====================================================== -->
  <developers>
    <developer>
      <id>smckinney</id>
      <name>Shawn McKinney</name>
      <email>smckinney@apache.org</email>
    </developer>

    <developer>
      <id>elecharny</id>
      <name>Emmanuel Lecharny</name>
      <email>elecharny@apache.org</email>
    </developer>

    <developer>
      <id>cpike</id>
      <name>Chris Pike</name>
      <email>cpike@apache.org</email>
    </developer>
  </developers>

  <properties>
    <title>${project.name} ${project.version}</title>
    <fortress.realm.version>2.0.0</fortress.realm.version>
    <wicket.version>7.10.0</wicket.version>
    <wicket.jquery.version>7.10.0</wicket.jquery.version>
    <wicket.kendo-ui.version>7.10.0</wicket.kendo-ui.version>
    <version.log4j>1.2.17</version.log4j>
    <version.ant>1.9.7</version.ant>
    <version.slf4j.log4j12>1.7.7</version.slf4j.log4j12>
    <spring.security.version>5.0.0.RELEASE</spring.security.version>
    <javadoc.version>2.9.1</javadoc.version>
    <jetty.version>8.1.8.v20121106</jetty.version>
    <jetty.stopKey>stopJetty</jetty.stopKey>
    <jetty.stopPort>9081</jetty.stopPort>
    <jetty.port>9080</jetty.port>
  </properties>

  <dependencies>
    <!-- Fortress Realm pulls in Fortress Core for RBAC 'CRUD' & access management apis. -->
    <dependency>
      <groupId>org.apache.directory.fortress</groupId>
      <artifactId>fortress-realm-impl</artifactId>
      <version>${fortress.realm.version}</version>
    </dependency>

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${version.log4j}</version>
    </dependency>
    
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${version.slf4j.log4j12}</version>
    </dependency>

    <!-- Servlet API DEPENDENCIES -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <!-- Wicket, Spring and other Web UI framework tools -->
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-spring</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.wicketstuff</groupId>
      <artifactId>wicketstuff-inmethod-grid</artifactId>
      <version>${wicket.jquery.version}</version>
    </dependency>
    
    <dependency>
      <groupId>com.googlecode.wicket-jquery-ui</groupId>
      <artifactId>wicket-jquery-ui</artifactId>
      <version>${wicket.jquery.version}</version>
    </dependency>
    
    <dependency>
      <groupId>com.googlecode.wicket-jquery-ui</groupId>
      <artifactId>wicket-kendo-ui</artifactId>
      <version>${wicket.kendo-ui.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-config</artifactId>
      <version>${spring.security.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
      <version>${spring.security.version}</version>
    </dependency>

    <!--  ANT DEPENDENCIES FOR RUNNING ANT PLUG-IN FOR FORTRESS LOAD UTILITY  -->
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>${version.ant}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant-launcher</artifactId>
      <version>${version.ant}</version>
      <scope>test</scope>
    </dependency>

    <!-- Begin test dependencies -->
    <dependency>
      <groupId>httpunit</groupId>
      <artifactId>httpunit</artifactId>
      <version>1.6.1</version>
      <scope>test</scope>
    </dependency>
    
    <!--  JETTY used for embedded testing -->
    <dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty</artifactId>
      <version>6.1.25</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.eclipse.jetty.aggregate</groupId>
      <artifactId>jetty-all-server</artifactId>
      <version>${jetty.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>3.13.0</version>
    </dependency>

    <dependency>
      <groupId>io.github.bonigarcia</groupId>
      <artifactId>webdrivermanager</artifactId>
      <version>2.2.4</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <resources>
      <!-- include all these to be able to view their source -->
      <resource>
        <filtering>false</filtering>
        <directory>${basedir}/src/main/java</directory>
        <includes>
          <include>**/*.html</include>
          <include>**/*.js</include>
          <include>**/*.css</include>
          <include>**/*.jpg</include>
          <include>**/*.gif</include>
          <include>**/*.png</include>
          <include>**/*.txt</include>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
      
      <resource>
        <filtering>false</filtering>
        <directory>${basedir}/src/main/resources</directory>
        <includes>
          <include>**/*.html</include>
          <include>**/*.js</include>
          <include>**/*.css</include>
          <include>**/*.jpg</include>
          <include>**/*.gif</include>
          <include>**/*.png</include>
          <include>**/*.txt</include>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
          <include>**/*.vm</include>
          <include>**/*.tmpl</include>
        </includes>
      </resource>
      
      <resource>
        <filtering>false</filtering>
        <directory>src/main/webapp/login</directory>
        <includes>
          <include>**/*.html</include>
        </includes>
      </resource>
    </resources>
    <plugins>

      <!-- Deploy the finished war -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tomcat-maven-plugin</artifactId>
        <version>1.0-beta-1</version>
        <configuration>
          <warFile>target/${project.artifactId}.war</warFile>
          <server>local-tomcat</server>
          <url>http://localhost:8080/manager/text</url>
          <path>/${project.artifactId}</path>
          <!-- Warning the tomcat manager creds here are for deploying into a demo environment only. -->
          <username>tcmanager</username>
          <password>m@nager123</password>
        </configuration>
      </plugin>
      
      <!-- Compile the fortress web source -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      
      <!-- War the commander app -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.4</version>
        <!-- this is needed to pickup the context.xml in META-INF: -->
        <configuration>
          <warName>${project.artifactId}</warName>
          <archive>
            <manifest>
              <classpathPrefix>lib/</classpathPrefix>
            </manifest>
          </archive>
          <webResources>
            <resource>
              <!-- this is relative to the pom.xml directory -->
              <directory>${project.basedir}/src/main/resources
              </directory>
            </resource>
          </webResources>
          <!--<archiveClasses>true</archiveClasses>-->
          <attachClasses>true</attachClasses>
        </configuration>
      </plugin>
      
      <!-- Javadoc archive -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <stylesheet>java</stylesheet>
          <bottom>&lt;small&gt;Copyright &amp;copy; 2003-2016, The Apache Software Foundation. All Rights Reserved. Generated ${maven.build.timestamp}&lt;/small&gt;</bottom>
          <overview>src/main/java/org/apache/directory/fortress/web/overview.html</overview>
          <version>true</version>
          <author>true</author>
          <doctitle>${project.name} Javadoc ${project.version}</doctitle>
          <windowtitle>Apache ${project.name} Javadoc ${project.version}</windowtitle>
          <additionalparam>-Xdoclint:none</additionalparam>
        </configuration>
      </plugin>
      
      <!-- Source archive -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Fires on 'mvn test -Dtest=ClassName' where ClassName is junit test class name, for this project: -->
      <!-- mvn test -Dtest=FortressWebSeleniumITCase -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <systemPropertyVariables>
            <version>${project.version}</version>
          </systemPropertyVariables>
          <excludes>
            <exclude>${exclude.tests}</exclude>
          </excludes>
          <includes>
            <include>${include.tests}</include>
          </includes>
          <groups>${testcase.groups}</groups>
          <runOrder>random</runOrder>
        </configuration>
      </plugin>
      
      <!-- this works for embedded testing with Jetty -->
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jetty.version}</version>
        <configuration>
          <scanIntervalSeconds>1</scanIntervalSeconds>
          <stopPort>9999</stopPort>
          <stopKey>foo</stopKey>
          <connectors>
            <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
              <port>8081</port>
              <maxIdleTime>3600000</maxIdleTime>
            </connector>
          </connectors>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <inherited>true</inherited>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludeSubProjects>false</excludeSubProjects>
          <excludes>
            <!-- MAVEN_DEFAULT_EXCLUDES -->
            <exclude>**/target/**/*</exclude>
            <exclude>**/cobertura.ser</exclude>
            <!-- ECLIPSE_DEFAULT_EXCLUDES -->
            <exclude>**/.classpath</exclude>
            <exclude>**/.project</exclude>
            <exclude>**/.settings/**/*</exclude>
            <!-- IDEA_DEFAULT_EXCLUDES -->
            <exclude>**/*.iml</exclude>
            <exclude>**/*.ipr</exclude>
            <exclude>**/*.iws</exclude>
            <!-- MANIFEST_MF_EXCLUDES -->
            <exclude>**/MANIFEST.MF</exclude>
            <!-- GIT_EXCLUDES -->
            <exclude>**/.git/**/*</exclude>
            <!-- CERT_EXCLUDES -->
            <exclude>**/*.pem</exclude>
            <!-- Exclude logs -->
            <exclude>**/*.log/**</exclude>
          </excludes>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.doxia</groupId>
            <artifactId>doxia-core</artifactId>
            <version>1.6</version>
            <exclusions>
              <exclusion>
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>test</phase>
            <configuration>
              <target name="fortress-load" if="load.file" description="Loads fortress rbac policy files into ldap">
                <echo message="############### Run Fortress Policy Load ###############" />
                <java classname="org.apache.tools.ant.launch.Launcher" fork="true" failonerror="true" dir="${basedir}" timeout="4000000" taskname="startAnt">
                  <classpath>
                    <pathelement location="./src/main/resources" />
                    <pathelement location="${org.apache.ant:ant-launcher:jar}" />
                    <pathelement location="${org.apache.ant:ant:jar}" />
                    <pathelement location="${org.apache.directory.fortress:fortress-core:jar}" />
                    <pathelement location="${org.openldap:accelerator-api:jar}" />
                    <pathelement location="${org.openldap:accelerator-impl:jar}" />
                    <pathelement location="${log4j:log4j:jar}" />
                    <pathelement location="${org.apache.directory.api:api-all:jar}" />
                    <pathelement location="${org.apache.mina:mina-core:jar}" />
                    <pathelement location="${org.jgrapht:jgrapht-core:jar}" />
                    <pathelement location="${org.jasypt:jasypt:jar}" />
                    <pathelement location="${commons-configuration:commons-configuration:jar}" />
                    <pathelement location="${commons-lang:commons-lang:jar}" />
                    <pathelement location="${commons-collections:commons-collections:jar}" />
                    <pathelement location="${commons-logging:commons-logging:jar}" />
                    <pathelement location="${commons-io:commons-io:jar}" />
                    <pathelement location="${commons-pool:commons-pool:jar}" />
                    <pathelement location="${net.sf.ehcache:ehcache-core:jar}" />
                    <pathelement location="${org.slf4j:slf4j-api:jar}" />
                    <pathelement location="${org.slf4j:slf4j-log4j12:jar}" />
                    <pathelement location="${org.apache.cxf:cxf-api:jar}" />
                    <pathelement location="${javax.ws.rs:javax.ws.rs-api:jar}" />
                    <pathelement location="${javax.ws.rs:javax.ws.rs-api:jar}" />
                    <pathelement location="${org.apache.httpcomponents:httpclient:jar}" />
                    <pathelement location="${org.apache.httpcomponents:httpcore:jar}" />
                    <pathelement location="${com.sun.xml.bind:jaxb-impl:jar}" />
                    <pathelement location="${commons-codec:commons-codec:jar}" />
                    <pathelement location="${antlr:antlr:jar}" />
                  </classpath>
                  <sysproperty key="version" value="${project.version}" />
                  <sysproperty key="tenant" value="${tenant}" />
                  <arg value="-buildfile" />
                  <arg file="./${load.file}" />
                  <!--                  <arg file="./src/main/resources/FortressRestServerPolicy.xml" />-->
                </java>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <repositories>
    <repository>
      <id>maven2</id>
      <url>http://repo1.maven.org/maven2</url>
    </repository>
  </repositories>

</project>
