<?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.camel</groupId>
    <artifactId>camel-parent</artifactId>
    <version>2.16.0</version>
    <relativePath>../parent</relativePath>
  </parent>

  <artifactId>camel-core</artifactId>
  <packaging>bundle</packaging>
  <name>Camel :: Core</name>
  <description>The Core Camel Java DSL based router</description>

  <properties>
    <camel.osgi.export.pkg>
      !org.apache.camel.tools.*,
      org.apache.camel.*;-noimport:=true
    </camel.osgi.export.pkg>
    <camel.osgi.import>
      org.apache.camel.tools.*;resolution:=optional,
      !org.apache.camel.*,
      !com.googlecode.concurrentlinkedhashmap,
      ${camel.osgi.import.defaults},
      org.apache.xalan.xsltc.trax;resolution:=optional,
      javax.activation;resolution:=optional,
      javax.xml.bind;resolution:=optional,
      javax.xml.bind.annotation;resolution:=optional,
      javax.xml.bind.annotation.adapters;resolution:=optional,
      javax.xml.stream;resolution:=optional,
      javax.xml.transform.stax;resolution:=optional,
      net.sf.saxon.event;resolution:=optional,
      net.sf.saxon.serialize;resolution:=optional,
      *
    </camel.osgi.import>
    <camel.osgi.export.service>
      org.apache.camel.spi.ComponentResolver;component=bean,
      org.apache.camel.spi.ComponentResolver;component=binding,
      org.apache.camel.spi.ComponentResolver;component=browse,
      org.apache.camel.spi.ComponentResolver;component=class,
      org.apache.camel.spi.ComponentResolver;component=controlbus,
      org.apache.camel.spi.ComponentResolver;component=dataformat,
      org.apache.camel.spi.ComponentResolver;component=dataset,
      org.apache.camel.spi.ComponentResolver;component=direct,
      org.apache.camel.spi.ComponentResolver;component=direct-vm,
      org.apache.camel.spi.ComponentResolver;component=file,
      org.apache.camel.spi.ComponentResolver;component=language,
      org.apache.camel.spi.ComponentResolver;component=log,
      org.apache.camel.spi.ComponentResolver;component=mock,
      org.apache.camel.spi.ComponentResolver;component=properties,
      org.apache.camel.spi.ComponentResolver;component=ref,
      org.apache.camel.spi.ComponentResolver;component=rest,
      org.apache.camel.spi.ComponentResolver;component=seda,
      org.apache.camel.spi.ComponentResolver;component=scheduler,
      org.apache.camel.spi.ComponentResolver;component=stub,
      org.apache.camel.spi.ComponentResolver;component=test,
      org.apache.camel.spi.ComponentResolver;component=timer,
      org.apache.camel.spi.ComponentResolver;component=validator,
      org.apache.camel.spi.ComponentResolver;component=vm,
      org.apache.camel.spi.ComponentResolver;component=xslt,
      org.apache.camel.spi.DataFormatResolver;dataformat=gzip,
      org.apache.camel.spi.DataFormatResolver;dataformat=serialization,
      org.apache.camel.spi.DataFormatResolver;dataformat=string,
      org.apache.camel.spi.DataFormatResolver;dataformat=zip,
      org.apache.camel.spi.LanguageResolver;language=bean,
      org.apache.camel.spi.LanguageResolver;language=constant,
      org.apache.camel.spi.LanguageResolver;language=file,
      org.apache.camel.spi.LanguageResolver;language=header,
      org.apache.camel.spi.LanguageResolver;language=property,
      org.apache.camel.spi.LanguageResolver;language=ref,
      org.apache.camel.spi.LanguageResolver;language=simple,
      org.apache.camel.spi.LanguageResolver;language=tokenize,
      org.apache.camel.spi.LanguageResolver;language=xpath,
      org.apache.camel.spi.LanguageResolver;language=xtokenize
    </camel.osgi.export.service>
    <camel.osgi.dynamic>
      org.apache.camel.spring.util;${camel.osgi.import.strict.version},
      org.apache.camel.spring.pollingconsumer;${camel.osgi.import.strict.version},
      org.apache.camel.processor.interceptor.jpa;${camel.osgi.import.strict.version},
      org.apache.camel.pollconsumer.quartz2;${camel.osgi.import.strict.version},
      net.sf.saxon
    </camel.osgi.dynamic>
    <camel.osgi.provide.capability>
      osgi.extender; osgi.extender="org.apache.camel"; uses:="org.apache.camel.impl.osgi"; version:Version="$(version;==;${camel.osgi.version.clean})"
    </camel.osgi.provide.capability>
    <camel.osgi.activator>
      org.apache.camel.impl.osgi.Activator
    </camel.osgi.activator>
    <!-- do not skip any tests by default -->
    <platform.skip.tests />
  </properties>

  <dependencies>

    <!-- required dependencies by camel-core -->
    <!-- it will be shade into camel-core by bnd plugin -->
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>spi-annotations</artifactId>
      <version>${project.version}</version>
      <optional>true</optional>
    </dependency>

    <!-- required dependencies by camel-core -->
    <!-- which we shade into camel-core so its available for everybody out of the box -->
    <dependency>
      <groupId>com.googlecode.concurrentlinkedhashmap</groupId>
      <artifactId>concurrentlinkedhashmap-lru</artifactId>
    </dependency>

    <!-- required dependencies by camel-core -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

    <!-- osgi support -->
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
      <scope>provided</scope>
      <optional>true</optional>
    </dependency>

    <!-- testing -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- logging -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- for json tests -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson2-version}</version>
      <scope>test</scope>
    </dependency>

    <!-- validator -->
    <dependency>
      <groupId>xml-resolver</groupId>
      <artifactId>xml-resolver</artifactId>
      <version>${xml-resolver-version}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>


  <build>
    <pluginManagement>
        <plugins>
            <!-- Eclipse m2e Lifecycle Management -->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>${lifecycle-mapping-version}</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.camel</groupId>
                                    <artifactId>camel-package-maven-plugin</artifactId>
                                    <versionRange>${project.version}</versionRange>
                                    <goals>
                                        <goal>generate-eips-list</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
    <plugins>

      <!-- shade concurrent hashmap for faster Camel and spi-annotations as needed by everybody -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <artifactSet>
                <includes>
                  <include>com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru</include>
                </includes>
                <excludes>
                  <exclude>org.apache.camel:apt</exclude>
                </excludes>
              </artifactSet>
              <relocations>
                <relocation>
                  <pattern>com.googlecode.concurrentlinkedhashmap</pattern>
                  <shadedPattern>org.apache.camel.com.googlecode.concurrentlinkedhashmap</shadedPattern>
                </relocation>
              </relocations>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- generate the attached tests jar -->
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludes>
            <exclude>log4j.properties</exclude>
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <!-- skip file stress tests as they are intended to run manually -->
          <excludes>
            <exclude>org/apache/camel/component/file/stress/**.java</exclude>
            <exclude>**/DistributedCompletionIntervalTest.java</exclude>
            <exclude>**/DistributedConcurrentPerCorrelationKeyTest.java</exclude>
            <exclude>${platform.skip.tests}</exclude>
          </excludes>
          <forkedProcessTimeoutInSeconds>3000</forkedProcessTimeoutInSeconds>
          <!-- needed for testing the properties component -->
          <environmentVariables>
            <FOO_SERVICE_HOST>myserver</FOO_SERVICE_HOST>
            <FOO_SERVICE_PORT>8081</FOO_SERVICE_PORT>
          </environmentVariables>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-package-maven-plugin</artifactId>
        <version>${project.version}</version>
        <executions>
          <execution>
            <id>components</id>
            <goals>
              <goal>generate-components-list</goal>
            </goals>
            <phase>generate-resources</phase>
          </execution>
          <execution>
            <id>eips</id>
            <goals>
              <goal>generate-eips-list</goal>
            </goals>
            <phase>process-classes</phase>
          </execution>
          <!-- camel-core needs to generate dataformats after compilation -->
          <execution>
            <id>dataformats</id>
            <goals>
              <goal>generate-dataformats-list</goal>
            </goals>
            <phase>process-classes</phase>
          </execution>
          <!-- camel-core needs to generate languages after compilation -->
          <execution>
            <id>languages</id>
            <goals>
              <goal>generate-languages-list</goal>
            </goals>
            <phase>process-classes</phase>
          </execution>
          <!-- camel-core needs to validate before packaging -->
          <execution>
            <id>validate</id>
            <goals>
              <goal>validate-components</goal>
            </goals>
            <phase>prepare-package</phase>
         </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <links>
            <link>http://download.oracle.com/javase/7/docs/api/</link>
            <link>http://download.oracle.com/javaee/7/api/</link>
          </links>
          <linksource>true</linksource>
          <maxmemory>256m</maxmemory>

          <groups>
            <group>
              <title>Camel API</title>
              <packages>org.apache.camel</packages>
            </group>
            <group>
              <title>Fluent API (DSL) for building EIP rules</title>
              <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
            </group>
            <group>
              <title>The bean and JAXB2 model for EIP rule definitions</title>
              <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
            </group>
            <group>
              <title>Strategy APIs for implementors extending Camel</title>
              <packages>org.apache.camel.spi</packages>
            </group>
            <group>
              <title>Language APIs and plugins for Expressions and Predicates</title>
              <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
            </group>
            <group>
              <title>Processors to implement the Enterprise Integration Patterns</title>
              <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
            </group>
            <group>
              <title>Camel Components</title>
              <packages>org.apache.camel.component.*</packages>
            </group>
            <group>
              <title>Support APIs for implementors</title>
              <packages>org.apache.camel.support.*</packages>
            </group>
            <group>
              <title>Main class for running Camel standalone</title>
              <packages>org.apache.camel.main.*</packages>
            </group>
            <group>
              <title>Camel Runtime</title>
              <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
            </group>
            <group>
              <title>Type conversion helper classes</title>
              <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
            </group>
            <group>
              <title>Utility classes</title>
              <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
            </group>
          </groups>
        </configuration>
      </plugin>
    </plugins>
  </reporting>


  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>package</id>
                <phase>package</phase>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <links>
                <link>http://download.oracle.com/javase/7/docs/api/</link>
                <link>http://download.oracle.com/javaee/7/api/</link>
              </links>
              <linksource>true</linksource>
              <maxmemory>256m</maxmemory>
              <groups>
                <group>
                  <title>Camel API</title>
                  <packages>org.apache.camel</packages>
                </group>
                <group>
                  <title>Fluent API (DSL) for building EIP rules</title>
                  <packages>org.apache.camel.builder:org.apache.camel.builder.*</packages>
                </group>
                <group>
                  <title>The bean and JAXB2 model for EIP rule definitions</title>
                  <packages>org.apache.camel.model:org.apache.camel.model.*</packages>
                </group>
                <group>
                  <title>Strategy APIs for implementors extending Camel</title>
                  <packages>org.apache.camel.spi</packages>
                </group>
                <group>
                  <title>Language APIs and plugins for Expressions and Predicates</title>
                  <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
                </group>
                <group>
                  <title>Processors to implement the Enterprise Integration Patterns</title>
                  <packages>org.apache.camel.processor:org.apache.camel.processor.*</packages>
                </group>
                <group>
                  <title>Camel Components</title>
                  <packages>org.apache.camel.component.*</packages>
                </group>
                <group>
                  <title>Camel Support having base classes to extend</title>
                  <packages>org.apache.camel.support</packages>
                </group>
                <group>
                  <title>Support APIs for implementors</title>
                  <packages>org.apache.camel.support.*</packages>
                </group>
                <group>
                  <title>Main class for running Camel standalone</title>
                  <packages>org.apache.camel.main.*</packages>
                </group>
                <group>
                  <title>Camel Runtime</title>
                  <packages>org.apache.camel.impl:org.apache.camel.impl.*</packages>
                </group>
                <group>
                  <title>Camel Starters</title>
                  <packages>org.apache.camel.main</packages>
                </group>
                <group>
                  <title>Type conversion helper classes</title>
                  <packages>org.apache.camel.converter:org.apache.camel.converter.*</packages>
                </group>
                <group>
                  <title>Utility classes</title>
                  <packages>org.apache.camel.util:org.apache.camel.util.*</packages>
                </group>
              </groups>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- enables the APT dependency so that it can be disabled in IDE builds -->
    <profile>
      <id>apt</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>

      <dependencies>
        <!-- enable the APT processor -->
        <dependency>
          <groupId>org.apache.camel</groupId>
          <artifactId>apt</artifactId>
          <version>${project.version}</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
    </profile>

    <!-- skip management tests on AIX as it hangs CI servers -->
    <profile>
      <id>aix</id>
      <activation>
        <os>
          <name>aix</name>
        </os>
      </activation>
      <properties>
        <platform.skip.tests>org/apache/camel/management/**/*.java</platform.skip.tests>
      </properties>
    </profile>
    <profile>
       <id>xalan</id>
       <dependencies>
        <!-- enable the Xalan processor -->
        <dependency>
          <groupId>xalan</groupId>
          <artifactId>xalan</artifactId>
          <version>${xalan-version}</version>
        </dependency>
      </dependencies>
    </profile>
    <profile>
       <id>xerces</id>
       <dependencies>
        <!-- enable the xerces processor -->
        <dependency>
          <groupId>xerces</groupId>
          <artifactId>xercesImpl</artifactId>
          <version>${xerces-version}</version>
        </dependency>
      </dependencies>
    </profile>
    <profile>
       <id>woodstox</id>
       <activation>
         <activeByDefault>true</activeByDefault>
       </activation>
       <dependencies>
          <!-- xmltokenizer using woodstox -->
          <dependency>
            <groupId>org.codehaus.woodstox</groupId>
            <artifactId>woodstox-core-asl</artifactId>
            <version>${woodstox-version}</version>
            <scope>test</scope>
          </dependency>
        </dependencies>
    </profile>
  </profiles>

</project>
