<?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>../..</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>BUILDING</include>
                <include>README</include>
                <include>NOTICE</include>
                <include>LICENSE</include>
                <include>RELEASE*</include>
            </includes>
            <lineEnding>dos</lineEnding>
        </fileSet>

        <!-- Binary Files -->
        <fileSet>
            <directory>../..</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>**/*.kar</include>
                <include>**/*.zip</include>
                <include>apache-karaf/src/main/release/bin/*/wrapper</include>
            </includes>
            <excludes>
                <exclude>**/eclipse-classes/**</exclude>
                <exclude>**/target/**</exclude>
            </excludes>
        </fileSet>

        <!-- Text Files -->
        <fileSet>
            <directory>../..</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-karaf/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>**/cobertura.ser</exclude>

            </excludes>
            <lineEnding>dos</lineEnding>
        </fileSet>
    </fileSets>

</assembly>
