<?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">   
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-parent</artifactId>
        <version>1.6.0</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>
    <artifactId>axis2-jaxws</artifactId>
    <name>Apache Axis2 - JAXWS</name>
    <description>Axis2 JAXWS Implementation</description>
    <dependencies>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-annotation_1.0_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jaxws_2.2_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-saaj</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-metadata</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>xml-resolver</groupId>
            <artifactId>xml-resolver</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>jsr173</artifactId>
                    <groupId>javax.xml</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-xjc</artifactId>
        </dependency>
        <dependency>
            <groupId>xalan</groupId>
            <artifactId>xalan</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>jsr173</artifactId>
                    <groupId>javax.xml</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-http</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-local</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>        
        <dependency>
            <groupId>xmlunit</groupId>
            <artifactId>xmlunit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.6.0/modules/jaxws</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/axis/axis2/java/core/tags/v1.6.0/modules/jaxws</developerConnection>
        <url>http://svn.apache.org/viewvc/axis/axis2/java/core/tags/v1.6.0/modules/jaxws</url>
    </scm>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <testSourceDirectory>test</testSourceDirectory>
        <resources>
            <resource>
                <directory>conf</directory>
                <includes>
                    <include>**/*.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>src</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>resources</directory>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>test</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.wsdl</include>
                    <include>**/*.properties</include>
                </includes>
            </testResource>
            <testResource>
                <directory>test-resources</directory>
            </testResource>
        </testResources>
        <plugins>
            <plugin>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <resourceBundles>
                                <resourceBundle>org.apache.axis2:axis2-resource-bundle:${pom.version}</resourceBundle>
                            </resourceBundles>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax.xml.bind</groupId>
                                    <artifactId>jaxb-api</artifactId>
                                    <type>jar</type>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.geronimo.specs</groupId>
                                    <artifactId>geronimo-saaj_1.3_spec</artifactId>
                                    <type>jar</type>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.geronimo.specs</groupId>
                                    <artifactId>geronimo-jaxws_2.2_spec</artifactId>
                                 </artifactItem>
                            </artifactItems>
                            <overWrite>true</overWrite>
                            <outputDirectory>${project.build.directory}/endorsed</outputDirectory>
                            <stripVersion>true</stripVersion>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <inherited>true</inherited>
                <configuration>
                    <compilerArgument>
                        -Xbootclasspath/p:${project.build.directory}/endorsed/geronimo-jaxws_2.2_spec.jar${path.separator}${basedir}/../jaxws-api/target/classes${path.separator}${basedir}/../jws-api/target/classes
                    </compilerArgument>
                    <compilerVersion>1.5</compilerVersion>
                    <source>1.5</source>
                    <target>1.5</target>
                    
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                
                <executions>
                    <execution>
                        <id>gen-ts</id>
                        <phase>generate-test-sources</phase>
                        <configuration>
                            <tasks unless="maven.test.skip"> 
                                <!-- Theres got to be a better way to do this -->
                                <property name="schema.source.dir" value="test-resources/xsd" />
                                <property name="wsdl.source.dir" value="test-resources/wsdl" />
                                <property name="schema.output.base.dir" value="target/schema" />                             
                                <property name="schema.generated.src.dir" value="${schema.output.base.dir}/src" />
                                <property name="schema.generated.classes.dir" value="${schema.output.base.dir}/classes" />
                               
                                <!-- make the dirs -->
                                <mkdir dir="${schema.output.base.dir}" />
                                <mkdir dir="${schema.generated.src.dir}" />
                                <mkdir dir="${schema.generated.classes.dir}" />

                                <!-- Run JAXB schema compiler with designated schemas -->
                                <echo>Generating JAX-B classes from XSDs</echo>

                                <echo>Generating java from echo.xsd</echo>
                                <java classname="com.sun.tools.xjc.Driver" fork="true">
                                    <classpath refid="maven.runtime.classpath" />
                                    
                                    <classpath location="${compiled.classes.dir}" />
                                    <arg line="-d ${schema.generated.src.dir} -quiet ${schema.source.dir}/echo.xsd" />
                                </java>

                                <echo>Generating java from stock1.xsd</echo>
                                <java classname="com.sun.tools.xjc.Driver" fork="true">
                                    <classpath refid="maven.runtime.classpath" />
                                    <classpath location="${compiled.classes.dir}" />
                                    <arg line="-d ${schema.generated.src.dir} -quiet ${schema.source.dir}/stock1.xsd" />
                                </java>

                                <echo>Generating java from stock2.xsd</echo>
                                <java classname="com.sun.tools.xjc.Driver" fork="true">
                                    <classpath refid="maven.runtime.classpath" />
                                    <classpath location="${compiled.classes.dir}" />
                                    <arg line="-d ${schema.generated.src.dir} -quiet ${schema.source.dir}/stock2.xsd" />
                                </java>

                                <echo>Generating java from samplemtom.xsd</echo>
                                <java classname="com.sun.tools.xjc.Driver" fork="true">
                                    <classpath refid="maven.runtime.classpath" />
                                    <classpath location="${compiled.classes.dir}" />
                                    <arg line="-d ${schema.generated.src.dir} -quiet ${schema.source.dir}/samplemtom.xsd" />
                                </java>
                                <echo>Generating java from ProxyDocLitWrapped.wsdl</echo>
                                <java classname="com.sun.tools.xjc.Driver" fork="true">
                                    <classpath refid="maven.runtime.classpath" />
                                    <classpath location="${compiled.classes.dir}" />
                                    <arg line="-d ${schema.generated.src.dir} -quiet -p org.test.proxy.doclitwrapped -quiet -wsdl ${wsdl.source.dir}/ProxyDocLitWrapped.wsdl" />
                                </java>
                                <echo>Generating java from AddNumbers.wsdl</echo>
                                <java classname="com.sun.tools.xjc.Driver" fork="true">
                                    <classpath refid="maven.runtime.classpath" />
                                    <classpath location="${compiled.classes.dir}" />
                                    <arg line="-d ${schema.generated.src.dir} -quiet -wsdl ${wsdl.source.dir}/AddNumbers.wsdl" />
                                </java>                                
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>build-repo</id>
                        <phase>test-compile</phase>
                        <configuration>
                            <tasks unless="maven.test.skip">
                                <copy toDir="target/test-classes/">
                                    <fileset dir="test-resources/">
                                        <include name="**/*.properties" />
                                        <include name="**/axis2.xml" />
                                    </fileset>
                                </copy>
                                <property name="addressing_version" value="${project.version}" />
                                <ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="." target="build-repo" />
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>add-test-source</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>add-test-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>${basedir}/target/schema/src</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <inherited>true</inherited>
                <configuration>
                    <forkMode>once</forkMode>
                    <argLine>-Xms256m -Xmx512m -Xbootclasspath/p:${project.build.directory}/endorsed/jaxb-api.jar${path.separator}${project.build.directory}/endorsed/geronimo-saaj_1.3_spec.jar${path.separator}${project.build.directory}/endorsed/geronimo-jaxws_2.2_spec.jar</argLine>
                    <!-- Enable the next 2 lines if you want to attach a debugger
                    <argLine>-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006</argLine>-->
                    <includes>
                        <include>**/*Test.java</include>
                        <include>**/*Tests.java</include>
                    </includes>
                    <systemProperties>
                        <!--<property>
                            <name>OASISCatalogManager.catalog.debug.level</name>
                            <value>9999</value>
                        </property>-->
                        <property>
                            <name>build.repository</name>
                            <value>./target/test-classes</value>
                        </property>
                        <property>
                            <name>javax.xml.soap.MessageFactory</name>
                            <value>org.apache.axis2.saaj.MessageFactoryImpl</value>
                        </property>
                        <property>
                            <name>javax.xml.soap.SOAPFactory</name>
                            <value>org.apache.axis2.saaj.SOAPFactoryImpl</value>
                        </property>
                        <property>
                            <name>javax.xml.soap.SOAPConnectionFactory</name>
                            <value>org.apache.axis2.saaj.SOAPConnectionFactoryImpl</value>
                        </property>
                        <property>
                            <name>javax.xml.soap.MetaFactory</name>
                            <value>org.apache.axis2.saaj.SAAJMetaFactoryImpl</value>
                        </property>
                        <!-- Need this for the client side to pickup an axis2.xml to configure SoapMessageMUProviderChecker -->
                        <property>
                            <name>org.apache.axis2.jaxws.config.path</name>
                            <value>./target/test-classes/axis2.xml</value>
                        </property>
                        <property>
                            <name>org.apache.axis2.jaxws.repo.path</name>
                            <value>./target/repository</value>
                        </property>
                        <!-- Prevent Mac OS X from showing an icon in the dock during the test run -->
                        <property>
                            <name>java.awt.headless</name>
                            <value>true</value>
                        </property>
                    </systemProperties>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
