<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="getPersonTypesAPIController" class="com.armedia.acm.plugins.person.web.api.GetPersonTypesAPIController">
        <property name="personConfig" ref="personConfig"/>
    </bean>

    <bean id="savePersonAPIController" class="com.armedia.acm.plugins.person.web.api.SavePersonAPIController">
        <property name="personTransaction" ref="savePersonTransaction"/>
        <property name="eventPublisher" ref="personEventPublisher"/>
    </bean>

    <bean id="findPersonAPIController" class="com.armedia.acm.plugins.person.web.api.FindPersonAPIController">
        <property name="executeSolrQuery" ref="executeSolrQuery"/>
    </bean>

    <bean id="listPersonAPIController" class="com.armedia.acm.plugins.person.web.api.ListPersonAPIController">
        <property name="personAssociationDao" ref="acmPersonAssociationDao"/>
    </bean>

    <bean id="deletePersonByPersonId" class="com.armedia.acm.plugins.person.web.api.DeletePersonByPersonIdAPIController">
        <property name="personDao" ref="acmPersonDao"/>
        <property name="personAssociationDao" ref="acmPersonAssociationDao"/>
    </bean>

    <bean id="deletePersonAssociationByPersonId" class="com.armedia.acm.plugins.person.web.api.DeletePersonAssocByIdAPIController">
        <property name="personAssociationDao" ref="acmPersonAssociationDao"/>
        <property name="personAssociationEventPublisher" ref="personAssociationEventPublisher"/>
    </bean>
    <bean id="deleteOrganizationAssociationAPIController"
        class="com.armedia.acm.plugins.person.web.api.DeleteOrganizationAssociationAPIController">
        <property name="organizationAssociationDao" ref="acmOrganizationAssociationDao"/>
        <property name="organizationAssociationEventPublisher" ref="organizationAssociationEventPublisher"/>
    </bean>

    <bean id="personAssociationAPIController" class="com.armedia.acm.plugins.person.web.api.PersonAssociationAPIController">
        <property name="personAssociationService" ref="personAssociationService"/>
        <property name="executeSolrQuery" ref="executeSolrQuery"/>
    </bean>

    <bean id="organizationAssociationAPIController" class="com.armedia.acm.plugins.person.web.api.OrganizationAssociationAPIController">
        <property name="organizationAssociationService" ref="organizationAssociationService"/>
    </bean>

    <bean id="organizationAPIController" class="com.armedia.acm.plugins.person.web.api.OrganizationAPIController">
        <property name="organizationService" ref="organizationService"/>
        <property name="organizationEventPublisher" ref="organizationEventPublisher"/>
        <property name="facetedSearchPath" value="forward:/api/v2/plugin/search/facetedSearch?filters=%s"/>
        <property name="objectConverter" ref="objectConverter"/>
        <property name="executeSolrQuery" ref="executeSolrQuery"/>
    </bean>

    <bean id="peopleAPIController" class="com.armedia.acm.plugins.person.web.api.PeopleAPIController">
        <property name="personService" ref="personService"/>
        <property name="executeSolrQuery" ref="executeSolrQuery"/>
    </bean>

    <bean id="listTasksAPIController" class="com.armedia.acm.plugins.person.web.api.ListTasksAPIController">
        <property name="taskDao" ref="acmTaskDao"/>
        <property name="taskEventPublisher" ref="taskEventPublisher"/>
        <property name="personAssociationDao" ref="acmPersonAssociationDao"/>
    </bean>
</beans>