<?xml version="1.0" encoding="UTF-8"?>
<!--

    The contents of this file are subject to the license and copyright
    detailed in the LICENSE and NOTICE files at the root of the source
    tree and available online at

    http://www.dspace.org/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="patchConfigurationService" class="org.dspace.app.rest.submit.PatchConfigurationService">
        <property name="map">
            <map>
                <entry key="move">
                    <map>
                        <!-- WARNING do not change "key" it match with Java code (TODO dynamic discover from PATCH operation); -->
                        <entry key="itemmetadata">
                            <bean class="org.dspace.app.rest.submit.factory.impl.ItemMetadataValueMovePatchOperation"/>
                        </entry>
                        <entry key="bitstreammetadata">
                            <bean class="org.dspace.app.rest.submit.factory.impl.BitstreamMetadataValueMovePatchOperation">
                                <property name="bitstreamMetadataValuePathUtils" ref="org.dspace.app.rest.utils.BitstreamMetadataValuePathUtils" />
                            </bean>
                        </entry>
                        <entry key="bitstreammove">
                            <bean class="org.dspace.app.rest.submit.factory.impl.BitstreamMovePatchOperation"/>
                        </entry>
                    </map>
                </entry>
                <entry key="add">
                    <map>
                        <!-- WARNING do not change "key" it match with Java code (TODO dynamic discover from PATCH operation); -->
                        <entry key="itemmetadata">
                            <bean class="org.dspace.app.rest.submit.factory.impl.ItemMetadataValueAddPatchOperation"/>
                        </entry>
                        <entry key="bitstreammetadata">
                            <bean class="org.dspace.app.rest.submit.factory.impl.BitstreamMetadataValueAddPatchOperation">
                                <property name="bitstreamMetadataValuePathUtils" ref="org.dspace.app.rest.utils.BitstreamMetadataValuePathUtils" />
                            </bean>
                        </entry>
                        <entry key="granted">
                            <bean class="org.dspace.app.rest.submit.factory.impl.LicenseAddPatchOperation"/>
                        </entry>
                        <entry key="upload.accessConditions">
                            <bean class="org.dspace.app.rest.submit.factory.impl.BitstreamResourcePolicyAddPatchOperation"/>
                        </entry>
                        <entry key="cclicense/uri">
                            <bean class="org.dspace.app.rest.submit.factory.impl.CCLicenseAddPatchOperation"/>
                        </entry>
                        <entry key="accessConditions">
                            <bean class="org.dspace.app.rest.submit.factory.impl.AccessConditionAddPatchOperation"/>
                        </entry>
                        <entry key="coarnotify">
                            <bean class="org.dspace.app.rest.submit.factory.impl.NotifyServiceAddPatchOperation"/>
                        </entry>
                        <entry key="primary">
                            <bean class="org.dspace.app.rest.submit.factory.impl.PrimaryBitstreamAddPatchOperation"/>
                        </entry>
                    </map>
                </entry>
                <entry key="remove">
                    <map>
                        <!-- WARNING do not change "key" it match with Java code (TODO dynamic discover from PATCH operation); -->
                        <entry key="itemmetadata">
                            <bean class="org.dspace.app.rest.submit.factory.impl.ItemMetadataValueRemovePatchOperation" />
                        </entry>
                        <entry key="bitstreammetadata">
                            <bean class="org.dspace.app.rest.submit.factory.impl.BitstreamMetadataValueRemovePatchOperation">
                                <property name="bitstreamMetadataValuePathUtils" ref="org.dspace.app.rest.utils.BitstreamMetadataValuePathUtils" />
                            </bean>
                        </entry>
                        <entry key="granted">
                            <bean class="org.dspace.app.rest.submit.factory.impl.LicenseRemovePatchOperation"/>
                        </entry>
                        <entry key="bitstreamremove">
                            <bean class="org.dspace.app.rest.submit.factory.impl.BitstreamRemovePatchOperation" />
                        </entry>
                        <entry key="upload.accessConditions">
                            <bean class="org.dspace.app.rest.submit.factory.impl.BitstreamResourcePolicyRemovePatchOperation"/>
                        </entry>
                        <entry key="cclicense/uri">
                            <bean class="org.dspace.app.rest.submit.factory.impl.CCLicenseRemovePatchOperation"/>
                        </entry>
                        <entry key="accessConditions">
                            <bean class="org.dspace.app.rest.submit.factory.impl.AccessConditionRemovePatchOperation"/>
                        </entry>
                        <entry key="coarnotify">
                            <bean class="org.dspace.app.rest.submit.factory.impl.NotifyServiceRemovePatchOperation"/>
                        </entry>
                        <entry key="primary">
                            <bean class="org.dspace.app.rest.submit.factory.impl.PrimaryBitstreamRemovePatchOperation"/>
                        </entry>
                    </map>
                </entry>
                <entry key="replace">
                    <map>
                        <!-- WARNING do not change "key" it match with Java code (TODO dynamic discover from PATCH operation); -->
                        <entry key="itemmetadata">
                            <bean class="org.dspace.app.rest.submit.factory.impl.ItemMetadataValueReplacePatchOperation"/>
                        </entry>
                        <entry key="bitstreammetadata">
                            <bean class="org.dspace.app.rest.submit.factory.impl.BitstreamMetadataValueReplacePatchOperation">
                                <property name="bitstreamMetadataValuePathUtils" ref="org.dspace.app.rest.utils.BitstreamMetadataValuePathUtils" />
                            </bean>
                        </entry>
                        <entry key="granted">
                            <bean class="org.dspace.app.rest.submit.factory.impl.LicenseReplacePatchOperation"/>
                        </entry>
                        <entry key="upload.accessConditions">
                            <bean class="org.dspace.app.rest.submit.factory.impl.BitstreamResourcePolicyReplacePatchOperation"/>
                        </entry>
                        <entry key="collection">
                            <bean class="org.dspace.app.rest.submit.factory.impl.CollectionReplacePatchOperation"/>
                        </entry>
                        <entry key="discoverable">
                            <bean class="org.dspace.app.rest.submit.factory.impl.AccessConditionDiscoverableReplacePatchOperation"/>
                        </entry>
                        <entry key="accessConditions">
                            <bean class="org.dspace.app.rest.submit.factory.impl.AccessConditionReplacePatchOperation"/>
                        </entry>
                        <entry key="coarnotify">
                            <bean class="org.dspace.app.rest.submit.factory.impl.NotifyServiceReplacePatchOperation"/>
                        </entry>
                        <entry key="primary">
                            <bean class="org.dspace.app.rest.submit.factory.impl.PrimaryBitstreamReplacePatchOperation"/>
                        </entry>
                    </map>
                </entry>
            </map>
        </property>
    </bean>

    <bean id="org.dspace.app.rest.utils.BitstreamMetadataValuePathUtils" class="org.dspace.app.rest.utils.BitstreamMetadataValuePathUtils"/>

    <bean id="coarNotifySubmissionService" class="org.dspace.app.rest.submit.factory.impl.NotifySubmissionService"/>

</beans>
