<?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.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:hz="http://www.hazelcast.com/schema/config" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

	<context:component-scan base-package="org.apache.usergrid.persistence" />
	<context:annotation-config />

    <aop:config proxy-target-class="true"/>



	<bean id="propertyPlaceholderConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="properties" ref="properties" />
        <property name="systemPropertiesModeName">
			<value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value>
		</property>
	</bean>

	<!-- The Time Resolution used for the cluster -->
	<bean id="microsecondsTimeResolution" class="me.prettyprint.cassandra.service.clock.MicrosecondsClockResolution" />
    <bean id="traceTagManager" class="org.apache.usergrid.persistence.cassandra.util.TraceTagManager"/>
    <bean id="traceTagReporter" class="org.apache.usergrid.persistence.cassandra.util.Slf4jTraceTagReporter"/>

    <bean id="taggedOpTimer" class="org.apache.usergrid.persistence.cassandra.util.TaggedOpTimer">
      <constructor-arg ref="traceTagManager"/>
    </bean>

	<bean id="cassandraHostConfigurator" class="me.prettyprint.cassandra.service.CassandraHostConfigurator">
        <constructor-arg value="${cassandra.url}"/>
        <!-- set the pool size if it's available.  If not go with 50 -->
        <property name="maxActive" value="${cassandra.connections:15}"/>
        <property name="cassandraThriftSocketTimeout" value="${cassandra.thriftSocketTimeout:5000}" />
        <property name="useSocketKeepalive" value="${cassandra.useSocketKeepalive:false}" />
        <!-- Fails on Java 8: <property name="clockResolution" ref="microsecondsTimeResolution" />-->
        <property name="opTimer" ref="taggedOpTimer"/>
        <property name="loadBalancingPolicy" ref="loadBalancingPolicy"/>
	</bean>

	<bean id="cassandraCluster" class="me.prettyprint.cassandra.service.ThriftCluster">
		<constructor-arg value="${cassandra.cluster}" />
		<constructor-arg ref="cassandraHostConfigurator" />
	</bean>

    <bean id="loadBalancingPolicy" class="me.prettyprint.cassandra.connection.DynamicLoadBalancingPolicy"/>

    <bean id="injector"
   		class="org.apache.usergrid.corepersistence.GuiceFactory">
    </bean>


	<bean id="cassandraService"
		class="org.apache.usergrid.persistence.cassandra.CassandraService" init-method="init" destroy-method="destroy">
		<constructor-arg ref="properties" />
		<constructor-arg ref="cassandraCluster" />
		<constructor-arg ref="cassandraHostConfigurator" />
        <constructor-arg ref="injector"/>
		<property name="consistencyLevelPolicy" ref="consistencyLevelPolicy"/>
	</bean>

	<bean name="consistencyLevelPolicy" class="me.prettyprint.cassandra.model.ConfigurableConsistencyLevel">
        <property name="defaultReadConsistencyLevel" value="${cassandra.readcl}"/>
        <property name="defaultWriteConsistencyLevel" value="${cassandra.writecl}"/>
    </bean>

    <bean id="entityManagerFactory"
		class="org.apache.usergrid.corepersistence.CpEntityManagerFactory" scope="singleton">
		<constructor-arg ref="cassandraService" />
        <constructor-arg ref="counterUtils"/>
        <constructor-arg ref="injector"/>
    </bean>

    <bean id="queueManagerFactory"
          class="org.apache.usergrid.mq.cassandra.QueueManagerFactoryImpl">
        <constructor-arg ref="cassandraService" />
        <constructor-arg ref="counterUtils"/>
        <constructor-arg ref="injector"/>
        <constructor-arg value="${usergrid.queue.lock.timeout}"/>
    </bean>

    <bean id="simpleBatcher" class="org.apache.usergrid.count.SimpleBatcher">
        <property name="batchSubmitter" ref="batchSubmitter"/>
        <property name="batchInterval" value="${usergrid.counter.batch.interval}"/>
        <property name="batchSize" value="${usergrid.counter.batch.size}"/>
    </bean>

    <bean id="batchSubmitter" class="org.apache.usergrid.count.CassandraSubmitter">
        <constructor-arg ref="cassandraCounterStore"/>
    </bean>

    <bean id="cassandraCounterStore" class="org.apache.usergrid.count.CassandraCounterStore">
        <constructor-arg>
            <bean id="keyspace"
                  factory-bean="cassandraService"
                  factory-method="getUsergridApplicationKeyspace"/>
        </constructor-arg>
    </bean>

    <bean id="counterUtils" class="org.apache.usergrid.persistence.cassandra.CounterUtils">
        <property name="batcher" ref="simpleBatcher"/>
        <property name="counterType" value="n"/>
    </bean>

    <bean id="usergridSystemMonitor" class="org.apache.usergrid.system.UsergridSystemMonitor">
        <constructor-arg value="${usergrid.version.build}"/>
        <constructor-arg ref="cassandraCluster"/>
        <constructor-arg ref="properties"/>
    </bean>

    <bean id="mailUtils" class="org.apache.usergrid.utils.MailUtils" />

    <!-- ============================================================== -->
    <!-- Scheduler Settings from removed Scheduler Module's app context -->
    <!-- ============================================================== -->

    <bean id="jobSchedulerBackgroundService" class="org.apache.usergrid.batch.service.JobSchedulerService">
      <property name="jobFactory" ref="jobFactory" />
      <property name="jobAccessor" ref="schedulerService" />
      <property name="workerSize" value="${usergrid.scheduler.job.workers}" />
      <property name="interval" value="${usergrid.scheduler.job.interval}" />
      <property name="maxFailCount" value="${usergrid.scheduler.job.maxfail}" />
      <property name="injector" ref="injector" />
    </bean>

    <bean id="schedulerService" class="org.apache.usergrid.batch.service.SchedulerServiceImpl">
      <property name="jobTimeout" value="${usergrid.scheduler.job.timeout}" />
      <property name="jobQueueName" value="${usergrid.scheduler.job.queueName}" />
    </bean>

    <bean id="jobFactory" class="org.apache.usergrid.batch.UsergridJobFactory" />


    <context:component-scan base-package="org.apache.usergrid.batch.job" />
    <context:annotation-config />

</beans>
