<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

    <context:component-scan base-package="com.wisemapping.rest"/>
    <context:annotation-config/>
    <mvc:annotation-driven/>

    <bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound">
            <list>
                <value>com.wisemapping.rest.model.RestMindmap</value>
                <value>com.wisemapping.rest.model.RestMindmapInfo</value>
                <value>com.wisemapping.rest.model.RestMindmapList</value>
                <value>com.wisemapping.rest.model.RestUser</value>
                <value>com.wisemapping.rest.model.RestErrors</value>
            </list>
        </property>
    </bean>

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="defaultContentType" value="application/json"/>
        <property name="favorPathExtension" value="true"/>
        <property name="mediaTypes">
            <map>
                <entry key="html" value="text/html"/>
                <entry key="xml" value="application/xml"/>
                <entry key="json" value="application/json"/>
                <entry key="freemind" value="application/freemind"/>
                <entry key="pdf" value="application/pdf"/>
                <entry key="png" value="image/png"/>
                <entry key="jpeg" value="image/jpg"/>
                <entry key="svg" value="image/svg+xml"/>
                <entry key="svg" value="application/svg+xml"/>
                <entry key="wise" value="application/wisemapping+xml"/>
            </map>
        </property>
        <property name="viewResolvers">
            <list>
                <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
                    <property name="prefix" value="/WEB-INF/jsp-rest/"/>
                    <property name="suffix" value=".jsp"/>
                </bean>
            </list>
        </property>
        <property name="defaultViews">
            <list>
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
                    <property name="extractValueFromSingleKeyModel" value="true"/>
                </bean>
                <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
                    <constructor-arg ref="jaxbMarshaller"/>
                </bean>
            </list>
        </property>
    </bean>

    <bean id="transformViewPdf" class="com.wisemapping.rest.view.TransformView">
        <constructor-arg value="application/pdf"/>
    </bean>

    <bean id="transformViewPng" class="com.wisemapping.rest.view.TransformView">
        <constructor-arg value="image/png"/>
    </bean>

    <bean id="transformViewJpeg" class="com.wisemapping.rest.view.TransformView">
        <constructor-arg value="image/jpeg"/>
    </bean>

    <bean id="transformViewFreemind" class="com.wisemapping.rest.view.TransformView">
        <constructor-arg value="application/freemind"/>
    </bean>

    <bean id="transformViewSvg" class="com.wisemapping.rest.view.TransformView">
        <constructor-arg value="image/svg+xml"/>
    </bean>

    <bean id="transformViewWise" class="com.wisemapping.rest.view.ImportTransformationView">
        <constructor-arg value="application/wisemapping+xml"/>
    </bean>


    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>messages</value>
            </list>
        </property>
    </bean>

</beans>