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

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-parent</artifactId>
    <version>5.4.3</version>
  </parent>

  <artifactId>activemq-core</artifactId>
  <packaging>bundle</packaging>
  <name>ActiveMQ :: Core</name>
  <description>The ActiveMQ Message Broker and Client implementations</description>

  <properties>
    <activemq.osgi.import.pkg>
      com.thoughtworks.xstream*;resolution:=optional,
      javax.xml.stream*;resolution:=optional,
      org.codehaus.jettison*;resolution:=optional,
      org.apache.activeio*;resolution:=optional,
      org.apache.camel*;resolution:=optional,
      org.apache.commons.pool*;resolution:=optional,
      org.apache.commons.net*;resolution:=optional,
      org.apache.derby*;resolution:=optional,
      org.apache.tools.ant*;resolution:=optional,
      org.apache.maven*;resolution:=optional,
      org.apache.xbean*;resolution:=optional,
      '=org.apache.xbean.spring.context.v2;resolution:=optional',
      org.apache.xpath*;resolution:=optional,
      org.codehaus.jam*;resolution:=optional,
      org.springframework*;resolution:=optional,
      org.springframework.beans.factory.xml;resolution:=optional,
      org.w3c.dom.traversal*;resolution:=optional,
      *
    </activemq.osgi.import.pkg>
    <activemq.osgi.export>
      org.apache.activemq*;version=${project.version};-noimport:=true,
      '=META-INF.services.org.apache.xbean.spring.http.activemq.apache.org.schema';-noimport:=true
    </activemq.osgi.export>
    <activemq.osgi.dynamic.import>*</activemq.osgi.dynamic.import>
    <surefire.argLine>-Xmx512M</surefire.argLine>
  </properties>

  <dependencies>

    <!-- =============================== -->
    <!-- Required Dependencies -->
    <!-- =============================== -->
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jms_1.1_spec</artifactId>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>activeio-core</artifactId>
      <optional>false</optional>
    </dependency>

    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>kahadb</artifactId>
      <optional>false</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq.protobuf</groupId>
      <artifactId>activemq-protobuf</artifactId>
      <optional>false</optional>
    </dependency>

    <!-- =============================== -->
    <!-- Optional Dependencies           -->
    <!-- =============================== -->

    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
    </dependency>
    

    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-jaas</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jta_1.0.1B_spec</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-annotation_1.0_spec</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jacc_1.1_spec</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>commons-pool</groupId>
      <artifactId>commons-pool</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.thoughtworks.xstream</groupId>
      <artifactId>xstream</artifactId>
      <optional>true</optional>
    </dependency>        
    <dependency>
        <groupId>org.codehaus.jettison</groupId>
        <artifactId>jettison</artifactId>
        <optional>true</optional>
    </dependency>

    <!-- for XML parsing -->
    <dependency>
      <groupId>org.apache.xbean</groupId>
      <artifactId>xbean-spring</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>stax</groupId>
      <artifactId>stax-api</artifactId>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
    </dependency>    

    <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derby</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>xalan</groupId>
      <artifactId>xalan</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>commons-net</groupId>
      <artifactId>commons-net</artifactId>
    </dependency>

    <!-- not really a dependency at all - just added optionally to get the generator working -->
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-openwire-generator</artifactId>
      <optional>true</optional>
    </dependency>

    <!-- =============================== -->
    <!-- Testing Dependencies            -->
    <!-- =============================== -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-all</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>activeio-core</artifactId>
      <optional>false</optional>
      <type>test-jar</type>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jms</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-jmdns_1.0</artifactId>
      <optional>true</optional>
    </dependency>
    
    <dependency>
      <groupId>org.jasypt</groupId>
      <artifactId>jasypt</artifactId>
    </dependency>
    <dependency>
      <groupId>com.ibm.icu</groupId>
      <artifactId>icu4j</artifactId>
    </dependency> 

    <!-- database testing -->
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-primitives</groupId>
      <artifactId>commons-primitives</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>axion</groupId>
      <artifactId>axion</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>regexp</groupId>
      <artifactId>regexp</artifactId>
      <scope>test</scope>
    </dependency>

    <!--  LDAP tests -->
    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-core</artifactId>
      <version>1.0.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jmock</groupId>
      <artifactId>jmock-junit4</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jmock</groupId>
      <artifactId>jmock-legacy</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.ftpserver</groupId>
      <artifactId>ftpserver-core</artifactId>
      <version>${ftpserver-version}</version>
      <scope>test</scope>
    </dependency>


  </dependencies>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <links>
            <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
            <link>http://java.sun.com/j2ee/1.4/docs/api/</link>
            <link>http://jakarta.apache.org/commons/logging/apidocs/</link>
            <link>http://junit.sourceforge.net/javadoc/</link>
          </links>
          <stylesheetfile>${basedir}/../etc/css/stylesheet.css</stylesheetfile>
          <linksource>true</linksource>
          <maxmemory>256m</maxmemory>
          <source>1.5</source>
          <groups>
            <group>
              <title>JMS Client</title>
              <packages>org.apache.activemq:org.apache.activemq.command</packages>
            </group>
            <group>
              <title>JMS Client support classes for working with BLOBs and JNDI</title>
              <packages>org.apache.activemq.blob:org.apache.activemq.jndi</packages>
            </group>
            <group>
              <title>Enterprise Integration Pattern support via Camel</title>
              <packages>org.apache.activemq.camel:org.apache.activemq.camel.*</packages>
            </group>
            <group>
              <title>Spring support</title>
              <packages>org.apache.activemq.spring:org.apache.activemq.xbean:org.apache.activemq.pool</packages>
            </group>
            <group>
              <title>JMS Client Implementation classes</title>
              <packages>org.apache.activemq.filter:org.apache.activemq.management:org.apache.activemq.selector:org.apache.activemq.thread</packages>
            </group>
            <group>
              <title>Broker implementation</title>
              <packages>org.apache.activemq.advisory:org.apache.activemq.broker:org.apache.activemq.broker.*:org.apache.activemq.state:org.apache.activemq.security:org.apache.activemq.transaction</packages>
            </group>
            <group>
              <title>Broker Persistent Store</title>
              <packages>org.apache.activemq.store:org.apache.activemq.store.*</packages>
            </group>
            <group>
              <title>Kaha fast file based storage</title>
              <packages>org.apache.activemq.kaha:org.apache.activemq.kaha.*</packages>
            </group>
            <group>
              <title>Transports</title>
              <packages>org.apache.activemq.transport:org.apache.activemq.transport.*</packages>
            </group>
            <group>
              <title>Memory handling</title>
              <packages>org.apache.activemq.memory:org.apache.activemq.memory.*</packages>
            </group>
            <group>
              <title>Networks of Brokers</title>
              <packages>org.apache.activemq.network:org.apache.activemq.network.*</packages>
            </group>
            <group>
              <title>OpenWire support</title>
              <packages>org.apache.activemq.openwire:org.apache.activemq.openwire.*</packages>
            </group>
            <group>
              <title>Utility classes</title>
              <packages>org.apache.activemq.util:org.apache.activemq.wireformat:org.apache.activemq.proxy</packages>
            </group>
          </groups>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>1.1</version>
        <configuration>
          <threshold>Normal</threshold>
          <effort>Default</effort>
        </configuration>
      </plugin>
    </plugins>
    </reporting>
    
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Bundle-Activator>org.apache.activemq.util.osgi.Activator</Bundle-Activator>
          </instructions>
        </configuration>
      </plugin>
      
      <!-- Configure which tests are included/excuded -->
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <forkMode>pertest</forkMode>
          <childDelegation>false</childDelegation>
          <useFile>true</useFile>
          <argLine>${surefire.argLine}</argLine>

           <systemProperties>
            <property>
              <name>org.apache.activemq.default.directory.prefix</name>
              <value>target/</value>
            </property>
            <!-- Uncomment the following if you want to configure custom logging (using src/test/resources/log4j.properties)
                 while running mvn:test
                 Note: if you want to see log messages on the console window remove
                       "redirectTestOutputToFile" from the parent pom
            -->
            <!--           
            <property>
              <name>log4j.configuration</name>
              <value>file:target/test-classes/log4j.properties</value>
            </property>
            -->
          </systemProperties>

          <includes>
            <include>**/*Test.*</include>
          </includes>
          <excludes>
            <exclude>**/perf/SimpleDurableTopicTest.*</exclude>
          </excludes>
          <excludes>

            <!-- These tests run too slow to execute as part of the unit tests -->
            <exclude>**/TransactionNotStartedErrorTest.*</exclude>
            <exclude>**/DefaultStoreBrokerTest.*</exclude>
            <exclude>**/TcpTransportBrokerTest.*</exclude>
            <exclude>**/activeio/*</exclude>

            <!-- These are performance tests so take too long to run -->
            <exclude>**/perf/*</exclude>
            
            <!-- These are load tests so take too long to run -->
            <exclude>**/load/*</exclude>

            <!-- http://jira.activemq.org/jira/browse/AMQ-626 -->
            <exclude>**/MultipleTestsWithSpringFactoryBeanTest.*</exclude>
            <exclude>**/MultipleTestsWithXBeanFactoryBeanTest.*</exclude>
            <exclude>**/MultipleTestsWithSpringXBeanFactoryBeanTest.*</exclude>

            <!--  these seem to fail only in m2 -->
            <!--<exclude>**/TransactedTopicMasterSlaveTest.*</exclude>-->

            <!-- Kaha in flux - removing tests -->
            <exclude>**/KahaDBStoreXARecoveryBrokerTest.*</exclude>
            <exclude>**/KahaDBStoreRecoveryBrokerTest.*</exclude>

            <!-- Multicast and UDP based tests fail on GBuild -->
            <exclude>**/PeerTransportTest.*</exclude>
            <exclude>**/MulticastTransportTest.*</exclude>
            <exclude>**/MulticastNetworkTest.*</exclude>
            <exclude>**/UnreliableUdpTransportTest.*</exclude>
            <exclude>**/SslTransportBrokerTest.*</exclude>

            <!-- this one is a little flaky and can fail on some platforms randomly -->
            <exclude>**/QuickJournalRecoveryBrokerTest.*</exclude>
            <exclude>**/QuickJournalXARecoveryBrokerTest.*</exclude>
            <exclude>**/RendezvousDiscoverTransportTest.*</exclude>
            <exclude>**/MissingDataFileTest.*</exclude>

            <!-- UDP related tests someimes fail on some platforms -->
            <exclude>**/UdpTransportTest.*</exclude>
            <exclude>**/UdpTransportUsingServerTest.*</exclude>
            <exclude>**/UdpSendReceiveWithTwoConnectionsTest.*</exclude>
            <exclude>**/UdpSendReceiveWithTwoConnectionsAndLargeMessagesTest.*</exclude>

            <!-- m2 tests failing since move from assembly  -->
            <exclude>**/TwoBrokerMessageNotSentToRemoteWhenNoConsumerTest.*</exclude>
            <exclude>**/TwoBrokerQueueClientsReconnectTest.*</exclude>
            <exclude>**/QueueConsumerCloseAndReconnectTest.*</exclude>
            <exclude>**/TwoBrokerMulticastQueueTest.*</exclude>

            <!-- TODO move to optional module...  -->
            <exclude>**/TwoBrokerTopicSendReceiveUsingHttpTest.*</exclude>

            <!-- This test only works on machines which have ssh propertly configured -->
            <exclude>**/SSHTunnelNetworkReconnectTest.*</exclude>

            <!--  see  http://issues.apache.org/activemq/browse/AMQ-826 -->
            <!--  have not yet figured out the way to configure ApacheDS via Spring  -->
            <exclude>**/LDAPAuthorizationMapTest.*</exclude>

            <!-- http://issues.apache.org/activemq/browse/AMQ-1027 -->
            <exclude>**/FailoverConsumerTest.*</exclude>

            <!-- The NIO implemenation is not working properly on OS X.. -->
            <exclude>**/nio/**</exclude>
            <exclude>**/NioQueueSubscriptionTest.*/</exclude>

             <!-- A test used for memory profiling only. -->
             <exclude>**/NetworkConnectionsCleanedupTest.*/**</exclude>
             
             <exclude>**/NetworkConnectionsCleanedupTest.*/**</exclude>
             
             <!-- used just to test potential memory leaks manually -->
             <exclude>**/JDBCTestMemory.*</exclude>
             
             <exclude>**/amq1490/*</exclude>
             <exclude>**/archive/*</exclude>
             <exclude>**/NetworkFailoverTest.*/**</exclude>
             
             <exclude>**/vm/VMTransportBrokerTest.*</exclude>
             <exclude>**/broker/MarshallingBrokerTest.*</exclude>
             

            <exclude>**/AMQDeadlockTest3.*</exclude>

            <!-- https://issues.apache.org/activemq/browse/AMQ-2050 -->
            <exclude>**/ProxyConnectorTest.*</exclude>

            <!-- breaks hudson: disable till we get a chance to give it the time that it needs - http://hudson.zones.apache.org/hudson/job/ActiveMQ/org.apache.activemq$activemq-core/199/testReport/org.apache.activemq.network/BrokerNetworkWithStuckMessagesTest/testBrokerNetworkWithStuckMessages/ -->
            <exclude>**/BrokerNetworkWithStuckMessagesTest.*</exclude>
            
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.activemq.protobuf</groupId>
        <artifactId>activemq-protobuf</artifactId>
         <executions>
          <execution>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <configuration>
          <filesets>
            <fileset>
              <directory>${basedir}/activemq-data</directory>
            </fileset>
          </filesets>
        </configuration>
      </plugin>
      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>

        <executions>
	        <execution>
            <id>package</id>
            <phase>package</phase>
            <configuration>
              <tasks>
                <echo>Deleting unwanted resources from the test-jar</echo>
                <delete dir="${project.build.directory}/test-classes" verbose="true">
									<include name="*.*" />
								</delete>
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
  
          <execution>
            <id>site</id>
            <phase>site</phase>
            <configuration>
              <tasks>
                <echo>Running the XSDDoc task</echo>
                <taskdef name="xsddoc" classname="net.sf.xframe.xsddoc.Task" />
                <mkdir dir="${basedir}/target/site/xsddoc" />
                <xsddoc file="${basedir}/target/classes/activemq.xsd" out="${basedir}/target/site/xsddoc" doctitle="Apache ActiveMQ XML Schema Reference" header="&lt;a href='http://activemq.apache.org/'&gt;Apache ActiveMQ&lt;/a&gt;" footer="Copyright 2007 (c) the &lt;a href='http://www.apache.org/'&gt;Apache Software Foundation&lt;/a&gt;" verbose="false" />
                <!--
                        css="${basedir}/../etc/css/stylesheet.css"
                -->
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>xsddoc</groupId>
            <artifactId>maven-xsddoc-plugin</artifactId>
            <version>1.0</version>
          </dependency>
        </dependencies>
      </plugin>

      <!-- generate the attached tests jar -->
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>javacc-maven-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <configuration>
              <sourceDirectory>${basedir}/src/main/grammar</sourceDirectory>
              <outputDirectory>${basedir}/target/generated-javacc</outputDirectory>
              <packageName>org.apache.activemq.selector</packageName>
            </configuration>
            <goals>
              <goal>javacc</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.xbean</groupId>
        <artifactId>maven-xbean-plugin</artifactId>
        <version>${xbean-version}</version>
        <executions>
          <execution>
          <phase>process-classes</phase>
            <configuration>
              <namespace>http://activemq.apache.org/schema/core</namespace>
              <schema>${basedir}/target/classes/activemq.xsd</schema>
              <outputDir>${basedir}/target/classes</outputDir>
              <generateSpringSchemasFile>false</generateSpringSchemasFile>
              <excludedClasses>org.apache.activemq.broker.jmx.AnnotatedMBean,org.apache.activemq.broker.jmx.DestinationViewMBean</excludedClasses>
            </configuration>
            <goals>
              <goal>mapping</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.0</version>
        <configuration>
	  <check>
            <branchRate>50</branchRate>
            <lineRate>50</lineRate>
            <haltOnFailure>true</haltOnFailure>
            <totalBranchRate>50</totalBranchRate>
            <totalLineRate>50</totalLineRate>
          </check>
        </configuration>
      </plugin>      
    </plugins>
  </build>

  <profiles>
    
    <profile>
      <id>openwire-generate</id>
      <dependencies>
        <dependency>
          <groupId>org.apache.activemq</groupId>
          <artifactId>activemq-openwire-generator</artifactId>
          <version>${activemq-version}</version>
          <optional>true</optional>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>default</id>
                <phase>generate-sources</phase>
                <configuration>
                  <tasks>
                    <echo>Running OpenWire Generator</echo>
                    <taskdef name="generate" classname="org.apache.activemq.openwire.tool.JavaGeneratorTask" classpathref="maven.compile.classpath" />
                    <generate version="6" basedir="${basedir}" />
                  </tasks>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    
    <profile>
      <id>jdk1.4</id>
      <activation>
        <jdk>1.4</jdk>
      </activation>
      <dependencies>
        <dependency>
          <groupId>activesoap</groupId>
          <artifactId>jaxp-api</artifactId>
        </dependency>
      </dependencies>
    </profile>
    
  </profiles>

</project>
