<?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">
   
   <parent>
      <groupId>org.apache.portals.pluto</groupId>
      <artifactId>pluto</artifactId>
      <version>3.0-SNAPSHOT</version>
   </parent>
   
   <modelVersion>4.0.0</modelVersion>
   
   <groupId>javax.portlet</groupId>
   <artifactId>portlet-tck</artifactId>
   <name>Portlet API Technology Compatibility Kit</name>
   <packaging>pom</packaging>

   <licenses>
      <license>
         <name>apache_v2</name>
         <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
      </license>
   </licenses>

   <scm>
      <connection>scm:git:https://git-wip-us.apache.org/repos/asf/portals-pluto.git</connection>
      <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/portals-pluto.git</developerConnection>
      <url>https://github.com/apache/portals-pluto</url>
   </scm>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

      <!-- To automatically generate a list of test cases, each module transforms the portlet.xml file -->
      <!-- using an XSLT transformation. -->

      <!-- Configuration used by XML transformations -->
      <!-- test.file.xslt Name of stylesheet in ${project.build.directory}/xml-resources/ dirs -->
      <!-- test.file.dir location of generated xml files in individual modules for tests -->
      <!-- test.file.name per-module name of xml file containing list of covered test cases -->
      <test.file.xsl>test.xsl</test.file.xsl>
      <test.file.dir>generated-resources/xml/module</test.file.dir>
      <test.file.name>${project.artifactId}-tests.xml</test.file.name>

      <!-- page.file.xsl Name of stylesheet used to create page definititions -->
      <!-- page.file.name per-module name of xml file containing page definitions for test -->
      <page.file.xsl>plutoSinglePortletPage.xsl</page.file.xsl>
      <page.file.name>${project.artifactId}-pages.xml</page.file.name>
      <page.file.final.xsl>plutoPageCombiner.xsl</page.file.final.xsl>
      <page.file.final.name>pluto-portal-driver-config.xml</page.file.final.name>

      <!-- test.context.base context string used when addressing test pages. Used by module stylesheet -->
      <test.context.base>pluto/portal/</test.context.base>

      <!-- test.list.xsl Name of stylesheet to combine test case lists from subproject -->
      <!-- test.list.dir location of finished xml file containing complete test case list -->
      <!-- test.list.name name of xml file containing complete test case list -->
      <test.list.xsl>testCombiner.xsl</test.list.xsl>
      <test.list.dir>generated-resources/xml/final</test.list.dir>
      <test.list.name>test.xml</test.list.name>

      <!-- This variable is used by the test driver to determine how test 
         page links are to be found. Values: generateURLs the driver generates URLs 
         based on config information. followLinks the driver looks for links containing 
         the page name and clicks them in order to access the test pages. In this 
         case, the portal must produce navigation links to each of the test pages. 
         If configured to generate URLs, the driver generates URLs of the form: http://<test.server.host>:<test.server.port>/<test.context.base><test.page.name> 
         where <test.page.name> is the name of the test page generated by the individual 
         modules -->
      <test.url.strategy>followLinks</test.url.strategy>

      <!-- Configuration of URL to login page -->
      <test.server.login.url>http://localhost:8080/pluto/portal/About Apache Pluto</test.server.login.url>

      <!-- Configuration of portlet container under test for generated URLs -->
      <!-- (only needed if test.url.strategy=generateURLs) -->
      <test.server.host>localhost</test.server.host>
      <test.server.port>8080</test.server.port>

      <!-- HTML field IDs and values for username & password to enable automatic  login -->
      <test.server.username.id>j_username</test.server.username.id>
      <test.server.username>pluto</test.server.username>
      <test.server.password.id>j_password</test.server.password.id>
      <test.server.password>pluto</test.server.password>

      <!-- Specifies the browser to be used by selenium WebDriver for running the tests. -->
      <!-- Can be used with firefox or HTMLUnit without setting the test.browser.webDriver property. -->
      <!-- Use of Chrome or IE requires the webDriver to be downloaded and available. Set the -->
      <!-- test.browser.webDriver property to point to the appropriate WebDriver server. -->
      <test.browser>firefox</test.browser>
      <test.browser>HTMLUnit</test.browser>
      <!-- commented outline below shows configuration for the Internet Explorer driver -->
      <!-- test.browser.webDriver>C:\ntutil\IEDriverServer_x64_2.42.0\IEDriverServer.exe</test.browser.webDriver -->

      <!-- Specify timeout in seconds for the driver to wait for page load. must be an integer. -->
      <test.timeout>3</test.timeout>

      <!-- Set in subprojects containing additional test case file. default is no additional file (false) -->
      <additional.testcase.uri>false</additional.testcase.uri>
      
      <!-- Set to true for modules that define all test cases in a file (TCs are not generated from the portlet.xml) -->
      <additional.testcases.only>false</additional.testcases.only>
      
      <!-- Set to true for modules that define all test pages in a file (page file is not generated from the portlet.xml) -->
      <additional.pagefile.only>false</additional.pagefile.only>

   </properties>

   <modules>
      <module>common</module>
      <module>TestModule1</module>
      <module>TestModule2</module>
      <module>TestModule3</module>
      <module>TestModule3-portlet1</module>
      <module>TestModule3-portlet2</module>
      <module>V2AnnotationTests</module>
      <module>V2EnvironmentTests</module>
      <module>V2ExceptionTests</module>
      <module>V2FilterTests</module>
      <module>V2PortletTests</module>
      <module>V2RequestTests</module>
      <module>V2ResponseTests</module>
      <module>V2URLTests</module>
      <module>V2WrapperTests</module>
      <module>V2AddlEnvironmentTests</module>
      <module>V2AddlFilterTests</module>
      <module>V2AddlPortletTests</module>
      <module>V2AddlRequestTests</module>
      <module>V2AddlResponseTests</module>
      <module>V2PortletTagLibraryTests</module>
      <module>V2PortletTagLibraryTests2</module>
      <module>V2PortletTagLibraryTests3</module>
      <module>V2DispatcherTests</module>
      <module>V2DispatcherTests2</module>
      <module>V2DispatcherTests3S</module>
      <module>V2DispatcherTests4</module>
      <module>V2DispatcherTests5</module>
      <module>V2DispatcherTests6</module>
      <module>V2DispatcherReqRespTests1</module>
      <module>V2DispatcherReqRespTests2</module>
      <module>V2DispatcherReqRespTests3</module>
      <module>V2DispatcherReqRespTests4</module>
      <module>V2DispatcherReqRespTests5S</module>
      <module>V2SigTestsAction</module>
      <module>V2SigTestsEnv</module>
      <module>V2SigTestsEvent</module>
      <module>V2SigTestsException</module>
      <module>V2SigTestsFilter</module>
      <module>V2SigTestsRender</module>
      <module>V2SigTestsResource</module>
      <module>V2SigTestsURL</module>
      <module>V2SigTestsWrapper</module>
      <module>V3PortletContextTests</module>
      <module>V3PortletConfigTests</module>
	  <module>V3URLTests</module>
	  <module>V3RenderStateTests</module>
      <module>V3HeaderPortletTests</module>
      <module>deploy</module>
      <module>driver</module>
   </modules>

   <dependencyManagement>
      <dependencies>

         <!-- the portlet tag library -->
         <dependency>
            <groupId>org.apache.portals.pluto</groupId>
            <artifactId>pluto-taglib</artifactId>
            <version>${project.version}</version>
            <scope>provided</scope>
         </dependency>

         <!-- For creating and executing tests -->
         <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>2.53.0</version>
            <scope>test</scope>
         </dependency>
         <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>htmlunit-driver</artifactId>
            <version>2.21</version>
            <scope>test</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <build>
      <finalName>${project.artifactId}</finalName>

      <pluginManagement>
         <plugins>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-jar-plugin</artifactId>
               <configuration>
                  <skipIfEmpty>true</skipIfEmpty>
               </configuration>
            </plugin>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-war-plugin</artifactId>
               <configuration>
                  <archiveClasses>false</archiveClasses>
                  <failOnMissingWebXml>false</failOnMissingWebXml>
                  <webResources>
                     <webResource>
                        <directory>${project.build.directory}/${test.file.dir}</directory>
                        <targetPath>${test.file.dir}</targetPath>
                     </webResource>
                  </webResources>
               </configuration>
            </plugin>

            <!-- For Performing xml translations to create test.xml files -->
            <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>xml-maven-plugin</artifactId>
               <version>1.0</version>
               <executions>
               
                  <!-- For generating test case list from portlet.xml and additionalTCs.xml files -->
                  <execution>
                     <id>generate-testcases</id>
                     <phase>generate-resources</phase>
                     <goals>
                        <goal>transform</goal>
                     </goals>
                     <configuration>
                        <skip>${additional.testcases.only}</skip>
                        <transformationSets>
                     
                           <!-- automatically generate test case list for module -->
                           <transformationSet>
                              <dir>src/main/webapp/WEB-INF</dir>
                              <includes>
                                 <include>portlet.xml</include>
                              </includes>
                              <outputDir>${project.build.directory}/${test.file.dir}</outputDir>
                              <fileMappers>
                                 <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.MergeFileMapper">
                                    <targetName>${test.file.name}</targetName>
                                 </fileMapper>
                              </fileMappers>
                              <parameters>
                                 <parameter>
                                    <name>additionalTCs</name>
                                    <value>${additional.testcase.uri}</value>
                                 </parameter>
                                 <parameter>
                                    <name>copyOnly</name>
                                    <value>${additional.testcases.only}</value>
                                 </parameter>
                              </parameters>
                              <stylesheet>${project.build.directory}/xml-resources/${test.file.xsl}</stylesheet>
                           </transformationSet>
                     
                        </transformationSets>
                     </configuration>
                  </execution>
                  
                  <!-- For generating page file from portlet.xml -->
                  <execution>
                     <id>generate-pagefile</id>
                     <phase>generate-resources</phase>
                     <goals>
                        <goal>transform</goal>
                     </goals>
                     <configuration>
                        <skip>${additional.pagefile.only}</skip>
                        <transformationSets>
                     
                           <!-- Automatically generate page file for the module -->
                           <transformationSet>
                              <dir>src/main/webapp/WEB-INF</dir>
                              <includes>
                                 <include>portlet.xml</include>
                              </includes>
                              <outputDir>${project.build.directory}/${test.file.dir}</outputDir>
                              <fileMappers>
                                 <fileMapper implementation="org.codehaus.plexus.components.io.filemappers.MergeFileMapper">
                                    <targetName>${page.file.name}</targetName>
                                 </fileMapper>
                              </fileMappers>
                              <parameters>
                                 <parameter>
                                    <name>portlet-app-context</name>
                                    <value>${project.artifactId}-${project.version}</value>
                                 </parameter>
                              </parameters>
                              <stylesheet>${project.build.directory}/xml-resources/${page.file.xsl}</stylesheet>
                           </transformationSet>
                     
                        </transformationSets>
                     </configuration>
                  </execution>
               </executions>
            </plugin>

            <!-- For extracting the XML transformation stylesheets from common module -->
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-dependency-plugin</artifactId>
               <version>2.8</version>
               <executions>
                  <execution>
                     <id>xml-resource-dependencies</id>
                     <phase>generate-sources</phase>
                     <goals>
                        <goal>unpack-dependencies</goal>
                     </goals>
                     <configuration>
                        <includeArtifactIds>tck-common</includeArtifactIds>
                        <includes>xml-resources/**</includes>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                     </configuration>
                  </execution>
               </executions>
            </plugin>
            
            <!-- For copying the page & testcase files for V3 module build -->
            <plugin>
               <groupId>com.coderplus.maven.plugins</groupId>
               <artifactId>copy-rename-maven-plugin</artifactId>
               <version>1.0.1</version>
               <executions>
                  <execution>
                     <id>copy-files</id>
                     <phase>generate-sources</phase>
                     <goals>
                        <goal>copy</goal>
                     </goals>
                     <configuration>
                        <fileSets>
                           <fileSet>
                              <sourceFile>src/main/resources/xml-resources/additionalTCs.xml</sourceFile>
                              <destinationFile>target/${test.file.dir}/${project.artifactId}-tests.xml</destinationFile>
                           </fileSet>
                           <fileSet>
                              <sourceFile>src/main/resources/xml-resources/additionalPages.xml</sourceFile>
                              <destinationFile>target/${test.file.dir}/${project.artifactId}-pages.xml</destinationFile>
                           </fileSet>                
                        </fileSets>
                     </configuration>
                  </execution>
               </executions>
            </plugin>
             
         </plugins>
      </pluginManagement>

      <plugins>
      
         <!-- skip legal file checking for now -->
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>ianal-maven-plugin</artifactId>
            <executions>
               <execution>
                  <goals>
                     <goal>verify-legal-files</goal>
                  </goals>
                  <configuration>
                     <skip>true</skip>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
               <doctitle>
                  JSR 362 Portlet Specification 3.0 TCK Working
                  Document
               </doctitle>
               <windowtitle>
                  JSR 362 Portlet Specification 3.0 TCK
                  Working Document
               </windowtitle>
               <stylesheetfile>${javadoc.css.file}</stylesheetfile>
               <!-- link to Java EE APIs for cross-references -->
               <links>
                  <link>http://docs.oracle.com/javaee/7/api/</link>
               </links>
               <docfilessubdirs>true</docfilessubdirs>
               <bottom>
               <![CDATA[Java Portlet Specification V3.0 Working Document.
                  See the <a href="doc-files/NOTICE.txt">Copyright</a> and 
                  <a href="doc-files/LICENSE.txt">License</a> provided with this distribution.
                  Use is subject to
                  <a href="http://www.apache.org/licenses/LICENSE-2.0">license terms</a>.]]>
               </bottom>
            </configuration>
            <executions>
               <execution>
                  <id>aggregate</id>
                  <goals>
                     <goal>aggregate</goal>
                  </goals>
                  <phase>site</phase>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

   <reporting>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <version>2.17</version>
            <configuration>
               <aggregate>true</aggregate>
               <reportsDirectories>
                  <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
                  <reportsDirectory>${project.build.directory}/jasmine</reportsDirectory>
               </reportsDirectories>
            </configuration>
         </plugin>
      </plugins>
   </reporting>

   <profiles>
      <profile>
         <id>pluto</id>
      </profile>
   </profiles>

</project>