<!--
  ~ This work is part of OpenLDAP Software <http://www.openldap.org/>.
  ~
  ~ Copyright 1998-2014 The OpenLDAP Foundation.
  ~ All rights reserved.
  ~
  ~ Redistribution and use in source and binary forms, with or without
  ~ modification, are permitted only as authorized by the OpenLDAP
  ~ Public License.
  ~
  ~ A copy of this license is available in the file LICENSE in the
  ~ top-level directory of the distribution or, alternatively, at
  ~ <http://www.OpenLDAP.org/license.html>.
  -->
<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>
    <groupId>org.openldap</groupId>
    <artifactId>commander</artifactId>
    <packaging>war</packaging>
    <version>1.0-RC37</version>
    <name>Fortress Commander</name>
    <url>http://www.openldap.org/fortress/</url>
    <description>Commander is an ANSI RBAC INCITS 359 compliant administrative Web UI</description>

    <licenses>
        <license>
            <name>OpenLDAP Public License</name>
            <url>http://www.OpenLDAP.org/license.html</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <url>http://www.openldap.org/software/repo/openldap-fortress-commander.git</url>
        <connection>git://git.openldap.org/openldap-fortress-commander.git</connection>
    </scm>

    <issueManagement>
        <system>Commander Web Admin JIRA</system>
        <url>https://fortress.atlassian.net/browse/COM/</url>
    </issueManagement>

    <parent>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>7</version>
    </parent>

    <mailingLists>
        <mailingList>
            <name>openldap-fortress -- OpenLDAP Fortress Discussion list</name>
            <post>openldap-fortress@openldap.org</post>
            <archive>http://www.openldap.org/lists/openldap-fortress/</archive>
        </mailingList>
    </mailingLists>

    <developers>
        <developer>
            <id>kpmckinney</id>
            <name>Kevin McKinney</name>
            <email>kevin.mckinney@jts.us</email>
            <roles>
                <role>Developer</role>
            </roles>
            <organization>jts.us</organization>
            <timezone>-7</timezone>
        </developer>
        <developer>
            <id>smckinney</id>
            <name>Shawn McKinney</name>
            <email>smckinney@symas.com</email>
            <roles>
                <role>Developer</role>
            </roles>
            <organization>jts.us</organization>
            <timezone>-5</timezone>
        </developer>
    </developers>

    <properties>
        <version>1.0-RC37</version>
        <title>${name} ${version}</title>
        <wicket.version>6.14.0</wicket.version>
        <wicket.jquery.version>6.14.0</wicket.jquery.version>
        <slf4j.version>1.5.11</slf4j.version>
        <spring.version>3.2.3.RELEASE</spring.version>
        <spring.security.version>3.1.4.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>
        <skipTests>true</skipTests>
        <sentry.home>/home/smckinn/GIT/fortressDev/openldap-fortress-realm</sentry.home>
    </properties>

    <dependencies>
        <!-- Fortress provides RBAC 'CRUD' & policy enforcement APIs for Commander Web -->
        <dependency>
            <groupId>org.openldap</groupId>
            <artifactId>sentry</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>8.0.0-RC1</version>
        </dependency>
        <!--  JETTY used for embedded testing within intellij -->
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty</artifactId>
            <version>6.1.25</version>
        </dependency>
        <!-- Wicket, Spring and other Web UI framework tools -->
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-extensions</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-guice</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-jmx</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-auth-roles</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-datetime</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-velocity</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-spring</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-devutils</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        <dependency>
            <groupId>org.wicketstuff</groupId>
            <artifactId>wicketstuff-inmethod-grid</artifactId>
            <version>${wicket.jquery.version}</version>
        </dependency>
        <dependency>
            <groupId>org.wicketstuff</groupId>
            <artifactId>wicketstuff-jwicket-ui-resize</artifactId>
            <version>${wicket.jquery.version}</version>
        </dependency>
<!--
        <dependency>
            <groupId>de.agilecoders.wicket</groupId>
            <artifactId>bootstrap</artifactId>
            <version>0.5.0</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.jquery.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>${spring.security.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>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>com.uwyn</groupId>
            <artifactId>jhighlight</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>httpunit</groupId>
            <artifactId>httpunit</artifactId>
            <version>1.6.1</version>
        </dependency>
        <!--  ANT DEPENDENCIES FOR RUNNING ANT PLUG-IN FOR FORTRESS LOAD UTILITY  -->
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.8.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-launcher</artifactId>
            <version>1.8.1</version>
        </dependency>
        <!--  JETTY DEPENDENCIES FOR TESTING  -->
        <dependency>
            <groupId>org.eclipse.jetty.aggregate</groupId>
            <artifactId>jetty-all-server</artifactId>
            <version>${jetty.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- Testing -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.36.0</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-common</artifactId>
            <version>2.0b1</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium.client-drivers</groupId>
            <artifactId>selenium-java-client-driver</artifactId>
            <version>1.0.2</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.artifactId}-${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>

            <!-- Assemble a commander distro archive -->
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>user_distribution</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attached</goal>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <appendAssemblyId>false</appendAssemblyId>
                            <descriptors>
                                <descriptor>src/main/assembly/distsrc.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>

                </executions>
            </plugin>
            <!-- 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/html</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 commander source -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</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>
                </configuration>
            </plugin>
            <!-- Javadoc archive -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.9.1</version>
                <configuration>
                    <stylesheet>java</stylesheet>
                    <bottom>&lt;small&gt;Copyright &amp;copy; 2011-2014 Joshua Tree Software, LLC. All Rights Reserved.
                        Generated ${maven.build.timestamp}.&lt;/small&gt;</bottom>
                    <overview>src/main/java/org/openldap/commander/overview.html</overview>
                    <version>true</version>
                    <author>true</author>
                    <doctitle>${title}</doctitle>
                    <windowtitle>${title}</windowtitle>
                </configuration>
            </plugin>
            <!-- Source archive -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.9.1</version>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Integration Test -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.16</version>
                <configuration>
                    <skipTests>${skipTests}</skipTests>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </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>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <phase>test</phase>
                        <configuration>
                            <target>
                                <echo message="###############  Run Fortress Ant script to load demo policy  ###############"/>
                                <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.openldap:fortress:jar}"/>
                                        <pathelement location="${log4j:log4j:jar}"/>
                                        <pathelement location="${com.unboundid:unboundid-ldapsdk:jar}"/>
                                        <pathelement location="${org.jgrapht:jgrapht-jdk1.5: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="${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-common-utilities:jar}"/>
                                        <pathelement location="${javax.ws.rs:jsr311-api:jar}"/>
                                        <pathelement location="${commons-httpclient:commons-httpclient:jar}"/>
                                        <pathelement location="${commons-codec:commons-codec:jar}"/>
                                    </classpath>
                                    <sysproperty key="version" value="${version}"/>
                                    <sysproperty key="tenant" value="HOME"/>
                                    <arg value="-buildfile"/>
                                    <arg file="./src/main/resources/CommanderDemoUsers.xml"/>
                                </java>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>release-sign-artifacts</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <property>
                    <name>performRelease</name>
                    <value>true</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>1.4</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>