<?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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>cxf-testutils</artifactId>
    <packaging>bundle</packaging>
    <name>Apache CXF Test Utilities</name>
    <description>Apache CXF Test Utilities</description>
    <url>http://cxf.apache.org</url>
    <parent>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-parent</artifactId>
        <version>3.0.10</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-wsdl</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-broker</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <!--
                            Run in validate phase to ensure wsdls exist
                            before running wsdl2java in generate-sources
                            phase.
                        -->
                        <id>validate</id>
                        <phase>validate</phase>
                        <configuration>
                            <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
                            <tasks>
                                <property name="generated.target" value="${basedir}/target/generated" />
                                <property name="generated.src.test" value="${generated.target}/src/main/java" />
                                <property name="generated.resources.test" value="${generated.target}/src/main/resources" />
                                <property name="generated.wsdl.test" value="${generated.resources.test}/" />
                                <property name="test.resources.dir" location="${basedir}/src/main/resources" />
                                <mkdir dir="${generated.resources.test}/wsdl/type_test" />
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_ID_xsd.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.resources.test}/wsdl/type_test/type_test_1.xsd">
                                    <param name="groupID" expression="1" />
                                </xslt>
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_ID_xsd.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.resources.test}/wsdl/type_test/type_test_2.xsd">
                                    <param name="groupID" expression="2" />
                                </xslt>
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_ID_xsd.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.resources.test}/wsdl/type_test/type_test_3.xsd">
                                    <param name="groupID" expression="3" />
                                </xslt>
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_wsdl.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.resources.test}/wsdl/type_test/type_test_doclit.wsdl">
                                    <param name="inc_xsd_path" expression="." />
                                    <param name="use_style" expression="document" />
                                    <param name="tns_suffix" expression="doc" />
                                </xslt>
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_wsdl.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.resources.test}/wsdl/type_test/type_test_rpclit.wsdl">
                                    <param name="inc_xsd_path" expression="." />
                                    <param name="use_style" expression="rpc" />
                                    <param name="tns_suffix" expression="rpc" />
                                </xslt>
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_wsdl.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.resources.test}/wsdl/type_test/type_test_xml_inc.wsdl">
                                    <param name="inc_xsd_path" expression="." />
                                    <param name="use_style" expression="document" />
                                    <param name="tns_suffix" expression="xml" />
                                </xslt>
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_xml_wsdl.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.resources.test}/wsdl/type_test/type_test_xml.wsdl">
                                    <param name="inc_wsdl_path" expression="." />
                                    <param name="port" expression="9008" />
                                </xslt>
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_soap_wsdl.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.resources.test}/wsdl/type_test/type_test_doclit_soap.wsdl">
                                    <param name="inc_wsdl_path" expression="." />
                                    <param name="use_style" expression="document" />
                                    <param name="port" expression="9007" />
                                </xslt>
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_soap_wsdl.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.resources.test}/wsdl/type_test/type_test_rpclit_soap.wsdl">
                                    <param name="inc_wsdl_path" expression="." />
                                    <param name="use_style" expression="rpc" />
                                    <param name="port" expression="9006" />
                                </xslt>
                                <mkdir dir="${generated.src.test}/org/apache/cxf/systest/type_test" />
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_impl_java.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.src.test}/org/apache/cxf/systest/type_test/TypeTestImpl.java" />
                                <xslt style="${test.resources.dir}/wsdl/type_test/type_test_tester_java.xsl" in="${test.resources.dir}/wsdl/type_test/type_test.xsd" out="${generated.src.test}/org/apache/cxf/systest/type_test/TypeTestTester.java" />
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-wsdl-validator-plugin</artifactId>
                <version>${project.version}</version>
                <configuration>
                    <wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot>
                </configuration>
                <executions>
                    <!-- execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <goals>
                          <goal>wsdlvalidator</goal>
                        </goals>
                    </execution -->
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>${project.version}</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.cxf.xjcplugins</groupId>
                        <artifactId>cxf-xjc-bug986</artifactId>
                        <version>${cxf.xjc-utils.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <fork>${cxf.codegenplugin.forkmode}</fork>
                            <sourceRoot>target/generated/src/main/java</sourceRoot>
                            <wsdlRoot>src/main/resources/wsdl</wsdlRoot>
                            <includes>
                                <include>*.wsdl</include>
                                <include>rt-javascript/*.wsdl</include>
                            </includes>
                            <defaultOptions>
                                <xjcargs>
                                    <xjcarg>-Xbug986</xjcarg>
                                </xjcargs>
                                <!--extraargs>
                                    <extraarg>-verbose</extraarg>
                                </extraargs-->
                                <markGenerated>true</markGenerated>
                                <faultSerialVersionUID>1</faultSerialVersionUID>
                            </defaultOptions>
                            <wsdlOptions>
                                <wsdlOption>
                                    <wsdl>target/generated/src/main/resources/wsdl/type_test/type_test_xml.wsdl</wsdl>
                                    <dependencies>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_xml_inc.wsdl
                                        </dependency>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_1.xsd
                                        </dependency>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_2.xsd
                                        </dependency>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_3.xsd
                                        </dependency>
                                    </dependencies>
                                </wsdlOption>
                                <wsdlOption>
                                    <wsdl>target/generated/src/main/resources/wsdl/type_test/type_test_doclit_soap.wsdl</wsdl>
                                    <dependencies>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_doclit.wsdl
                                        </dependency>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_1.xsd
                                        </dependency>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_2.xsd
                                        </dependency>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_3.xsd
                                        </dependency>
                                    </dependencies>
                                </wsdlOption>
                                <wsdlOption>
                                    <wsdl>target/generated/src/main/resources/wsdl/type_test/type_test_rpclit_soap.wsdl</wsdl>
                                    <dependencies>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_rpclit.wsdl
                                        </dependency>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_1.xsd
                                        </dependency>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_2.xsd
                                        </dependency>
                                        <dependency>
                                            ${basedir}/target/generated/src/main/resources/wsdl/type_test/type_test_3.xsd
                                        </dependency>
                                    </dependencies>
                                </wsdlOption>
                            </wsdlOptions>
                        </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-xjc-plugin</artifactId>
                <version>${cxf.xjc-utils.version}</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
                            <xsdOptions>
                                <xsdOption>
                                    <xsd>${basedir}/src/main/resources/wsdl/oob_headertype.xsd</xsd>
                                    <extension>true</extension>
                                    <extensionArgs>
                                        <extensionArg>-Xdv</extensionArg>
                                    </extensionArgs>
                                </xsdOption>
                            </xsdOptions>
                        </configuration>
                        <goals>
                            <goal>xsdtojava</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <extensions>
                        <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:${cxf.xjc-utils.version}</extension>
                    </extensions>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>setup.eclipse</id>
            <build>
                <defaultGoal>process-test-sources</defaultGoal>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>setup.eclipse.project.sdo</id>
                                <phase>process-test-sources</phase>
                                <configuration>
                                    <target>
                                        <!-- JAXB generated code for one of our type tests uses a raw Comparable -->
                                        <propertyfile file="${basedir}/.settings/org.eclipse.jdt.core.prefs">
                                            <entry key="org.eclipse.jdt.core.compiler.problem.rawTypeReference" value="ignore" />
                                        </propertyfile>
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
