portals-pluto-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From asfgr...@apache.org
Subject [02/22] portals-pluto git commit: PLUTO-733 Author Selenium-based tests for the Pluto V3 demos (create test utilities and add test for the Portlet Hub Demo)
Date Thu, 25 Oct 2018 20:19:34 GMT
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/5ea95519/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 00f37d8..a674f8d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,766 +1,792 @@
-<?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</groupId>
-    <artifactId>portals-pom</artifactId>
-    <version>1.4</version>
-  </parent>
-
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.portals.pluto</groupId>
-  <artifactId>pluto</artifactId>
-  <packaging>pom</packaging>
-  <name>Apache Pluto</name>
-  <version>3.0.2-SNAPSHOT</version>
-  <!-- Due to a bug in maven 2.0, the description must not contain any line breaks or tabs. -->
-  <description>Apache Pluto is the Reference Implementation of the Java Portlet Specification.</description>
-  <url>http://portals.apache.org/pluto</url>
-
-  <issueManagement>
-    <system>jira</system>
-    <url>http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10560</url>
-  </issueManagement>
-  <inceptionYear>2003</inceptionYear>
-
-
-  <!-- Mailing Lists ======================================================= -->
-
-  <mailingLists>
-    <mailingList>
-      <name>Pluto User List</name>
-      <subscribe>pluto-user-subscribe@portals.apache.org</subscribe>
-      <unsubscribe>pluto-user-unsubscribe@portals.apache.org</unsubscribe>
-      <post>pluto-user@portals.apache.org</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/portals-pluto-user</archive>
-    </mailingList>
-    <mailingList>
-      <name>Pluto Developer List</name>
-      <subscribe>pluto-dev-subscribe@portals.apache.org</subscribe>
-      <unsubscribe>pluto-dev-unsubscribe@portals.apache.org</unsubscribe>
-      <post>pluto-dev@portals.apache.org</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/portals-pluto-dev</archive>
-    </mailingList>
-    <mailingList>
-      <name>Pluto SCM List</name>
-      <subscribe>pluto-scm-subscribe@portals.apache.org</subscribe>
-      <unsubscribe>pluto-scm-unsubscribe@portals.apache.org</unsubscribe>
-      <post>pluto-scm@portals.apache.org</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/portals-pluto-scm</archive>
-    </mailingList>
-  </mailingLists>
-
-
-  <!-- Pluto Committers ==================================================== -->
-
-  <!-- Email format: [name]#a@T#[domain].d0t.[extension]
-'@' and '.' characters are added because m2 seems to need them to
-generate mailto links. -->
-
-  <developers>
-
-    <developer>
-      <name>Michael Blum</name>
-      <id>blumm</id>
-      <email>blumm#a@T#apache.d0t.org</email>
-    </developer>
-
-    <developer>
-      <name>Carsten Ziegeler</name>
-      <id>cziegeler</id>
-      <email>cziegeler#a@T#apache.d0t.org</email>
-    </developer>
-
-    <developer>
-      <name>David DeWolf</name>
-      <id>ddewolf</id>
-      <email>ddewolf@apache.org</email>
-      <timezone>-4</timezone>
-      <url>http://www.daviddewolf.com</url>
-      <organization>Three Pillar Software, Inc.</organization>
-      <organizationUrl>http://www.threepillarsoftware.com</organizationUrl>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Scott Nicklous</name>
-      <id>msnicklous</id>
-      <email>msnicklous#a@T#apache.d0t.org</email>
-      <timezone>+1</timezone>
-      <organization>IBM Corporation</organization>
-      <organizationUrl>http://www.ibm.com</organizationUrl>
-      <roles>
-        <role>Specification Lead, JSR 362 Portlet Specification 3.0</role>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Neil Griffin</name>
-      <id>asfgriff</id>
-      <email>neil.griffin#a@T#portletfaces.d0t.org</email>
-      <timezone>+8</timezone>
-      <organization>Liferay</organization>
-      <organizationUrl>https://www.liferay.com/</organizationUrl>
-      <roles>
-        <role>Specification Architect, JSR 362 Portlet Specification 3.0</role>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Nick Lothian</name>
-      <id>nlothian</id>
-      <email>nlothian#a@T#apache.d0t.org</email>
-    </developer>
-
-    <developer>
-      <name>Craig Doremus</name>
-      <id>cdoremus</id>
-      <email>cdoremus#a@T#apache.d0t.org</email>
-    </developer>
-
-    <developer>
-      <name>Zhong Zheng</name>
-      <id>zheng</id>
-      <email>zheng#a@T#apache.d0t.org</email>
-      <timezone>+1</timezone>
-      <organization />
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Santiago Gala</name>
-      <id>sgala</id>
-      <email>sgala#a@T#hisitech.d0t.com</email>
-      <organization />
-    </developer>
-
-    <developer>
-      <name>Raphael Luta</name>
-      <id>raphael</id>
-      <email>raphael#a@T#apache.d0t.org</email>
-      <organization />
-    </developer>
-
-    <developer>
-      <name>David S. Taylor</name>
-      <id>taylor</id>
-      <email>david#a@T#bluesunrise.d0t.com</email>
-      <timezone>+8</timezone>
-      <organization>Bluesunrise</organization>
-      <organizationUrl>https://www.bluesunrise.com/</organizationUrl>
-      <roles>
-        <role>Expert Group Member, JSR 362 Portlet Specification 3.0</role>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Scott T. Weaver</name>
-      <id>weaver</id>
-      <email>weaver#a@T#apache.d0t.org</email>
-    </developer>
-
-    <developer>
-      <name>Stefan Hepper</name>
-      <id>sthepper</id>
-      <email>sthepper#a@T#apache.d0t.org</email>
-    </developer>
-
-    <developer>
-      <name>Elliot Metsger</name>
-      <id>esm</id>
-      <email>esm#a@T#apache.d0t.org</email>
-      <timezone>-4</timezone>
-      <url>http://uppertank.net/blog</url>
-      <organization>Johns Hopkins University, Sheridan Libraries</organization>
-      <organizationUrl>http://www.library.jhu.edu</organizationUrl>
-    </developer>
-
-    <developer>
-      <name>Ate Douma</name>
-      <id>ate</id>
-      <email>ate#aT#apache.d0t.org</email>
-      <timezone>+2</timezone>
-      <organization>Hippo</organization>
-      <organizationUrl>http://www.onehippo.com</organizationUrl>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>David Jencks</name>
-      <id>djencks</id>
-      <email>djencks#aT#apache.d0t.org</email>
-      <timezone>-7</timezone>
-    </developer>
-
-  </developers>
-
-
-  <!-- Pluto Contributors ================================================== -->
-
-  <contributors>
-    <contributor>
-      <name>Michael Westbay</name>
-      <email>westbay#a@T#users.d0t.sourceforge.d0t.net</email>
-    </contributor>
-    <contributor>
-      <name>Ken Weiner</name>
-      <email>kweiner#a@T#unicon.d0t.net</email>
-    </contributor>
-    <contributor>
-      <name>Ken Atherton</name>
-      <email>katherto#a@T#visa.d0t.com</email>
-    </contributor>
-    <contributor>
-      <name>David Hay</name>
-    </contributor>
-
-    <contributor>
-
-    </contributor>
-  </contributors>
-
-   <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>
-      <tag>HEAD</tag>
-   </scm>
-
-  <!-- Dependency Version Properties ======================================= -->
-
-  <!--
-  NOTE:
-
-  Modification of these properties affects:
-  1)  pluto-maven-plugin/src/main/resources/versions.properties as well!
-  -->
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-
-    <pluto.container.name>Pluto</pluto.container.name>
-    <javax.portlet.version.major>3</javax.portlet.version.major>
-    <javax.portlet.version.minor>0</javax.portlet.version.minor>
-    <portals.portlet-api.version>${project.version}</portals.portlet-api.version>
-    <servlet-api.version>8.0.28</servlet-api.version>
-    <jsp-api.version>8.0.28</jsp-api.version>
-    <jstl.version>8.0.28</jstl.version>
-    <el-api.version>8.0.28</el-api.version>
-    <taglibs.standard.version>1.2.1</taglibs.standard.version>
-    <jaxb.version>2.1</jaxb.version>
-    <jaxb-impl.version>2.1.9</jaxb-impl.version>
-    <stax.impl.version>1.2.0</stax.impl.version>
-    <commons-digester.version>1.8</commons-digester.version>
-    <commons-cli.version>1.0</commons-cli.version>
-    <slf4j.version>1.7.5</slf4j.version>
-    <springframework.version>2.0.2</springframework.version>
-<!--     <springframework.version>4.2.3.RELEASE</springframework.version> -->
-    <maven.version>2.0.5</maven.version>
-    <ant.version>1.6.5</ant.version>
-    <commons-lang.version>3.4</commons-lang.version>
-    <commons-io.version>2.4</commons-io.version>
-    <ccpp-api.version>1.0</ccpp-api.version>
-    <junit.version>4.12</junit.version>
-    <jmock.version>1.2.0</jmock.version>
-    <xmlunit.version>1.1</xmlunit.version>
-    <cdi.version>2.3.1.Final</cdi.version>
-    <annotation-detector.version>3.0.5</annotation-detector.version>
-
-    <!-- The following properties are not directly used as maven
-dependencies, they're used by the maven pluto plugin for
-handling installation dependencies
-TODO: Check if we need all of them. -->
-    <xerces.version>2.6.2</xerces.version>
-    <xalan.version>2.7.0</xalan.version>
-    <castor.version>1.1.1</castor.version>
-    <commons-collections.version>3.2</commons-collections.version>
-    <commons-httpclient.version>3.0</commons-httpclient.version>
-    <commons-beanutils.version>1.7.0</commons-beanutils.version>
-    <log4j.version>1.2.14</log4j.version>
-    <activation.version>1.1</activation.version>
-    <ccpp-ri.version>1.0</ccpp-ri.version>
-    <rdffilter.version>1.0</rdffilter.version>
-    <jena.version>1.4.0</jena.version>
-
-    <!-- scope of certain dependencies is "compile" for deployment on tomcat, 
-         but "provided" for deployment on tomee. See tomee profile. -->
-    <dependency.scope>compile</dependency.scope>
-    
-    <!-- following properties control whether or not demos are included in page 
-         config file (see profile 'excludeDemos' below) -->
-    <includeDemosBegin />
-	 <includeDemosEnd />
-  </properties>
-
-  <dependencyManagement>
-    <dependencies>
-      <!-- Logging =========================================== -->
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-api</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-jdk14</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>jcl-over-slf4j</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-log4j12</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>log4j</groupId>
-        <artifactId>log4j</artifactId>
-        <version>1.2.17</version>
-      </dependency>
-
-      <!-- Specification Libraries =========================================== -->
-      <dependency>
-         <groupId>javax.portlet</groupId>
-         <artifactId>portlet-api</artifactId>
-         <version>${project.version}</version>
-         <scope>provided</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-servlet-api</artifactId>
-        <version>${servlet-api.version}</version>
-        <scope>provided</scope>
-      </dependency>
-
-      <dependency>
-        <groupId>javax.xml.bind</groupId>
-        <artifactId>jaxb-api</artifactId>
-        <version>${jaxb.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>com.sun.xml.bind</groupId>
-        <artifactId>jaxb-impl</artifactId>
-        <version>${jaxb-impl.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>stax</groupId>
-        <artifactId>stax</artifactId>
-        <version>${stax.impl.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>stax</groupId>
-            <artifactId>stax-api</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      
-      <!-- CDI Library -->
-      <dependency>
-         <groupId>javax.enterprise</groupId>
-         <artifactId>cdi-api</artifactId>
-         <version>1.2</version>
-      </dependency>
-      <dependency>
-          <groupId>org.jboss.weld.servlet</groupId>
-          <artifactId>weld-servlet</artifactId>
-          <version>${cdi.version}</version>
-      </dependency>      
-
-      <!-- For method annotation scanning ==================================== -->
-      <dependency>
-         <groupId>eu.infomas</groupId>
-         <artifactId>annotation-detector</artifactId>
-         <version>${annotation-detector.version}</version>
-      </dependency>
-
-      <!--  CCPP Libraries -->
-      <dependency>
-        <groupId>javax.ccpp</groupId>
-        <artifactId>ccpp</artifactId>
-        <version>${ccpp-api.version}</version>
-      </dependency>
-
-      <!-- Testing Libraries ================================================= -->
-      <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>${junit.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>jmock</groupId>
-        <artifactId>jmock</artifactId>
-        <version>${jmock.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>jmock</groupId>
-        <artifactId>jmock-cglib</artifactId>
-        <version>${jmock.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>xmlunit</groupId>
-        <artifactId>xmlunit</artifactId>
-        <version>${xmlunit.version}</version>
-        <scope>test</scope>
-      </dependency>
-      <!-- Misc ================================================= -->
-      <dependency>
-        <groupId>ant</groupId>
-        <artifactId>ant</artifactId>
-        <version>${ant.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-core</artifactId>
-        <version>${maven.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-artifact</artifactId>
-        <version>${maven.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-model</artifactId>
-        <version>${maven.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-project</artifactId>
-        <version>${maven.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-plugin-api</artifactId>
-        <version>${maven.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-jsp-api</artifactId>
-        <version>${jsp-api.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-el-api</artifactId>
-        <version>${el-api.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.taglibs</groupId>
-        <artifactId>taglibs-standard-spec</artifactId>
-        <version>${taglibs.standard.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.taglibs</groupId>
-        <artifactId>taglibs-standard-impl</artifactId>
-        <version>${taglibs.standard.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.taglibs</groupId>
-        <artifactId>taglibs-standard-jstlel</artifactId>
-        <version>${taglibs.standard.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-core</artifactId>
-        <version>${springframework.version}</version>
-        <scope>compile</scope>
-        <exclusions>
-          <exclusion>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-beans</artifactId>
-        <version>${springframework.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-web</artifactId>
-        <version>${springframework.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>commons-io</groupId>
-        <artifactId>commons-io</artifactId>
-        <version>${commons-io.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-lang3</artifactId>
-        <version>${commons-lang.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-digester</groupId>
-        <artifactId>commons-digester</artifactId>
-        <version>${commons-digester.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>commons-cli</groupId>
-        <artifactId>commons-cli</artifactId>
-        <version>${commons-cli.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.portals.pluto</groupId>
-          <artifactId>pluto-maven-plugin</artifactId>
-          <version>${project.version}</version>
-        </plugin>
-        <plugin>
-           <groupId>org.apache.maven.plugins</groupId>
-           <artifactId>maven-jar-plugin</artifactId>
-           <version>2.4</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-war-plugin</artifactId>
-          <version>3.2.2</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <version>0.12</version>
-          <configuration>
-            <excludes>maven-archetypes/**/archetype-resources/**/*</excludes>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-antrun-plugin</artifactId>
-          <version>1.7</version>
-        </plugin>
-        <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>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-javadoc-plugin</artifactId>
-          <version>2.9</version>
-          <configuration>
-             <additionalparam>-Xdoclint:none -Xdoclint:-missing</additionalparam>
-             <!-- link to Java EE APIs for cross-references -->
-             <links>
-                <link>http://docs.oracle.com/javaee/7/api/</link>
-             </links>
-             <docfilessubdirs>true</docfilessubdirs>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.felix</groupId>
-          <artifactId>maven-bundle-plugin</artifactId>
-          <version>3.2.0</version>
-          <extensions>true</extensions>
-          <configuration>
-            <instructions>
-              <Implementation-Title>${project.name}</Implementation-Title>
-              <Specification-Version>${project.version}</Specification-Version>
-              <Implementation-Version>${project.version}</Implementation-Version>
-              <Bundle-DocURL>${project.url}</Bundle-DocURL>
-            </instructions>
-          </configuration>
-        </plugin>
-        <plugin>
-           <groupId>org.apache.maven.scm</groupId>
-           <artifactId>maven-scm-providers-git</artifactId>
-           <!-- http://jira.codehaus.org/browse/SCM-444 -->
-           <version>(,1.4]</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-release-plugin</artifactId>
-          <configuration>
-            <!-- During release (prepare) the org.apache.felix maven-bundle-plugin needs classpath access to just build dependent artifacts
-                 like the pluto-container-api to determine the needed OSGi imports.
-                 However, the default maven-release-plugin goals (clean verify) somehow don't provide those.
-                 To fix that, the default release plugin set of preparationGoals is changed to do an "install" instead of just "verify".
-            -->
-            <preparationGoals>clean install</preparationGoals>
-            <mavenExecutorId>forked-path</mavenExecutorId>
-            <autoVersionSubmodules>true</autoVersionSubmodules>
-            <pushChanges>false</pushChanges>
-            <localCheckout>true</localCheckout>
-            
-            <!-- by default, the release build includes the V3 demos. To perform the release build without the demos, 
-                 activate the 'excludeDemos profile 'arguments' line as shown below. -->
-            <!--
-            <arguments>-Ppluto,excludeDemos</arguments>
-            -->
-            <arguments>-Ppluto</arguments>
-          </configuration>
-        </plugin>
-
-			<!-- Javascript compressor plugin -->
-			<plugin>
-				<groupId>net.alchim31.maven</groupId>
-				<artifactId>yuicompressor-maven-plugin</artifactId>
-				<version>1.1</version>
-				<executions>
-					<execution>
-						<id>compress-js</id>
-						<goals>
-							<goal>compress</goal>
-						</goals>
-						<configuration>
-							<jswarn>false</jswarn>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>all</id>
-      <activation>
-        <activeByDefault>true</activeByDefault>
-        <!-- profile must also be activated when building for tomee -->
-        <property>
-          <name>tomee</name>
-        </property>
-      </activation>
-      
-      <!-- Pluto Modules ======================================================= -->
-      <modules>
-        <!-- Portlet API module (spec -->
-        <module>portlet-api</module>
-
-        <!-- Pluto Container API -->
-        <module>pluto-container-api</module>
-
-        <!-- Pluto Core Modules -->
-        <module>pluto-container</module>
-        <module>pluto-taglib</module>
-
-        <!-- Pluto Portal and Testsuite Modules -->
-        <module>pluto-container-driver-api</module>
-        <module>pluto-portal-driver</module>
-        <module>pluto-portal-driver-impl</module>
-        <module>pluto-portal</module>
-        <module>pluto-testsuite</module>
-
-        <!-- Aggregated common jar for shared library location -->
-        <module>pluto-common</module>
-        
-        <!-- PortletHub demo portlets -->
-        <module>ChatRoomDemo</module>
-        <module>PortletHubDemo</module>
-        <module>PortletV3Demo</module>
-        <module>PortletV3AnnotatedDemo</module>
-
-        <!-- Pluto Utilities, Maven Plugins and Ant Tasks -->
-        <module>pluto-util</module>
-        <module>maven-pluto-plugin</module>
-        <module>pluto-ant-tasks</module>
-        <module>pluto-site-skin</module>
-        
-        <!-- the Technology Compliance Kit -->
-        <module>portlet-tck_3.0</module>
-      </modules>
-    </profile>
-
-    <profile>
-      <id>website</id>
-      <!-- For building website documentation, there's no need to include modules. -->
-      <modules />
-    </profile>
-    
-    <!-- To build Pluto for deployment on tomee, activate this profile -->
-    <!-- Activate using the tomee property: mvn clean install -Dtomee -->
-    <profile>
-      <id>tomee</id>
-      <activation>
-        <property>
-          <name>tomee</name>
-        </property>
-      </activation>
-      <properties>
-         <!-- scope of certain dependencies is "compile" for deployment on tomcat, 
-              but "provided" for deployment on tomee. See tomee profile. -->
-		  <dependency.scope>provided</dependency.scope>
-      </properties>
-    </profile>
-
-  </profiles>
-
-</project>
+<?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</groupId>
+    <artifactId>portals-pom</artifactId>
+    <version>1.4</version>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.portals.pluto</groupId>
+  <artifactId>pluto</artifactId>
+  <packaging>pom</packaging>
+  <name>Apache Pluto</name>
+  <version>3.0.2-SNAPSHOT</version>
+  <!-- Due to a bug in maven 2.0, the description must not contain any line breaks or tabs. -->
+  <description>Apache Pluto is the Reference Implementation of the Java Portlet Specification.</description>
+  <url>http://portals.apache.org/pluto</url>
+
+  <issueManagement>
+    <system>jira</system>
+    <url>http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10560</url>
+  </issueManagement>
+  <inceptionYear>2003</inceptionYear>
+
+
+  <!-- Mailing Lists ======================================================= -->
+
+  <mailingLists>
+    <mailingList>
+      <name>Pluto User List</name>
+      <subscribe>pluto-user-subscribe@portals.apache.org</subscribe>
+      <unsubscribe>pluto-user-unsubscribe@portals.apache.org</unsubscribe>
+      <post>pluto-user@portals.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/portals-pluto-user</archive>
+    </mailingList>
+    <mailingList>
+      <name>Pluto Developer List</name>
+      <subscribe>pluto-dev-subscribe@portals.apache.org</subscribe>
+      <unsubscribe>pluto-dev-unsubscribe@portals.apache.org</unsubscribe>
+      <post>pluto-dev@portals.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/portals-pluto-dev</archive>
+    </mailingList>
+    <mailingList>
+      <name>Pluto SCM List</name>
+      <subscribe>pluto-scm-subscribe@portals.apache.org</subscribe>
+      <unsubscribe>pluto-scm-unsubscribe@portals.apache.org</unsubscribe>
+      <post>pluto-scm@portals.apache.org</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/portals-pluto-scm</archive>
+    </mailingList>
+  </mailingLists>
+
+
+  <!-- Pluto Committers ==================================================== -->
+
+  <!-- Email format: [name]#a@T#[domain].d0t.[extension]
+'@' and '.' characters are added because m2 seems to need them to
+generate mailto links. -->
+
+  <developers>
+
+    <developer>
+      <name>Michael Blum</name>
+      <id>blumm</id>
+      <email>blumm#a@T#apache.d0t.org</email>
+    </developer>
+
+    <developer>
+      <name>Carsten Ziegeler</name>
+      <id>cziegeler</id>
+      <email>cziegeler#a@T#apache.d0t.org</email>
+    </developer>
+
+    <developer>
+      <name>David DeWolf</name>
+      <id>ddewolf</id>
+      <email>ddewolf@apache.org</email>
+      <timezone>-4</timezone>
+      <url>http://www.daviddewolf.com</url>
+      <organization>Three Pillar Software, Inc.</organization>
+      <organizationUrl>http://www.threepillarsoftware.com</organizationUrl>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Scott Nicklous</name>
+      <id>msnicklous</id>
+      <email>msnicklous#a@T#apache.d0t.org</email>
+      <timezone>+1</timezone>
+      <organization>IBM Corporation</organization>
+      <organizationUrl>http://www.ibm.com</organizationUrl>
+      <roles>
+        <role>Specification Lead, JSR 362 Portlet Specification 3.0</role>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Neil Griffin</name>
+      <id>asfgriff</id>
+      <email>neil.griffin#a@T#portletfaces.d0t.org</email>
+      <timezone>+8</timezone>
+      <organization>Liferay</organization>
+      <organizationUrl>https://www.liferay.com/</organizationUrl>
+      <roles>
+        <role>Specification Architect, JSR 362 Portlet Specification 3.0</role>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Nick Lothian</name>
+      <id>nlothian</id>
+      <email>nlothian#a@T#apache.d0t.org</email>
+    </developer>
+
+    <developer>
+      <name>Craig Doremus</name>
+      <id>cdoremus</id>
+      <email>cdoremus#a@T#apache.d0t.org</email>
+    </developer>
+
+    <developer>
+      <name>Zhong Zheng</name>
+      <id>zheng</id>
+      <email>zheng#a@T#apache.d0t.org</email>
+      <timezone>+1</timezone>
+      <organization />
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Santiago Gala</name>
+      <id>sgala</id>
+      <email>sgala#a@T#hisitech.d0t.com</email>
+      <organization />
+    </developer>
+
+    <developer>
+      <name>Raphael Luta</name>
+      <id>raphael</id>
+      <email>raphael#a@T#apache.d0t.org</email>
+      <organization />
+    </developer>
+
+    <developer>
+      <name>David S. Taylor</name>
+      <id>taylor</id>
+      <email>david#a@T#bluesunrise.d0t.com</email>
+      <timezone>+8</timezone>
+      <organization>Bluesunrise</organization>
+      <organizationUrl>https://www.bluesunrise.com/</organizationUrl>
+      <roles>
+        <role>Expert Group Member, JSR 362 Portlet Specification 3.0</role>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Scott T. Weaver</name>
+      <id>weaver</id>
+      <email>weaver#a@T#apache.d0t.org</email>
+    </developer>
+
+    <developer>
+      <name>Stefan Hepper</name>
+      <id>sthepper</id>
+      <email>sthepper#a@T#apache.d0t.org</email>
+    </developer>
+
+    <developer>
+      <name>Elliot Metsger</name>
+      <id>esm</id>
+      <email>esm#a@T#apache.d0t.org</email>
+      <timezone>-4</timezone>
+      <url>http://uppertank.net/blog</url>
+      <organization>Johns Hopkins University, Sheridan Libraries</organization>
+      <organizationUrl>http://www.library.jhu.edu</organizationUrl>
+    </developer>
+
+    <developer>
+      <name>Ate Douma</name>
+      <id>ate</id>
+      <email>ate#aT#apache.d0t.org</email>
+      <timezone>+2</timezone>
+      <organization>Hippo</organization>
+      <organizationUrl>http://www.onehippo.com</organizationUrl>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>David Jencks</name>
+      <id>djencks</id>
+      <email>djencks#aT#apache.d0t.org</email>
+      <timezone>-7</timezone>
+    </developer>
+
+  </developers>
+
+
+  <!-- Pluto Contributors ================================================== -->
+
+  <contributors>
+    <contributor>
+      <name>Michael Westbay</name>
+      <email>westbay#a@T#users.d0t.sourceforge.d0t.net</email>
+    </contributor>
+    <contributor>
+      <name>Ken Weiner</name>
+      <email>kweiner#a@T#unicon.d0t.net</email>
+    </contributor>
+    <contributor>
+      <name>Ken Atherton</name>
+      <email>katherto#a@T#visa.d0t.com</email>
+    </contributor>
+    <contributor>
+      <name>David Hay</name>
+    </contributor>
+
+    <contributor>
+
+    </contributor>
+  </contributors>
+
+   <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>
+      <tag>HEAD</tag>
+   </scm>
+
+  <!-- Dependency Version Properties ======================================= -->
+
+  <!--
+  NOTE:
+
+  Modification of these properties affects:
+  1)  pluto-maven-plugin/src/main/resources/versions.properties as well!
+  -->
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+    <pluto.container.name>Pluto</pluto.container.name>
+    <javax.portlet.version.major>3</javax.portlet.version.major>
+    <javax.portlet.version.minor>0</javax.portlet.version.minor>
+    <portals.portlet-api.version>${project.version}</portals.portlet-api.version>
+    <servlet-api.version>8.0.28</servlet-api.version>
+    <jsp-api.version>8.0.28</jsp-api.version>
+    <jstl.version>8.0.28</jstl.version>
+    <el-api.version>8.0.28</el-api.version>
+    <taglibs.standard.version>1.2.1</taglibs.standard.version>
+    <jaxb.version>2.1</jaxb.version>
+    <jaxb-impl.version>2.1.9</jaxb-impl.version>
+    <stax.impl.version>1.2.0</stax.impl.version>
+    <commons-digester.version>1.8</commons-digester.version>
+    <commons-cli.version>1.0</commons-cli.version>
+    <slf4j.version>1.7.5</slf4j.version>
+    <springframework.version>2.0.2</springframework.version>
+<!--     <springframework.version>4.2.3.RELEASE</springframework.version> -->
+    <maven.version>2.0.5</maven.version>
+    <ant.version>1.6.5</ant.version>
+    <commons-lang.version>3.4</commons-lang.version>
+    <commons-io.version>2.4</commons-io.version>
+    <ccpp-api.version>1.0</ccpp-api.version>
+    <junit.version>4.12</junit.version>
+    <jmock.version>1.2.0</jmock.version>
+    <xmlunit.version>1.1</xmlunit.version>
+    <cdi.version>2.3.1.Final</cdi.version>
+    <annotation-detector.version>3.0.5</annotation-detector.version>
+
+    <!-- The following properties are not directly used as maven
+dependencies, they're used by the maven pluto plugin for
+handling installation dependencies
+TODO: Check if we need all of them. -->
+    <xerces.version>2.6.2</xerces.version>
+    <xalan.version>2.7.0</xalan.version>
+    <castor.version>1.1.1</castor.version>
+    <commons-collections.version>3.2</commons-collections.version>
+    <commons-httpclient.version>3.0</commons-httpclient.version>
+    <commons-beanutils.version>1.7.0</commons-beanutils.version>
+    <log4j.version>1.2.14</log4j.version>
+    <activation.version>1.1</activation.version>
+    <ccpp-ri.version>1.0</ccpp-ri.version>
+    <rdffilter.version>1.0</rdffilter.version>
+    <jena.version>1.4.0</jena.version>
+
+    <!-- scope of certain dependencies is "compile" for deployment on tomcat, 
+         but "provided" for deployment on tomee. See tomee profile. -->
+    <dependency.scope>compile</dependency.scope>
+    
+    <!-- following properties control whether or not demos are included in page 
+         config file (see profile 'excludeDemos' below) -->
+    <includeDemosBegin />
+	 <includeDemosEnd />
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <!-- Logging =========================================== -->
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-api</artifactId>
+        <version>${slf4j.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-jdk14</artifactId>
+        <version>${slf4j.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>jcl-over-slf4j</artifactId>
+        <version>${slf4j.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-log4j12</artifactId>
+        <version>${slf4j.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>log4j</groupId>
+        <artifactId>log4j</artifactId>
+        <version>1.2.17</version>
+      </dependency>
+
+      <!-- Specification Libraries =========================================== -->
+      <dependency>
+         <groupId>javax.portlet</groupId>
+         <artifactId>portlet-api</artifactId>
+         <version>${project.version}</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.tomcat</groupId>
+        <artifactId>tomcat-servlet-api</artifactId>
+        <version>${servlet-api.version}</version>
+        <scope>provided</scope>
+      </dependency>
+
+      <dependency>
+        <groupId>javax.xml.bind</groupId>
+        <artifactId>jaxb-api</artifactId>
+        <version>${jaxb.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>com.sun.xml.bind</groupId>
+        <artifactId>jaxb-impl</artifactId>
+        <version>${jaxb-impl.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>stax</groupId>
+        <artifactId>stax</artifactId>
+        <version>${stax.impl.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+      
+      <!-- CDI Library -->
+      <dependency>
+         <groupId>javax.enterprise</groupId>
+         <artifactId>cdi-api</artifactId>
+         <version>1.2</version>
+      </dependency>
+      <dependency>
+          <groupId>org.jboss.weld.servlet</groupId>
+          <artifactId>weld-servlet</artifactId>
+          <version>${cdi.version}</version>
+      </dependency>      
+
+      <!-- For method annotation scanning ==================================== -->
+      <dependency>
+         <groupId>eu.infomas</groupId>
+         <artifactId>annotation-detector</artifactId>
+         <version>${annotation-detector.version}</version>
+      </dependency>
+
+      <!--  CCPP Libraries -->
+      <dependency>
+        <groupId>javax.ccpp</groupId>
+        <artifactId>ccpp</artifactId>
+        <version>${ccpp-api.version}</version>
+      </dependency>
+
+      <!-- Testing Libraries ================================================= -->
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>${junit.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>jmock</groupId>
+        <artifactId>jmock</artifactId>
+        <version>${jmock.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>jmock</groupId>
+        <artifactId>jmock-cglib</artifactId>
+        <version>${jmock.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>xmlunit</groupId>
+        <artifactId>xmlunit</artifactId>
+        <version>${xmlunit.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <!-- Misc ================================================= -->
+      <dependency>
+        <groupId>ant</groupId>
+        <artifactId>ant</artifactId>
+        <version>${ant.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-core</artifactId>
+        <version>${maven.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-artifact</artifactId>
+        <version>${maven.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-model</artifactId>
+        <version>${maven.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-project</artifactId>
+        <version>${maven.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-plugin-api</artifactId>
+        <version>${maven.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.tomcat</groupId>
+        <artifactId>tomcat-jsp-api</artifactId>
+        <version>${jsp-api.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.tomcat</groupId>
+        <artifactId>tomcat-el-api</artifactId>
+        <version>${el-api.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.taglibs</groupId>
+        <artifactId>taglibs-standard-spec</artifactId>
+        <version>${taglibs.standard.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.taglibs</groupId>
+        <artifactId>taglibs-standard-impl</artifactId>
+        <version>${taglibs.standard.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.taglibs</groupId>
+        <artifactId>taglibs-standard-jstlel</artifactId>
+        <version>${taglibs.standard.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.seleniumhq.selenium</groupId>
+         <artifactId>selenium-api</artifactId>
+         <version>3.11.0</version>
+         <scope>compile</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.seleniumhq.selenium</groupId>
+         <artifactId>selenium-java</artifactId>
+         <version>3.11.0</version>
+         <scope>test</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.seleniumhq.selenium</groupId>
+         <artifactId>htmlunit-driver</artifactId>
+         <version>2.21</version>
+         <scope>test</scope>
+      </dependency>
+      <dependency>
+         <groupId>com.codeborne</groupId>
+         <artifactId>phantomjsdriver</artifactId>
+         <version>1.3.0</version>
+         <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-core</artifactId>
+        <version>${springframework.version}</version>
+        <scope>compile</scope>
+        <exclusions>
+          <exclusion>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-beans</artifactId>
+        <version>${springframework.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-web</artifactId>
+        <version>${springframework.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+      <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>${commons-io.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-lang3</artifactId>
+        <version>${commons-lang.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>commons-digester</groupId>
+        <artifactId>commons-digester</artifactId>
+        <version>${commons-digester.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+      <dependency>
+        <groupId>commons-cli</groupId>
+        <artifactId>commons-cli</artifactId>
+        <version>${commons-cli.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.portals.pluto</groupId>
+          <artifactId>pluto-maven-plugin</artifactId>
+          <version>${project.version}</version>
+        </plugin>
+        <plugin>
+           <groupId>org.apache.maven.plugins</groupId>
+           <artifactId>maven-jar-plugin</artifactId>
+           <version>2.4</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-war-plugin</artifactId>
+          <version>3.2.2</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <version>0.12</version>
+          <configuration>
+            <excludes>maven-archetypes/**/archetype-resources/**/*</excludes>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-antrun-plugin</artifactId>
+          <version>1.7</version>
+        </plugin>
+        <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>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-javadoc-plugin</artifactId>
+          <version>2.9</version>
+          <configuration>
+             <additionalparam>-Xdoclint:none -Xdoclint:-missing</additionalparam>
+             <!-- link to Java EE APIs for cross-references -->
+             <links>
+                <link>http://docs.oracle.com/javaee/7/api/</link>
+             </links>
+             <docfilessubdirs>true</docfilessubdirs>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.felix</groupId>
+          <artifactId>maven-bundle-plugin</artifactId>
+          <version>3.2.0</version>
+          <extensions>true</extensions>
+          <configuration>
+            <instructions>
+              <Implementation-Title>${project.name}</Implementation-Title>
+              <Specification-Version>${project.version}</Specification-Version>
+              <Implementation-Version>${project.version}</Implementation-Version>
+              <Bundle-DocURL>${project.url}</Bundle-DocURL>
+            </instructions>
+          </configuration>
+        </plugin>
+        <plugin>
+           <groupId>org.apache.maven.scm</groupId>
+           <artifactId>maven-scm-providers-git</artifactId>
+           <!-- http://jira.codehaus.org/browse/SCM-444 -->
+           <version>(,1.4]</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-release-plugin</artifactId>
+          <configuration>
+            <!-- During release (prepare) the org.apache.felix maven-bundle-plugin needs classpath access to just build dependent artifacts
+                 like the pluto-container-api to determine the needed OSGi imports.
+                 However, the default maven-release-plugin goals (clean verify) somehow don't provide those.
+                 To fix that, the default release plugin set of preparationGoals is changed to do an "install" instead of just "verify".
+            -->
+            <preparationGoals>clean install</preparationGoals>
+            <mavenExecutorId>forked-path</mavenExecutorId>
+            <autoVersionSubmodules>true</autoVersionSubmodules>
+            <pushChanges>false</pushChanges>
+            <localCheckout>true</localCheckout>
+            
+            <!-- by default, the release build includes the V3 demos. To perform the release build without the demos, 
+                 activate the 'excludeDemos profile 'arguments' line as shown below. -->
+            <!--
+            <arguments>-Ppluto,excludeDemos</arguments>
+            -->
+            <arguments>-Ppluto</arguments>
+          </configuration>
+        </plugin>
+
+			<!-- Javascript compressor plugin -->
+			<plugin>
+				<groupId>net.alchim31.maven</groupId>
+				<artifactId>yuicompressor-maven-plugin</artifactId>
+				<version>1.1</version>
+				<executions>
+					<execution>
+						<id>compress-js</id>
+						<goals>
+							<goal>compress</goal>
+						</goals>
+						<configuration>
+							<jswarn>false</jswarn>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>all</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+        <!-- profile must also be activated when building for tomee -->
+        <property>
+          <name>tomee</name>
+        </property>
+      </activation>
+      
+      <!-- Pluto Modules ======================================================= -->
+      <modules>
+        <!-- Portlet API module (spec -->
+        <module>portlet-api</module>
+
+        <!-- Pluto Container API -->
+        <module>pluto-container-api</module>
+
+        <!-- Pluto Core Modules -->
+        <module>pluto-container</module>
+        <module>pluto-taglib</module>
+
+        <!-- Pluto Portal and Testsuite Modules -->
+        <module>pluto-container-driver-api</module>
+        <module>pluto-portal-driver</module>
+        <module>pluto-portal-driver-impl</module>
+        <module>pluto-portal</module>
+        <module>pluto-testsuite</module>
+
+        <!-- Aggregated common jar for shared library location -->
+        <module>pluto-common</module>
+        
+        <!-- PortletHub demo portlets -->
+        <module>ChatRoomDemo</module>
+        <module>PortletHubDemo</module>
+        <module>PortletV3Demo</module>
+        <module>PortletV3AnnotatedDemo</module>
+
+        <!-- Pluto Utilities, Maven Plugins and Ant Tasks -->
+        <module>pluto-util</module>
+        <module>maven-pluto-plugin</module>
+        <module>pluto-ant-tasks</module>
+        <module>pluto-site-skin</module>
+        
+        <!-- the Technology Compliance Kit -->
+        <module>test-base</module>
+        <module>portlet-tck_3.0</module>
+        <module>demo-integration-tests</module>
+      </modules>
+    </profile>
+
+    <profile>
+      <id>website</id>
+      <!-- For building website documentation, there's no need to include modules. -->
+      <modules />
+    </profile>
+    
+    <!-- To build Pluto for deployment on tomee, activate this profile -->
+    <!-- Activate using the tomee property: mvn clean install -Dtomee -->
+    <profile>
+      <id>tomee</id>
+      <activation>
+        <property>
+          <name>tomee</name>
+        </property>
+      </activation>
+      <properties>
+         <!-- scope of certain dependencies is "compile" for deployment on tomcat, 
+              but "provided" for deployment on tomee. See tomee profile. -->
+		  <dependency.scope>provided</dependency.scope>
+      </properties>
+    </profile>
+
+  </profiles>
+
+</project>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/5ea95519/portlet-tck_3.0/driver/pom.xml
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/driver/pom.xml b/portlet-tck_3.0/driver/pom.xml
index c93ac26..96e1e5c 100644
--- a/portlet-tck_3.0/driver/pom.xml
+++ b/portlet-tck_3.0/driver/pom.xml
@@ -39,6 +39,11 @@
          <scope>compile</scope>
       </dependency>
       <dependency>
+        <groupId>org.apache.portals.pluto</groupId>
+        <artifactId>test-base</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <scope>compile</scope>

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/5ea95519/portlet-tck_3.0/driver/src/main/java/javax/portlet/tck/driver/TCKLiferayTestDriver.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/driver/src/main/java/javax/portlet/tck/driver/TCKLiferayTestDriver.java b/portlet-tck_3.0/driver/src/main/java/javax/portlet/tck/driver/TCKLiferayTestDriver.java
index 01b72e5..7c24d8d 100644
--- a/portlet-tck_3.0/driver/src/main/java/javax/portlet/tck/driver/TCKLiferayTestDriver.java
+++ b/portlet-tck_3.0/driver/src/main/java/javax/portlet/tck/driver/TCKLiferayTestDriver.java
@@ -38,31 +38,14 @@ import static org.junit.Assert.assertTrue;
  *
  */
 @RunWith(value = Parameterized.class)
-public class TCKLiferayTestDriver extends TCKSimpleTestDriver {
+public class TCKLiferayTestDriver extends TCKTestDriver {
 
    private static Properties nonExclusiveTCs = new Properties();
-   private static String baseUrl;
    private static boolean hadToGet = false;
    private static boolean wasExclusive = false;
    private static boolean stillExclusive = false;
    private static boolean exclusive = false;
 
-   private void getBaseUrl() {
-
-      if (baseUrl == null || "".equals(baseUrl)) {
-         StringBuilder sb = new StringBuilder();
-         sb.append("http://");
-         sb.append(host);
-         if (port != null && !port.isEmpty()) {
-            sb.append(":");
-            sb.append(port);
-         }
-         sb.append("/");
-         sb.append(testContextBase);
-         baseUrl = sb.toString();
-      }
-   }
-
    private void getNonExclusiveTCs() {
       String nonExclusiveTCsFile = System.getProperty("test.non.exclusive.file", "");
       System.out.println("   nonExclusiveTCsFile  =" + nonExclusiveTCsFile);
@@ -83,9 +66,6 @@ public class TCKLiferayTestDriver extends TCKSimpleTestDriver {
 
    public TCKLiferayTestDriver(String p, String t) {
       super(p, t);
-      if (baseUrl == null) {
-         getBaseUrl();
-      }
       if (nonExclusiveTCs.size() == 0) {
          getNonExclusiveTCs();
       }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/5ea95519/portlet-tck_3.0/driver/src/main/java/javax/portlet/tck/driver/TCKSimpleTestDriver.java
----------------------------------------------------------------------
diff --git a/portlet-tck_3.0/driver/src/main/java/javax/portlet/tck/driver/TCKSimpleTestDriver.java b/portlet-tck_3.0/driver/src/main/java/javax/portlet/tck/driver/TCKSimpleTestDriver.java
deleted file mode 100644
index bfddae6..0000000
--- a/portlet-tck_3.0/driver/src/main/java/javax/portlet/tck/driver/TCKSimpleTestDriver.java
+++ /dev/null
@@ -1,619 +0,0 @@
-/*  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.
- */
-
-package javax.portlet.tck.driver;
-
-import static org.junit.Assert.*;
-
-import java.io.FileInputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.openqa.selenium.By;
-import org.openqa.selenium.JavascriptExecutor;
-import org.openqa.selenium.StaleElementReferenceException;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.chrome.ChromeOptions;
-import org.openqa.selenium.chrome.ChromeDriver;
-import org.openqa.selenium.firefox.FirefoxDriver;
-import org.openqa.selenium.firefox.FirefoxOptions;
-import org.openqa.selenium.htmlunit.HtmlUnitDriver;
-import org.openqa.selenium.ie.InternetExplorerDriver;
-import org.openqa.selenium.remote.DesiredCapabilities;
-import org.openqa.selenium.safari.SafariDriver;
-import org.openqa.selenium.phantomjs.PhantomJSDriver;
-import org.openqa.selenium.phantomjs.PhantomJSDriverService;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-import org.openqa.selenium.support.ui.WebDriverWait;
-
-import javax.portlet.tck.constants.Constants;
-
-
-/**
- * @author nick
- *
- */
-@RunWith(value = Parameterized.class)
-public class TCKSimpleTestDriver {
-
-   protected static String loginUrl, host, port, testFile, browser,
-   username, usernameId, password, passwordId, testContextBase, module;
-   protected static int timeout = 3; // for waiting on page load
-   protected static boolean useGeneratedUrl = true, debug = false, dryrun = false, scroll;
-
-   protected static WebDriver driver;
-   protected String page, tcName;
-   
-   protected List<String> debugLines = new ArrayList<>();
-
-   /**
-    * Reads the consolidated list of test cases and provides the list to Junit
-    * for parameterized testing.
-    * @return  a Collection of test cases to run
-    */
-   @SuppressWarnings("rawtypes")
-   @Parameters (name = "{1}")
-   public static Collection getTestList () {
-      System.out.println("getTestList");
-      testFile = System.getProperty("test.list.file");
-      System.out.println("   TestFile=" + testFile);
-      module = System.getProperty("test.module");
-      System.out.println("   Module       =" + module);
-      scroll = Boolean.valueOf(System.getProperty("test.scroll"));
-      System.out.println("   Scroll       =" + scroll);
-      
-      String ignoreFile = System.getProperty("test.ignore.list.file");
-      System.out.println("   Ignore file  =" + ignoreFile);
-      boolean doIgnore = new Boolean(System.getProperty("test.ignore"));
-      System.out.println("   Ignore TCs   =" + doIgnore);
-      
-      boolean filterTCs = (module != null && module.length() > 0);
-      boolean excTCs = true;        // include or exclude TCs
-      String filterStr = module;
-      if (filterTCs) {
-         excTCs = module.startsWith("!");
-         filterStr = module.replaceFirst("^!(.*)$", "$1");
-         System.out.println("   Filtering    = " + (excTCs?"Excluding":"Including") + 
-                            " all " + filterStr + " testcases");
-      }
-
-      Properties tprops = new Properties();
-      try {
-         FileInputStream fis = new FileInputStream(testFile);
-         tprops.loadFromXML(fis);
-      } catch (Exception e) {
-         System.out.println("Could not read test cases file. Attempted to read file " + testFile);
-         e.printStackTrace();
-         return null;
-      }
-
-      Properties ignoredTCs = new Properties();
-      if (doIgnore) {
-         try {
-            FileInputStream fis = new FileInputStream(ignoreFile);
-            ignoredTCs.loadFromXML(fis);
-         } catch (Exception e) {
-            System.out.println("Could not read test cases file. Attempted to read file " + ignoreFile);
-            e.printStackTrace();
-            return null;
-         }
-      }
-      System.out.println("   # ignore TCs =" + ignoredTCs.size());
-      
-      // See if performance can be improved by sorting the test cases by
-      // the page to be accessed. The map uses the page as key and has a 
-      // set of test cases for that page as value. Filter according to 
-      // test.module.
-      
-      TreeMap<String, Set<String>> pages = new TreeMap<String, Set<String>>();
-      Set<Object> tcs = tprops.keySet();
-      
-      tcloop:
-      for (Object o : tcs) {
-         String tcase = (String) o ;
-         String tpage = tprops.getProperty(tcase);
-         if (filterTCs) {
-            boolean c = tcase.contains(filterStr);
-            if (excTCs && c) continue;       // exclude matches
-            if (!excTCs && !c) continue;     // exclude non-matches
-         }
-         // handle ignore list
-         if (doIgnore) {
-            for (Object itc : ignoredTCs.keySet()) {
-               if (tcase.equalsIgnoreCase((String)itc)) {
-                  System.out.println("   Ignoring     :" + tcase);
-                  continue tcloop;
-               }
-            }
-         }
-         if (!pages.containsKey(tpage)) {
-            pages.put(tpage, new TreeSet<String>());
-         }
-         pages.get(tpage).add(tcase);
-      }
-
-      // now pass TCs, sorted by page, to the driver
-      
-      List<String[]> tests = new ArrayList<String[]>();
-      for (String tpage : pages.keySet()) {
-         for (String  tcase: pages.get(tpage)) {
-            String[] parms = {tpage, tcase};
-            tests.add(parms);
-         }
-      }
-      
-      int numP = pages.size();
-      int numTC = tests.size();
-      System.out.println("Executing " + numTC + " tests on " + numP + " pages.");
-
-      return tests;
-   }
-
-   public TCKSimpleTestDriver(String p, String t) {
-      page = p;
-      tcName = t;
-      StringBuilder sb = new StringBuilder();
-      sb.append("http://");
-      sb.append(host);
-      if (port != null && !port.isEmpty()) {
-         sb.append(":");
-         sb.append(port);
-      }
-      sb.append("/");
-      sb.append(testContextBase);
-      sb.append(page);
-      sb.toString();
-      System.out.println("Testing: " + tcName);
-   }
-
-   /**
-    * @throws java.lang.Exception
-    */
-   @BeforeClass
-   public static void setUpBeforeClass() throws Exception {
-      
-      loginUrl = System.getProperty("test.server.login.url");
-      host = System.getProperty("test.server.host");
-      port = System.getProperty("test.server.port");
-      username = System.getProperty("test.server.username");
-      usernameId = System.getProperty("test.server.username.id");
-      password = System.getProperty("test.server.password");
-      passwordId = System.getProperty("test.server.password.id");
-      browser = System.getProperty("test.browser");
-      testContextBase = System.getProperty("test.context.base");
-      String str = System.getProperty("test.url.strategy");
-      useGeneratedUrl = str.equalsIgnoreCase("generateURLs");
-      str = System.getProperty("test.debug");
-      debug = str.equalsIgnoreCase("true");
-      str = System.getProperty("test.timeout");
-      dryrun = new Boolean(System.getProperty("test.dryrun"));
-      timeout = ((str != null) && str.matches("\\d+")) ? Integer.parseInt(str) : 3; 
-      String wd = System.getProperty("test.browser.webDriver");
-      String binary = System.getProperty("test.browser.binary");
-      String headlessProperty = System.getProperty("test.browser.headless");
-      boolean headless = (((headlessProperty == null) || (headlessProperty.length() == 0) || Boolean.valueOf(headlessProperty)));
-
-      System.out.println("before class.");
-      System.out.println("   Debug        =" + debug);
-      System.out.println("   Dryrun       =" + dryrun);
-      System.out.println("   Timeout      =" + timeout);
-      System.out.println("   Login URL    =" + loginUrl);
-      System.out.println("   Host         =" + host);
-      System.out.println("   Port         =" + port);
-      System.out.println("   Context      =" + testContextBase);
-      System.out.println("   Generate URL =" + useGeneratedUrl);
-      System.out.println("   Username     =" + username);
-      System.out.println("   UsernameId   =" + usernameId);
-      System.out.println("   Password     =" + password);
-      System.out.println("   PasswordId   =" + passwordId);
-      System.out.println("   Browser      =" + browser);
-      System.out.println("   Driver       =" + wd);
-      System.out.println("   binary       =" + binary);
-      System.out.println("   headless     =" + headless);
-
-      if (browser.equalsIgnoreCase("firefox")) {
-
-         System.setProperty("webdriver.gecko.driver", wd);
-         FirefoxOptions options = new FirefoxOptions();
-         options.setLegacy(true);
-         options.setAcceptInsecureCerts(true);
-
-         if ((binary != null) && (binary.length() != 0)) {
-            options.setBinary(binary);
-         }
-
-         if (headless) {
-            options.setHeadless(true);
-         }
-
-         driver = new FirefoxDriver(options);
-
-      } else if (browser.equalsIgnoreCase("internetExplorer")) {
-         System.setProperty("webdriver.ie.driver", wd);
-         driver = new InternetExplorerDriver();
-      } else if (browser.equalsIgnoreCase("chrome")) {
-
-         System.setProperty("webdriver.chrome.driver", wd);
-         ChromeOptions options = new ChromeOptions();
-
-         if ((binary != null) && (binary.length() > 0)) {
-            options.setBinary(binary);
-         }
-
-         if (headless) {
-            options.addArguments("--headless");
-         }
-
-         options.addArguments("--disable-infobars");
-         options.setAcceptInsecureCerts(true);
-
-         driver = new ChromeDriver(options);
-
-      } else if (browser.equalsIgnoreCase("phantomjs")) {
-         DesiredCapabilities capabilities = DesiredCapabilities.phantomjs();
-         capabilities.setJavascriptEnabled(true);
-         capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, binary);
-         driver = new PhantomJSDriver(capabilities);
-      } else if (browser.equalsIgnoreCase("htmlUnit")) {
-        driver = new HtmlUnitDriver();
-      } else if (browser.equalsIgnoreCase("safari")) {
-         driver = new SafariDriver();
-      } else {
-         throw new Exception("Unsupported browser: " + browser);
-      }
-
-      if (!dryrun) {
-         login();
-      }
-
-   }
-
-   /**
-    * @throws java.lang.Exception
-    */
-   @AfterClass
-   public static void tearDownAfterClass() throws Exception {
-      if (driver != null) {
-         driver.quit();
-      }
-      System.out.println("   after class.");
-   }
-
-   /**
-    * @throws java.lang.Exception
-    */
-   @Before
-   public void setUp() throws Exception {
-      debugLines.add("   before test.");
-   }
-
-   /**
-    * @throws java.lang.Exception
-    */
-   @After
-   public void tearDown() throws Exception {
-      debugLines.add("   after test.");
-      if (debug) {
-         for (String line : debugLines) {
-            System.out.println(line);
-         }
-      }
-   }
-
-   @Test
-   public void test() {
-      debugLines.add("   execute test.");
-      
-      if (dryrun) {
-         return;
-      }
-
-      try {
-
-         // This is optimized for many results being present on the same page.
-         // First look for the test results or links already being present on the page. 
-
-         List<WebElement> wels = driver.findElements(By.name(tcName));
-         debugLines.add("   TC elements already on page: " + !wels.isEmpty() + ", tcname===" + tcName + "===");
-         if (wels.isEmpty()) {
-            wels = accessPage();
-         }
-         
-         // process links if present
-         wels = processClickable(wels);
-         debugLines.add("   After processing clickable, results found: " + !wels.isEmpty());
-
-         // wait for any async JavaScript tests to complete
-         processAsync();
-         
-         checkResults();
-
-      } catch(Exception e) {
-         
-         // Some type of unexpected error occurred, so generate text
-         // and mark the TC as failed.
-         
-         System.out.println("   Exception occurred: " + e.getMessage());
-         for (String line : debugLines) {
-            System.out.println(line);
-         }
-
-         throw new AssertionError("Test case " + tcName + " failed. " +
-            "\nException: ", e);
-      }
-   }
-
-   /**
-    * Tries to access the page for the test case. Looks for the page link
-    * and clicks it, waiting for the page to load.
-    * 
-    * @return  a list of elements for the TC (should only be one)
-    */
-   protected List<WebElement> accessPage() throws Exception {
-      List<WebElement> wels = driver.findElements(By.linkText(page));
-      debugLines.add("   Access page, link found: " + !wels.isEmpty() + ", page===" + page + "===");
-     
-      if (wels.isEmpty()) {
-         // retry through login page
-         debugLines.add("accessPage: debugLines:   logging in ... ");
-         login();
-         wels = driver.findElements(By.linkText(page));
-         if (wels.isEmpty()) {
-            throw new Exception("Page " + page + ": link could not be found.");
-         }
-      } 
-      
-      WebElement wel = wels.get(0);
-      if (scroll) {
-         JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
-         javascriptExecutor.executeScript("window.scrollTo(0, (arguments[0].getBoundingClientRect().top + window.pageYOffset) - (window.innerHeight / 2));", wel);
-      }
-      click(wel);
-      WebDriverWait wdw = new WebDriverWait(driver, timeout);
-      wdw.until(ExpectedConditions.visibilityOfElementLocated(By.name(tcName)));
-      wels = driver.findElements(By.name(tcName));
-      if (wels.isEmpty()) {
-         throw new Exception("For test case " + tcName + ": no elements found.");
-      }
-      return wels;
-   }
-
-   protected void click(WebElement wel) {
-	   wel.click();
-   }
-
-   /**
-    * Called to login to the portal if necessary. 
-    */
-   protected static void login() {
-
-      driver.get(loginUrl);
-      
-      List<WebElement> uels = driver.findElements(By.id(usernameId));
-      List<WebElement> pwels = driver.findElements(By.id(passwordId));
-
-      // If there is no login or password fields, don't need to login.
-      if (!uels.isEmpty() && !pwels.isEmpty()) {
-
-         System.out.println("login: found userid and password fields");
-         WebElement userEl = uels.get(0);
-         WebElement pwEl = pwels.get(0);
-
-         // perform login
-         userEl.clear();
-         userEl.sendKeys(username);
-         pwEl.clear();
-         pwEl.sendKeys(password);
-         pwEl.submit();
-
-      }
-   }
-
-   /**
-    * Analyzes the page based on the test case name and records success or failure.
-    */
-   protected void checkResults() {
-
-      String resultId = tcName + Constants.RESULT_ID;
-      String detailId = tcName + Constants.DETAIL_ID;
-
-      List<WebElement> rels = driver.findElements(By.id(resultId));
-      List<WebElement> dels = driver.findElements(By.id(detailId));
-
-      if (!rels.isEmpty()) {
-
-         String res = "";
-         try {
-            res = rels.get(0).getText();
-         } catch(StaleElementReferenceException e) {
-            System.out.println(e.getClass().getName() + " caught when trying to use WebElements found with " + resultId);
-            rels = driver.findElements(By.id(resultId));
-            res = rels.get(0).getText();
-         }
-
-         String det = "Test case " + tcName + ": ";
-         try {
-            det += dels.isEmpty() ? "No details provided." : dels.get(0).getText();
-         } catch(StaleElementReferenceException e) {
-            System.out.println(e.getClass().getName() + " caught when trying to use WebElements found with " + detailId);
-            dels = driver.findElements(By.id(detailId));
-            det += dels.isEmpty() ? "No details provided." : dels.get(0).getText();
-         }
-
-         boolean ok = res.contains(Constants.SUCCESS);
-         debugLines.add("   Test OK: " + ok + ", results: " + res + ", details: " + det);
-         assertTrue(det, ok);
-      } else {
-         debugLines.add("   Results not found");
-         assertTrue("Test case " + tcName + " failed. Results could not be found.", false);
-      }
-   }
-
-   /**
-    * Looks for a link or button that can be clicked for the TC and clicks it if found.
-    * 
-    * First looks for a test case setup link or button and clicks it if found. Then it 
-    * looks for a test case execution link and clicks it if found. 
-    * 
-    * @return  web element list containing the test case results.
-    * @throws Exception 
-    */
-   @SuppressWarnings("unused")
-   protected List<WebElement> processClickable(List<WebElement> wels) throws Exception {
-      String setupId = tcName + Constants.SETUP_ID;
-      String actionId = tcName + Constants.CLICK_ID;
-      String resultId = tcName + Constants.RESULT_ID;
-      String detailId = tcName + Constants.DETAIL_ID;
-      String asyncId = tcName + Constants.ASYNC_ID;
-      String notreadyId = tcName + Constants.NOTREADY_ID;
-      List<WebElement> tcels = null;
-
-      for (WebElement wel : wels) {
-         tcels = wel.findElements(By.id(setupId));
-         if (!tcels.isEmpty()) break;
-      }
-      debugLines.add("   Setup link found: " + ((tcels != null) && !tcels.isEmpty()));
-      
-      // If were dealing with async, make sure the JavaScript is initialized
-      List<WebElement> acels = driver.findElements(By.id(asyncId));
-      debugLines.add("   Async elements found: " + ((acels != null) && !acels.isEmpty()));
-      if (acels != null && !acels.isEmpty()) {
-         WebDriverWait wdw = new WebDriverWait(driver, timeout);
-         wdw.until(ExpectedConditions.invisibilityOfElementLocated(By.id(notreadyId)));
-         debugLines.add("   Async elements are now ready.");
-      }
-
-      // Click setup link if found
-      if ((tcels != null) && !tcels.isEmpty()) {
-         WebElement wel = tcels.get(0);
-         if (scroll) {
-            JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
-            javascriptExecutor.executeScript("window.scrollTo(0, (arguments[0].getBoundingClientRect().top + window.pageYOffset) - (window.innerHeight / 2));", wel);
-         }
-         try {
-            wel.click();
-         } catch(StaleElementReferenceException e) {
-            System.out.println("setup link: " + e.getClass().getName() + " caught when trying to use WebElements found with " + tcName);
-            wels = driver.findElements(By.name(tcName));
-            for (WebElement welly : wels) {
-               tcels = welly.findElements(By.id(setupId));
-               if (!tcels.isEmpty()) break;
-            }
-            wel = tcels.get(0);
-            wel.click();
-         }
-         debugLines.add("   Clicked setup link.");
-
-         WebDriverWait wdw = new WebDriverWait(driver, timeout);
-
-         String expr = "//*[@id='" + resultId + "'] | //*[@id='" + actionId + "']";
-         debugLines.add("   xpath string: ===" + expr + "===");
-
-         wdw.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath(expr)));
-         wels = driver.findElements(By.name(tcName));
-         
-         debugLines.add("   Found elements: " + (!wels.isEmpty()));
-         List<WebElement> xels = driver.findElements(By.xpath(expr));
-         for (WebElement w : xels) {
-            debugLines.add("      Element: " + w.getTagName() + ", id=" + w.getAttribute("id"));
-         }
-      }
-      
-      // Now click the action link, if present
-      for (WebElement wel : wels) {
-         tcels = wel.findElements(By.id(actionId));
-         if (!tcels.isEmpty()) break;
-      }
-      debugLines.add("   Clickable link found: " + ((tcels != null) && !tcels.isEmpty()));
-      
-      if (tcels != null && !tcels.isEmpty()) {
-         WebElement wel = tcels.get(0);
-         if (scroll) {
-            JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
-            javascriptExecutor.executeScript("window.scrollTo(0, (arguments[0].getBoundingClientRect().top + window.pageYOffset) - (window.innerHeight / 2));", wel);
-         }
-         try {
-            wel.click();
-         } catch(StaleElementReferenceException e) {
-            System.out.println("action link: " + e.getClass().getName() + " caught when trying to use WebElements found with " + tcName);
-            wels = driver.findElements(By.name(tcName));
-            for (WebElement welly : wels) {
-               tcels = welly.findElements(By.id(actionId));
-               if (!tcels.isEmpty()) break;
-            }
-            wel = tcels.get(0);
-            wel.click();
-         }
-         WebDriverWait wdw = new WebDriverWait(driver, timeout);
-         wdw.until(ExpectedConditions.visibilityOfElementLocated(By.id(resultId)));
-         wels = driver.findElements(By.name(tcName));
-         if ((wels == null) || wels.isEmpty()) {
-            throw new Exception("Test case " + tcName + " failed. No results after action link click.");
-         }
-      }
-      
-
-      return wels;
-   }
-
-   /**
-    * Looks for an async element on the page. The async element will be filed in 
-    * with results by the test case JavaScript code, which runs asynchronously.  
-    * 
-    * If an async element is found, this function waits the timeout period to 
-    * let the async test case code update the results.
-    * 
-    * @return  <code>true</code> if async was handled; <code>false</code> otherwise.
-    * @throws Exception 
-    */
-   protected boolean processAsync() throws Exception {
-      String asyncId = tcName + Constants.ASYNC_ID;
-      String resultId = tcName + Constants.RESULT_ID;
-
-      List<WebElement> tcels = null;
-
-      tcels = driver.findElements(By.id(asyncId));
-
-      debugLines.add("   Element with async id=" + asyncId + " found: " + !tcels.isEmpty());
-      
-      if (tcels.isEmpty()) {
-         // no async element
-         return false;
-      }
-
-      WebDriverWait wdw = new WebDriverWait(driver, timeout);
-      wdw.until(ExpectedConditions.visibilityOfElementLocated(By.id(resultId)));
-
-      return true;
-   }
-
-}


Mime
View raw message