<?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.10.0</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>
