<?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>
    <!-- Binary Files -->
    <fileSet>
      <directory>${project.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>**/db*.log</include>
        <include>**/db*.data</include>
        <include>**/db*.redo</include>
        <include>assembly/src/release/bin/*/wrapper</include>
      </includes>
      <excludes>
        <exclude>**/eclipse-classes/**</exclude>
        <exclude>**/target/**</exclude>
      </excludes>
    </fileSet>

    <!-- Text Files -->
    <fileSet>
      <directory>${project.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>assembly/src/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>
