<?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>src</id>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <!-- Copy license and other files from root -->
        <fileSet>
            <directory>${basedir}/../..</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>BUILDING.txt</include>
                <include>README.txt</include>
                <include>RELEASE*.txt</include>
            </includes>
            <lineEnding>dos</lineEnding>
        </fileSet>

        <!-- Binary Files -->
        <fileSet>
            <directory>${basedir}/../..</directory>
            <outputDirectory>src</outputDirectory>
            <includes>
                <include>**/*.jpeg</include>
                <include>**/*.jpg</include>
                <include>**/*.gif</include>
                <include>**/*.png</include>
                <include>**/*.exe</include>
                <include>**/*.dll</include>
                <include>**/*.jar</include>
                <include>**/*.so</include>
                <include>**/*.ks</include>
                <include>**/*.ts</include>
                <include>**/*.keystore</include>
                <include>**/*.bin</include>
                <include>**/*.jnilib</include>
                <include>**/*.cert</include>
                <include>**/*.jks</include>
                <include>apache-servicemix/src/main/release/bin/*/wrapper</include>
            </includes>
            <excludes>
                <exclude>**/eclipse-classes/**</exclude>
                <exclude>**/target/**</exclude>
            </excludes>
        </fileSet>

        <!-- Text Files -->
        <fileSet>
            <directory>${basedir}/../..</directory>
            <outputDirectory>src</outputDirectory>
            <includes>
                <include>**/*</include>
            </includes>
            <excludes>
                <exclude>**/*.jpeg</exclude>
                <exclude>**/*.jpg</exclude>
                <exclude>**/*.gif</exclude>
                <exclude>**/*.png</exclude>
                <exclude>**/*.exe</exclude>
                <exclude>**/*.dll</exclude>
                <exclude>**/*.jar</exclude>
                <exclude>**/*.so</exclude>
                <exclude>**/*.ks</exclude>
                <exclude>**/*.ts</exclude>
                <exclude>**/*.keystore</exclude>
                <exclude>**/*.bin</exclude>
                <exclude>**/*.jnilib</exclude>
                <exclude>**/*.cert</exclude>
                <exclude>apache-servicemix/src/main/release/bin/*/wrapper</exclude>

                <exclude>**/target/**</exclude>
                <exclude>**/build/**</exclude>
                <exclude>activemq-data/**</exclude>
                <exclude>*/activemq-data/**</exclude>
                <exclude>**/eclipse-classes/**</exclude>
                <exclude>**/.*</exclude>
                <exclude>**/.*/**</exclude>

                <exclude>**/surefire*</exclude>
                <exclude>**/svn-commit*</exclude>

                <exclude>**/*.iml</exclude>
                <exclude>**/*.ipr</exclude>
                <exclude>**/*.iws</exclude>
                <exclude>**/*.jks</exclude>
                <exclude>**/cobertura.ser</exclude>

            </excludes>
            <lineEnding>dos</lineEnding>
        </fileSet>
    </fileSets>
    <files>
        <file>
            <source>${basedir}/target/maven-shared-archive-resources/META-INF/LICENSE</source>
            <outputDirectory>/</outputDirectory>
            <destName>LICENSE.txt</destName>
            <fileMode>0644</fileMode>
            <lineEnding>unix</lineEnding>
        </file>
        <file>
            <source>${basedir}/target/maven-shared-archive-resources/META-INF/NOTICE</source>
            <outputDirectory>/</outputDirectory>
            <destName>NOTICE.txt</destName>
            <fileMode>0644</fileMode>
            <lineEnding>unix</lineEnding>
        </file>
    </files>
</assembly>
