<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

  <bean id="loggerManager" class="org.codehaus.plexus.logging.slf4j.Slf4jLoggerManager"
        init-method="initialize"/>

  <bean id="propertyConfigurer"
        class="org.codehaus.plexus.spring.PlexusServletContextPropertyPlaceholderConfigurer">
    <property name="locations">
      <list>
        <value>classpath:plexus.properties</value>
      </list>
    </property>
    <!-- ignore if plexus.properties not found -->
    <property name="ignoreResourceNotFound">
      <value>true</value>
    </property>
    <!-- ignore if a interpolated key not exists -->
    <property name="ignoreUnresolvablePlaceholders">
      <value>true</value>
    </property>
  </bean>

  <!-- to run builds in a chroot jail environment
       note this is not secure yet, see http://jira.codehaus.org/browse/CONTINUUM-1731
  <bean name="chrootJailDirectory" class="java.io.File">
    <constructor-arg value="/home/jail"/>
  </bean>
  <bean id="workingDirectoryService" class="org.apache.maven.continuum.utils.ChrootJailWorkingDirectoryService" autowire="byName"/>
  -->

  <bean id="mailSession" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/mail/Session">
    </property>
  </bean>

  <bean name="mailSender#continuum" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="session" ref="mailSession"/>
  </bean>

  <bean name="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="session" ref="mailSession"/>
  </bean>

  <bean id="masterBuildAgentTransportServer"
        class="org.apache.continuum.distributed.transport.master.MasterBuildAgentTransportServer">
    <constructor-arg ref="distributedBuildService"/>
  </bean>

  <bean name="xmlrpcServicesList" class="java.util.ArrayList">
    <constructor-arg>
      <list>
        <ref bean="masterBuildAgentTransportServer"/>
      </list>
    </constructor-arg>
  </bean>

  <!-- Redback Web Services -->
  <bean name="redbackRoleService" lazy-init="true" scope="singleton"
        class="org.codehaus.redback.xmlrpc.service.RoleServiceImpl">
    <constructor-arg ref="rBACManager#cached"/>
    <constructor-arg ref="roleManager"/>
  </bean>

  <bean name="redbackOperationService" lazy-init="true" scope="singleton"
        class="org.codehaus.redback.xmlrpc.service.OperationServiceImpl">
    <constructor-arg ref="rBACManager#cached"/>
  </bean>

  <bean name="redbackPermissionService" lazy-init="true" scope="singleton"
        class="org.codehaus.redback.xmlrpc.service.PermissionServiceImpl">
    <constructor-arg ref="rBACManager#cached"/>
  </bean>

  <bean name="redbackResourceService" lazy-init="true" scope="singleton"
        class="org.codehaus.redback.xmlrpc.service.ResourceServiceImpl">
    <constructor-arg ref="rBACManager#cached"/>
  </bean>

  <bean name="redbackUserService" lazy-init="true" scope="singleton"
        class="org.codehaus.redback.xmlrpc.service.UserServiceImpl">
    <constructor-arg ref="userManager#cached"/>
  </bean>

  <bean name="redbackXmlrpcServicesList" class="java.util.ArrayList">
    <constructor-arg>
      <list>
        <ref bean="redbackOperationService"/>
        <ref bean="redbackPermissionService"/>
        <ref bean="redbackResourceService"/>
        <ref bean="redbackRoleService"/>
        <ref bean="redbackUserService"/>
      </list>
    </constructor-arg>
  </bean>

  <bean name="redbackXmlRpcAuthenticator" class="org.codehaus.redback.xmlrpc.security.XmlRpcAuthenticator">
    <constructor-arg ref="securitySystem"/>
  </bean>

  <!-- maintenance job triggers -->
  <bean id="distributedBuildStatusTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="distributedBuildStatusUpdateJob"/>
    <property name="cronExpression" value="0 */5 * * * ?"/>
  </bean>
  <bean id="orphanedBuildTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="orphanedBuildJob"/>
    <property name="cronExpression" value="0 0 * * * ?"/>
  </bean>


  <!-- maintenance scheduler -->
  <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <list>
        <ref bean="distributedBuildStatusTrigger"/>
        <ref bean="orphanedBuildTrigger"/>
      </list>
    </property>
    <property name="schedulerName" value="maintenance"/>
    <property name="startupDelay" value="30"/>
    <property name="waitForJobsToCompleteOnShutdown" value="true"/>
    <property name="quartzProperties">
      <props>
        <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
        <prop key="org.quartz.threadPool.threadCount">1</prop>
        <prop key="org.quartz.threadPool.threadPriority">3</prop>
      </props>
    </property>
  </bean>

</beans>
