<?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>examples</artifactId>
	    <version>2.9.8</version>
	</parent>
	
	<artifactId>camel-example-loadbalancing</artifactId>
	<packaging>jar</packaging>
	<name>Camel :: Example :: Load Balancing</name>
	<description>An example that demonstrate load balancing messaging with mina servers (TCP/IP)</description>

	<dependencies>

	    <dependency>
	      <groupId>org.apache.camel</groupId>
	      <artifactId>camel-core</artifactId>
	    </dependency>
	    <dependency>
	      <groupId>org.apache.camel</groupId>
	      <artifactId>camel-spring</artifactId>
	    </dependency>
	    <dependency>
	      <groupId>org.apache.camel</groupId>
	      <artifactId>camel-mina</artifactId>
	    </dependency>

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

	</dependencies>
  
  	<profiles>
          <profile>
            <id>loadbalancer</id>
            <properties>
                <!-- we use Camel spring Main class as the server got all what it needs to start in the camel-server.xml file -->
                <target.main.class>org.apache.camel.spring.Main</target.main.class>
                <target.cmd.args>-ac META-INF/spring/camel-context-loadbalancer.xml</target.cmd.args>
            </properties>
        </profile>
        <profile>
            <id>mina1</id>
            <properties>
                <!-- we use Camel spring Main class as the server got all what it needs to start in the camel-context-mina1 file -->
                <target.main.class>org.apache.camel.spring.Main</target.main.class>
                <target.cmd.args>-ac META-INF/spring/camel-context-mina1.xml</target.cmd.args>
            </properties>
        </profile>
        <profile>
            <id>mina2</id>
            <properties>
                <!-- we use Camel spring Main class as the server got all what it needs to start in the camel-context-mina2 file -->
                <target.main.class>org.apache.camel.spring.Main</target.main.class>
                <target.cmd.args>-ac META-INF/spring/camel-context-mina2.xml</target.cmd.args>
            </properties>
        </profile>
   </profiles>

  <build>
  	<plugins>

	    <!-- Allows the example to be run via 'mvn compile exec:java' -->
	    <plugin>
	        <groupId>org.codehaus.mojo</groupId>
	        <artifactId>exec-maven-plugin</artifactId>
	        <configuration>
	            <mainClass>${target.main.class}</mainClass>
	            <includePluginDependencies>false</includePluginDependencies>
	            <commandlineArgs>${target.cmd.args}</commandlineArgs>
	        </configuration>
	    </plugin>
    </plugins>
  </build>

</project>
