<?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-SNAPSHOT</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>
