<?xml version="1.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. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
         
  <modelVersion>4.0.0</modelVersion>
  
  <parent>
    <artifactId>arquillian</artifactId>
    <groupId>org.apache.tomee</groupId>
    <version>7.0.6-SNAPSHOT</version>
  </parent>
  
  <artifactId>arquillian-tomee-tests</artifactId>
  <packaging>pom</packaging>

  <name>OpenEJB :: Arquillian Adaptors Parent :: Tests</name>

  <modules>
    <module>arquillian-tomee-webprofile-tests</module>
    <module>arquillian-tomee-jaxrs-tests</module>
    <module>arquillian-tomee-jaxws-tests</module>
    <module>arquillian-tomee-jms-tests</module>
    <module>arquillian-tomee-codi-tests</module>
    <module>arquillian-tomee-config-tests</module>
  </modules>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>javaee-api</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jboss.shrinkwrap.resolver</groupId>
      <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
      <version>2.0.0</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpcore</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
      <version>4.2.4</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>ziplock</artifactId>
      <version>${project.version}</version>
    </dependency>

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

    <dependency>
      <groupId>org.jboss.arquillian.junit</groupId>
      <artifactId>arquillian-junit-container</artifactId>
      <version>${version.arquillian}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.2.2</version>
    </dependency>

    <dependency>
      <groupId>org.jboss.shrinkwrap.descriptors</groupId>
      <artifactId>shrinkwrap-descriptors-impl-javaee</artifactId>
      <version>${version.shrinkwrap.descriptor}</version>
    </dependency>
    <dependency>
      <groupId>org.jboss.shrinkwrap.descriptors</groupId>
      <artifactId>shrinkwrap-descriptors-api-javaee</artifactId>
      <version>${version.shrinkwrap.descriptor}</version>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>arquillian-tomee-embedded</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>arquillian-tomee-remote</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>arquillian-tomee-webapp-remote</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency> <!-- tomee-embedded needs it + dependencies but tomee-*-remote doesn't need dependencies so to avoid conflicts bringing it back here -->
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-core</artifactId>
      <version>${project.version}</version>
    </dependency>

    <!-- just to get it in the correct order -->
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>apache-tomee</artifactId>
      <version>${project.version}</version>
      <classifier>webprofile</classifier>
      <type>zip</type>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat</artifactId>
      <version>${tomcat.version}</version>
      <type>zip</type>
    </dependency>
  </dependencies>

  <profiles>

    <profile>
      <id>default</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <executions>
              <execution>
                <id>test-tomee-embedded</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <argLine>-javaagent:${settings.localRepository}/org/apache/tomee/openejb-javaagent/${project.version}/openejb-javaagent-${project.version}.jar</argLine>
                  <systemPropertyVariables>
                    <tomee.version>7.0.6</tomee.version>
                    <arquillian.launch>tomee-embedded</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-embedded</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <skip>true</skip>
              <parallel>none</parallel>
              <threadCount>1</threadCount>
              <reuseForks>true</reuseForks>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>all-adapters</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>groovy-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>configure-adapters</id>
                <phase>test</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <source>
                    // goal: manage the profile-under-test property
                    // -&gt; set to webprofile use all distributions
                    // -&gt; set to plus use only plus
                    // -&gt; set to plume use only plume
                    def props = project.properties

                    def skip = props['maven.test.skip']

                    props['skip.embedded'] = 'true'
                    props['skip.remote.webprofile'] = 'true'
                    props['skip.remote.plus'] = 'true'
                    props['skip.remote.plume'] = 'true'
                    props['skip.webapp.webprofile'] = 'true'
                    props['skip.webapp.plus'] = 'true'
                    props['skip.webapp.plume'] = 'true'

                    if ("true" != skip) {
                      def minProfile = props['profile-under-test']

                      if ("webprofile" == minProfile) {
                        props['skip.embedded'] = 'false'
                        props['skip.remote.webprofile'] = 'false'
                        props['skip.webapp.webprofile'] = 'false'
                        props['skip.remote.plus'] = 'false'
                        props['skip.webapp.plus'] = 'false'
                        props['skip.remote.plume'] = 'false'
                        props['skip.webapp.plume'] = 'false'
                      } else if ("plus" == minProfile) {
                        props['skip.embedded'] = 'false'
                        props['skip.remote.plus'] = 'false'
                        props['skip.webapp.plus'] = 'false'
                        props['skip.remote.plume'] = props['skip.remote.plume'] ? props['skip.remote.plume'] : 'false'
                        props['skip.webapp.plume'] = props['skip.webapp.plume'] ? props['skip.webapp.plume'] : 'false'
                      }
                    }

                    println("Embedded adapter activated ? " + !Boolean.parseBoolean(props['skip.embedded']))
                    println("Remote webprofile adapter activated ? " +
                        !Boolean.parseBoolean(props['skip.remote.webprofile']))
                    println("Remote plus adapter activated ? " + !Boolean.parseBoolean(props['skip.remote.plus']))
                    println("Remote plume adapter activated ? " + !Boolean.parseBoolean(props['skip.remote.plume']))
                    println("Webapp weprofile adapter activated ? " +
                        !Boolean.parseBoolean(props['skip.webapp.webprofile']))
                    println("Webapp plus adapter activated ? " + !Boolean.parseBoolean(props['skip.webapp.plus']))
                    println("Webapp plume adapter activated ? " + !Boolean.parseBoolean(props['skip.webapp.plume']))
                  </source>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <executions>

              <execution>
                <id>test-tomee-remote</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.remote.webprofile}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.classifier>webprofile</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-secpol</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.remote.webprofile}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>${project.version}</tomee.version>
                    <tomee.classifier>webprofile</tomee.classifier>
                    <arquillian.launch>tomee-remote-secpol</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-embedded</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.embedded}</skip>
                  <argLine>-javaagent:${settings.localRepository}/org/apache/tomee/openejb-javaagent/${project.version}/openejb-javaagent-${project.version}.jar -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=768M</argLine>
                  <systemPropertyVariables>
                    <tomee.version>7.0.6</tomee.version>
                    <arquillian.launch>tomee-embedded</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-embedded</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-plume</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.remote.plume}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.classifier>plume</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                  <excludes>
                    <exclude>**/AppComposerTest.java</exclude>
                  </excludes>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-plus</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.remote.plus}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.classifier>plus</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.webapp.webprofile}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote-plus</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.webapp.plus}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-plus-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote-plume</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${skip.webapp.plume}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-plume-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                  <excludes>
                    <exclude>**/AppComposerTest.java</exclude>
                  </excludes>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <skip>true</skip>
              <parallel>none</parallel>
              <threadCount>1</threadCount>
              <reuseForks>true</reuseForks>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>


    <profile>
      <id>buildbot</id>

      <dependencies>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>arquillian-tomee-embedded</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>arquillian-tomee-remote</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>arquillian-tomee-webapp-remote</artifactId>
          <version>${project.version}</version>
        </dependency>

        <!-- just to get it in the correct order -->
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>apache-tomee</artifactId>
          <version>${project.version}</version>
          <classifier>webprofile</classifier>
          <type>zip</type>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>apache-tomee</artifactId>
          <version>${project.version}</version>
          <classifier>plus</classifier>
          <type>zip</type>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>apache-tomee</artifactId>
          <version>${project.version}</version>
          <classifier>plume</classifier>
          <type>zip</type>
        </dependency>

        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>tomee-webapp</artifactId>
          <version>${project.version}</version>
          <type>war</type>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>tomee-plus-webapp</artifactId>
          <version>${project.version}</version>
          <type>war</type>
        </dependency>
        <dependency>
          <groupId>${project.groupId}</groupId>
          <artifactId>tomee-plume-webapp</artifactId>
          <version>${project.version}</version>
          <type>war</type>
        </dependency>
        <dependency>
          <groupId>org.apache.tomcat</groupId>
          <artifactId>tomcat</artifactId>
          <version>${tomcat.version}</version>
          <type>zip</type>
        </dependency>

      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <executions>
              <execution>
                <id>test-tomee-embedded</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <argLine>-XX:MaxPermSize=768M</argLine>
                  <systemPropertyVariables>
                    <tomee.version>7.0.6</tomee.version>
                    <arquillian.launch>tomee-embedded</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-embedded</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>

              <!-- Remote against Web Profile, JAX-RS and Plus -->

              <execution>
                <id>test-tomee-remote-webprofile</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.classifier>webprofile</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-plus</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.classifier>plus</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-remote-plume</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <openejb.arquillian.debug>true</openejb.arquillian.debug>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.classifier>plume</tomee.classifier>
                    <arquillian.launch>tomee-remote</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-remote</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                  <excludes>
                    <exclude>**/AppComposerTest.java</exclude>
                  </excludes>
                </configuration>
              </execution>

              <!-- Tomcat + war against Web Profile, JAX-RS and Plus -->

              <execution>
                <id>test-tomee-webapp-remote-webprofile</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote-plus</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-plus-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                </configuration>
              </execution>
              <execution>
                <id>test-tomee-webapp-remote-plume</id>
                <phase>test</phase>
                <goals>
                  <goal>test</goal>
                </goals>
                <configuration>
                  <skip>${maven.test.skip}</skip>
                  <systemPropertyVariables>
                    <tomee.version>7.0.6</tomee.version>
                    <tomee.tomcatVersion>${tomcat.version}</tomee.tomcatVersion>
                    <tomee.artifactId>tomee-plume-webapp</tomee.artifactId>
                    <arquillian.launch>tomee-webapp</arquillian.launch>
                    <openejb.arquillian.adapter>tomee-webapp</openejb.arquillian.adapter>
                  </systemPropertyVariables>
                  <excludes>
                    <exclude>**/AppComposerTest.java</exclude>
                  </excludes>
                </configuration>
              </execution>
            </executions>
            <configuration>
              <skip>true</skip>
              <parallel>none</parallel>
              <threadCount>1</threadCount>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>


    <profile>
      <!--
      Added to make it easy to quickly verify if something "should" work
      -->
      <id>glassfish-embedded</id>
      <properties>
        <version.glassfish>3.1.2.2</version.glassfish>
        <version.arquillian.glassfish.embedded>1.0.0.CR4</version.arquillian.glassfish.embedded>
        <version.mockito>1.9.0</version.mockito>
        <version.maven.embedded.glassfish.plugin>3.1.1</version.maven.embedded.glassfish.plugin>
        <version.maven.war.plugin>2.1.1</version.maven.war.plugin>
        <version.maven.compiler.plugin>2.3.2</version.maven.compiler.plugin>
        <version.maven.failsafe.plugin>2.11</version.maven.failsafe.plugin>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.jboss.arquillian.junit</groupId>
          <artifactId>arquillian-junit-container</artifactId>
          <version>${version.arquillian}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.glassfish.main.extras</groupId>
          <artifactId>glassfish-embedded-all</artifactId>
          <version>${version.glassfish}</version>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.jboss.arquillian.container</groupId>
          <artifactId>arquillian-glassfish-embedded-3.1</artifactId>
          <version>${version.arquillian.glassfish.embedded}</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>
  </profiles>

  <properties>
    <profile-under-test>webprofile</profile-under-test>
  </properties>
</project>
