<?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.
  -->
<assembly>
    <id>bin</id>
    <includeBaseDirectory>false</includeBaseDirectory>
    <formats>
        <format>tar.gz</format>
        <format>zip</format>
    </formats>

    <fileSets>
        <fileSet>
            <directory>src/main/release</directory>
            <outputDirectory>synapse-${synapse.version}</outputDirectory>
            <includes>
                <include>LICENSE</include>
                <include>NOTICE</include>
                <include>README.txt</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/bin</directory>
            <outputDirectory>synapse-${synapse.version}/bin</outputDirectory>
            <includes>
                <include>synapse.sh</include>
                <include>synapse-daemon.sh</include>
            </includes>
            <fileMode>755</fileMode>
        </fileSet>
        <fileSet>
            <directory>src/main/bin</directory>
            <outputDirectory>synapse-${synapse.version}/bin</outputDirectory>
            <includes>
                <include>synapse.bat</include>
                <include>install-synapse-service.bat</include>
                <include>uninstall-synapse-service.bat</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>repository</directory>
            <outputDirectory>synapse-${synapse.version}/repository</outputDirectory>
            <excludes>
                <exclude>conf/axis2.xml</exclude>
                <exclude>conf/synapse.xml</exclude>
                <exclude>conf/web.xml</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>repository/conf</directory>
            <outputDirectory>synapse-${synapse.version}/repository/conf</outputDirectory>
            <includes>
                <include>axis2.xml</include>
                <include>synapse.xml</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>repository/conf/sample/resources/misc/client</directory>
            <outputDirectory>synapse-${synapse.version}/samples/axis2Client/client_repo/conf
            </outputDirectory>
            <includes>
                <include>axis2.xml</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>modules/core/src/main/resources</directory>
            <outputDirectory>synapse-${synapse.version}/lib</outputDirectory>
            <includes>
                <include>log4j.properties</include>
                <include>providers.xml</include>
                <include>identity.jks</include>
                <include>trust.jks</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/bin</directory>
            <outputDirectory>synapse-${synapse.version}/lib</outputDirectory>
            <includes>
                <include>wrapper-windows-x86-32.dll</include>
                <include>libwrapper-linux-x86-32.so</include>
                <include>libwrapper-linux-x86-64.so</include>
                <include>libwrapper-solaris-sparc-32.so</include>
                <include>libwrapper-solaris-sparc-64.so</include>
                <include>libwrapper-solaris-x86-32.so</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>repository/conf/sample/resources/misc/server</directory>
            <outputDirectory>synapse-${synapse.version}/samples/axis2Server/repository/conf
            </outputDirectory>
            <includes>
                <include>axis2.xml</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>modules/core/target</directory>
            <outputDirectory>synapse-${synapse.version}/repository/modules</outputDirectory>
            <includes>
                <include>synapse-${synapse.version}.mar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/release/docs</directory>
            <outputDirectory>synapse-${synapse.version}</outputDirectory>
            <includes>
                <include>release_notes.txt</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/bin/native</directory>
            <outputDirectory>synapse-${synapse.version}/bin/native</outputDirectory>
            <fileMode>755</fileMode>
        </fileSet>      
        <fileSet>
            <directory>src/site/resources/images</directory>
            <outputDirectory>synapse-${synapse.version}/docs/images</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>src/site/resources/logos</directory>
            <outputDirectory>synapse-${synapse.version}/docs/logos</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>modules/samples/services</directory>
            <outputDirectory>synapse-${synapse.version}/samples/axis2Server/src</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>modules/samples/src/main/java</directory>
            <outputDirectory>synapse-${synapse.version}/samples/axis2Client/src</outputDirectory>
            <excludes>
                <exclude>**/target</exclude>
                <exclude>**/target/**/*</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>modules/samples/src/main/scripts</directory>
            <outputDirectory>synapse-${synapse.version}/samples/axis2Client</outputDirectory>
            <excludes>
                <exclude>custom.sh</exclude>
                <exclude>custom.bat</exclude>
                <exclude>axis2server.sh</exclude>
                <exclude>axis2server.bat</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>modules/samples/src/main/scripts</directory>
            <outputDirectory>synapse-${synapse.version}/samples/axis2Server</outputDirectory>
            <includes>
                <include>axis2server.sh</include>
            </includes>
            <fileMode>755</fileMode>
        </fileSet>
        <fileSet>
            <directory>modules/samples/src/main/scripts</directory>
            <outputDirectory>synapse-${synapse.version}/samples/axis2Server</outputDirectory>
            <includes>
                <include>axis2server.bat</include>
            </includes>
        </fileSet>

        <!--<fileSet>-->
        <!--<directory>target/javadoc</directory>-->
        <!--<outputDirectory>synapse-${synapse.version}/docs/api</outputDirectory>-->
        <!--<includes>-->
        <!--<include>**/*</include>-->
        <!--</includes>-->
        <!--</fileSet>-->
        <!--<fileSet>-->
        <!--<directory>target/additional-libs</directory>-->
        <!--<outputDirectory>synapse-${synapse.version}/lib</outputDirectory>-->
        <!--<includes>-->
        <!--<include>**/*</include>-->
        <!--</includes>-->
        <!--</fileSet>-->
        <!--<fileSet>-->
        <!--<directory>target</directory>-->
        <!--<outputDirectory>synapse-${synapse.version}/lib</outputDirectory>-->
        <!--<includes>-->
        <!--<include>synapse.jar</include>-->
        <!--</includes>-->
        <!--</fileSet>-->

        <fileSet>
            <directory>modules/core/target</directory>
            <outputDirectory>synapse-${synapse.version}/lib</outputDirectory>
            <includes>
                <include>synapse-core-${synapse.version}.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>modules/samples/target</directory>
            <outputDirectory>synapse-${synapse.version}/lib</outputDirectory>
            <includes>
                <include>synapse-samples-${synapse.version}.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>modules/extensions/target</directory>
            <outputDirectory>synapse-${synapse.version}/lib</outputDirectory>
            <includes>
                <include>synapse-extensions-${synapse.version}.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>modules/transports/target</directory>
            <outputDirectory>synapse-${synapse.version}/lib</outputDirectory>
            <includes>
                <include>synapse-transports-${synapse.version}.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>patches</directory>
            <outputDirectory>synapse-${synapse.version}/lib/patches</outputDirectory>
            <includes>
                <include>*.jar</include>
                <include>patches.txt</include>                
            </includes>
        </fileSet>
    </fileSets>
    <files>
        <file>
            <source>src/site/xdoc/Synapse_Configuration_Language.xml</source>
            <outputDirectory>synapse-${synapse.version}/docs</outputDirectory>
            <destName>Synapse_Configuration_Language.html</destName>
        </file>
        <file>
            <source>src/site/xdoc/Synapse_Samples.xml</source>
            <outputDirectory>synapse-${synapse.version}/docs</outputDirectory>
            <destName>Synapse_Samples.html</destName>
        </file>
        <file>
            <source>src/site/xdoc/Synapse_Samples_Setup.xml</source>
            <outputDirectory>synapse-${synapse.version}/docs</outputDirectory>
            <destName>Synapse_Samples_Setup.html</destName>
        </file>
        <file>
            <source>src/site/xdoc/Synapse_QuickStart.xml</source>
            <outputDirectory>synapse-${synapse.version}/docs</outputDirectory>
            <destName>Synapse_QuickStart.html</destName>
        </file>
        <file>
            <source>src/site/xdoc/Synapse_Extending.xml</source>
            <outputDirectory>synapse-${synapse.version}/docs</outputDirectory>
            <destName>Synapse_Extending.html</destName>
        </file>
    </files>
    <dependencySets>
        <dependencySet>
            <outputDirectory>synapse-${synapse.version}/lib</outputDirectory>
            <excludes>
                <exclude>tomcat:catalina:jar</exclude>
                <exclude>tomcat:catalina-optional:jar</exclude>
                <exclude>tomcat:jasper-compiler:jar</exclude>
                <exclude>tomcat:jasper-compiler-jdt:jar</exclude>
                <exclude>tomcat:jasper-runtime:jar</exclude>
                <exclude>tomcat:naming-factory:jar</exclude>
                <exclude>tomcat:naming-resources:jar</exclude>
                <exclude>tomcat:servlets-default:jar</exclude>
                <exclude>tomcat:tomcat-coyote:jar</exclude>
                <exclude>tomcat:tomcat-http:jar</exclude>
                <exclude>tomcat:tomcat-util:jar</exclude>
                <exclude>tomcat:naming-factory-dbcp:jar</exclude>
                <exclude>tomcat:tomcat-apr:jar</exclude>
                <exclude>tomcat:jsp-api:jar</exclude>
                <exclude>tomcat:servlet-api:jar</exclude>
                <exclude>mx4j:mx4j-tools:jar</exclude>
                <exclude>mx4j:mx4j-jmx:jar</exclude>
                <exclude>org.apache.axis2:addressing:mar</exclude>
                <exclude>org.apache.rampart:rampart:mar</exclude>
                <exclude>org.wso2.mercury:mercury-mar:mar</exclude>
                <exclude>org.apache.ant:ant:jar</exclude>
                <exclude>org.apache.ant:ant-nodeps:jar</exclude>
                <exclude>org.apache.ant:ant-launcher:jar</exclude>
                <exclude>axis:axis-ant:jar</exclude>
                <exclude>javax.servlet:servlet-api:jar</exclude>
                <exclude>commons-discovery:commons-discovery:jar</exclude>
                <exclude>commons-cli:commons-cli:jar</exclude>
                <exclude>org.apache.geronimo.specs:geronimo-javamail:jar</exclude>
                <exclude>xml-apis:xml-apis:jar</exclude>
                <exclude>xerces:xercesImpl:jar</exclude>
                <exclude>junit:junit:jar</exclude>
                <exclude>org.apache.mina:mina-core:jar</exclude>
                <exclude>org.apache.mina:mina-filter-ssl:jar</exclude>
                <exclude>quickfixj:quickfixj-core:jar</exclude>
                <exclude>quickfixj:quickfixj-msg-fix40:jar</exclude>
                <exclude>quickfixj:quickfixj-msg-fix41:jar</exclude>
                <exclude>quickfixj:quickfixj-msg-fix42:jar</exclude>
                <exclude>quickfixj:quickfixj-msg-fix43:jar</exclude>
                <exclude>quickfixj:quickfixj-msg-fix44:jar</exclude>
                <exclude>org.slf4j:slf4j-jdk14:jar</exclude>
                <exclude>org.slf4j:slf4j-api:jar</exclude>
                <exclude>org.apache.qpid:qpid-common:jar</exclude>
                <exclude>org.apache.qpid:qpid-client:jar</exclude>
            </excludes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>synapse-${synapse.version}/lib/endorsed</outputDirectory>
            <includes>
                <include>xml-apis:xml-apis:jar</include>
                <include>xerces:xercesImpl:jar</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>synapse-${synapse.version}/repository/modules</outputDirectory>
            <includes>
                <include>org.apache.axis2:addressing:mar</include>
                <include>org.apache.rampart:rampart:mar</include>
                <include>org.wso2.mercury:mercury-mar:mar</include>
            </includes>
            <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping>
        </dependencySet>
        <dependencySet>
            <outputDirectory>synapse-${synapse.version}/samples/axis2Client/client_repo/modules
            </outputDirectory>
            <includes>
                <include>org.apache.axis2:addressing:mar</include>
                <include>org.apache.rampart:rampart:mar</include>
                <include>org.wso2.mercury:mercury-mar:mar</include>
            </includes>
            <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping>
        </dependencySet>
        <dependencySet>
            <outputDirectory>synapse-${synapse.version}/samples/axis2Server/repository/modules
            </outputDirectory>
            <includes>
                <include>org.apache.axis2:addressing:mar</include>
                <include>org.apache.rampart:rampart:mar</include>
                <include>org.wso2.mercury:mercury-mar:mar</include>
            </includes>
            <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping>
        </dependencySet>
    </dependencySets>

</assembly>
