<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.axis2</groupId>
        <artifactId>databinding-tests</artifactId>
        <version>1.8.2</version>
    </parent>

    <artifactId>jaxbri-tests</artifactId>

    <url>http://axis.apache.org/axis2/java/core/</url>

    <scm>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git</developerConnection>
        <url>https://gitbox.apache.org/repos/asf?p=axis-axis2-java-core.git;a=summary</url>
        <tag>v1.8.2</tag>
    </scm>

    <dependencies>
        <dependency>
            <groupId>org.apache.ws.commons.axiom</groupId>
            <artifactId>axiom-jaxb</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>axis2-transport-http</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.xmlunit</groupId>
            <artifactId>xmlunit-legacy</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>axis2-testutils</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.ws.commons.axiom</groupId>
            <artifactId>testutils</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>jakarta.mail</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>${project.groupId}</groupId>
                <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
                <version>${project.version}</version>
                <executions>
                    <execution>
                        <id>wsdl2code-Test01</id>
                        <goals>
                            <goal>generate-test-sources</goal>
                        </goals>
                        <configuration>
                            <wsdlFile>src/test/wsdl/Test01.wsdl</wsdlFile>
                            <generateServerSide>true</generateServerSide>
                            <generateServerSideInterface>true</generateServerSideInterface>
                            <generateServicesXml>true</generateServicesXml>
                            <generateAllClasses>true</generateAllClasses>
                            <outputDirectory>${project.build.directory}/gen/Test01</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>wsdl2code-processor-service</id>
                        <goals>
                            <goal>generate-test-sources</goal>
                        </goals>
                        <configuration>
                            <wsdlFile>src/test/wsdl/processor.wsdl</wsdlFile>
                            <generateServerSide>true</generateServerSide>
                            <generateServerSideInterface>true</generateServerSideInterface>
                            <generateServicesXml>true</generateServicesXml>
                            <namespaceMappings>
                                <namespaceMapping>
                                    <uri>http://www.example.org/data</uri>
                                    <packageName>org.apache.axis2.jaxbri.processor.data</packageName>
                                </namespaceMapping>
                                <namespaceMapping>
                                    <uri>http://www.example.org/ws</uri>
                                    <packageName>org.apache.axis2.jaxbri.processor.service</packageName>
                                </namespaceMapping>
                            </namespaceMappings>
                            <outputDirectory>${project.build.directory}/gen/processor</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>wsdl2code-processor-client</id>
                        <goals>
                            <goal>generate-test-sources</goal>
                        </goals>
                        <configuration>
                            <wsdlFile>src/test/wsdl/processor.wsdl</wsdlFile>
                            <namespaceMappings>
                                <namespaceMapping>
                                    <uri>http://www.example.org/data</uri>
                                    <packageName>org.apache.axis2.jaxbri.processor.data</packageName>
                                </namespaceMapping>
                                <namespaceMapping>
                                    <uri>http://www.example.org/ws</uri>
                                    <packageName>org.apache.axis2.jaxbri.processor.client</packageName>
                                </namespaceMapping>
                            </namespaceMappings>
                            <outputDirectory>${project.build.directory}/gen/processor</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>wsdl2code-identityservice1</id>
                        <goals>
                            <goal>generate-test-sources</goal>
                        </goals>
                        <configuration>
                            <wsdlFile>src/test/wsdl/identityService.wsdl</wsdlFile>
                            <generateServerSide>true</generateServerSide>
                            <generateServerSideInterface>true</generateServerSideInterface>
                            <generateServicesXml>true</generateServicesXml>
                            <generateAllClasses>true</generateAllClasses>
                            <packageName>org.apache.axis2.jaxbri.identityservice</packageName>
                            <namespaceMappings>
                                <namespaceMapping>
                                    <uri>http://www.example.org/identity</uri>
                                    <packageName>org.apache.axis2.jaxbri.identityservice</packageName>
                                </namespaceMapping>
                            </namespaceMappings>
                            <outputDirectory>${project.build.directory}/gen/identityservice</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>wsdl2code-mtom</id>
                        <goals>
                            <goal>generate-test-sources</goal>
                        </goals>
                        <configuration>
                            <wsdlFile>src/test/wsdl/mtom.wsdl</wsdlFile>
                            <generateServerSide>true</generateServerSide>
                            <generateServerSideInterface>true</generateServerSideInterface>
                            <generateServicesXml>true</generateServicesXml>
                            <generateAllClasses>true</generateAllClasses>
                            <packageName>org.apache.axis2.jaxbri.mtom</packageName>
                            <namespaceMappings>
                                <namespaceMapping>
                                    <uri>http://www.example.org/mtom/</uri>
                                    <packageName>org.apache.axis2.jaxbri.mtom</packageName>
                                </namespaceMapping>
                            </namespaceMappings>
                            <outputDirectory>${project.build.directory}/gen/mtom</outputDirectory>
                        </configuration>
                    </execution>
                    <execution>
                        <id>wsdl2code-axis2-5919</id>
                        <goals>
                            <goal>generate-test-sources</goal>
                        </goals>
                        <configuration>
                            <wsdlFile>src/test/wsdl/AXIS2-5919.wsdl</wsdlFile>
                            <generateServerSide>true</generateServerSide>
                            <generateServerSideInterface>true</generateServerSideInterface>
                            <generateServicesXml>true</generateServicesXml>
                            <generateAllClasses>true</generateAllClasses>
                            <outputDirectory>${project.build.directory}/gen/AXIS2-5919</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <databindingName>jaxbri</databindingName>
                    <syncMode>sync</syncMode>
                    <unpackClasses>true</unpackClasses>
                </configuration>
            </plugin>
            <plugin>
                <groupId>${project.groupId}</groupId>
                <artifactId>axis2-repo-maven-plugin</artifactId>
                <version>${project.version}</version>
                <executions>
                    <execution>
                        <id>Test01-repo</id>
                        <goals>
                            <goal>create-test-repository</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/repo/Test01</outputDirectory>
                            <serviceDescriptions>
                                <serviceDescription>
                                    <directory>${project.build.directory}/gen/Test01/resources</directory>
                                    <parameters>
                                        <parameter>
                                            <name>ServiceClass</name>
                                            <value>org.apache.axis2.jaxbri.Test01Impl</value>
                                        </parameter>
                                    </parameters>
                                </serviceDescription>
                            </serviceDescriptions>
                        </configuration>
                    </execution>
                    <execution>
                        <id>processor-repo</id>
                        <goals>
                            <goal>create-test-repository</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/repo/processor</outputDirectory>
                            <serviceDescriptions>
                                <serviceDescription>
                                    <directory>${project.build.directory}/gen/processor/resources</directory>
                                    <parameters>
                                        <parameter>
                                            <name>ServiceClass</name>
                                            <value>org.apache.axis2.jaxbri.processor.ProcessorImpl</value>
                                        </parameter>
                                    </parameters>
                                </serviceDescription>
                            </serviceDescriptions>
                        </configuration>
                    </execution>
                    <execution>
                        <id>identityservice-repo</id>
                        <goals>
                            <goal>create-test-repository</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/repo/identityservice</outputDirectory>
                            <serviceDescriptions>
                                <serviceDescription>
                                    <directory>${project.build.directory}/gen/identityservice/resources</directory>
                                    <scope>application</scope>
                                    <parameters>
                                        <parameter>
                                            <name>ServiceClass</name>
                                            <value>org.apache.axis2.jaxbri.identityservice.IdentityLinkingServiceImpl</value>
                                        </parameter>
                                    </parameters>
                                </serviceDescription>
                            </serviceDescriptions>
                        </configuration>
                    </execution>
                    <execution>
                        <id>mtom-repo</id>
                        <goals>
                            <goal>create-test-repository</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/repo/mtom</outputDirectory>
                            <serviceDescriptions>
                                <serviceDescription>
                                    <directory>${project.build.directory}/gen/mtom/resources</directory>
                                    <scope>application</scope>
                                    <parameters>
                                        <parameter>
                                            <name>ServiceClass</name>
                                            <value>org.apache.axis2.jaxbri.mtom.MtomImpl</value>
                                        </parameter>
                                    </parameters>
                                </serviceDescription>
                            </serviceDescriptions>
                            <generatedAxis2xml>
                                <parameters>
                                    <parameter>
                                        <name>enableMTOM</name>
                                        <value>true</value>
                                    </parameter>
                                </parameters>
                            </generatedAxis2xml>
                        </configuration>
                    </execution>
                    <execution>
                        <id>axis2-5919-repo</id>
                        <goals>
                            <goal>create-test-repository</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/repo/AXIS2-5919</outputDirectory>
                            <serviceDescriptions>
                                <serviceDescription>
                                    <directory>${project.build.directory}/gen/AXIS2-5919/resources</directory>
                                    <scope>application</scope>
                                    <parameters>
                                        <parameter>
                                            <name>ServiceClass</name>
                                            <value>org.apache.axis2.jaxbri.axis2_5919.FaultServiceImpl</value>
                                        </parameter>
                                    </parameters>
                                </serviceDescription>
                            </serviceDescriptions>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <generatedAxis2xml />
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
