<?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"
       xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util.xsd
  http://servicemix.apache.org/schema/servicemix-gshell
  http://servicemix.apache.org/schema/servicemix-gshell/servicemix-gshell.xsd"
       default-autowire="no"
       default-dependency-check="none"
       default-init-method="init"
       default-destroy-method="destroy">

    <bean id="fileSystemAccess" class="org.apache.geronimo.gshell.vfs.FileSystemAccessImpl">
        <constructor-arg ref="fileSystemManager"/>
    </bean>

    <bean id="fileObjectNameCompleter" class="org.apache.geronimo.gshell.vfs.FileObjectNameCompleter">
        <constructor-arg ref="fileSystemAccess"/>
    </bean>

    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        <property name="customEditors">
            <map>
                <entry key="org.apache.commons.vfs.CacheStrategy">
                    <bean class="org.apache.geronimo.gshell.vfs.config.CacheStrategyEditor"/>
                </entry>
            </map>
        </property>
    </bean>

    <!--
    TODO: Set tempDir File arg in constructor to set the temporary location, may need 2 replicators?
    -->
    <bean id="defaultFileReplicator" class="org.apache.commons.vfs.impl.DefaultFileReplicator"/>

    <bean id="fileSystemManager" class="org.apache.geronimo.gshell.vfs.config.FileSystemManagerFactoryBean">
        <property name="filesCache">
            <bean class="org.apache.commons.vfs.cache.SoftRefFilesCache"/>
        </property>

        <property name="cacheStrategy" value="ON_RESOLVE"/>

        <property name="fileReplicator">
            <bean class="org.apache.commons.vfs.impl.PrivilegedFileReplicator">
                <constructor-arg ref="defaultFileReplicator"/>
            </bean>
        </property>

        <!--
        TODO: Try and root the temporary store under ${gshell.home}/tmp or something
        -->
        <property name="temporaryFileStore">
            <ref bean="defaultFileReplicator"/>
        </property>

        <property name="fileContentInfoFactory">
            <bean class="org.apache.commons.vfs.impl.FileContentInfoFilenameFactory"/>
        </property>

        <property name="defaultProvider">
            <bean class="org.apache.commons.vfs.provider.url.UrlFileProvider"/>
        </property>
    </bean>

    <bean class="org.apache.geronimo.gshell.vfs.config.FileProviderConfigurer">
        <property name="fileSystemManager" ref="fileSystemManager"/>
        <property name="scheme" value="tmp"/>
        <property name="provider">
            <bean class="org.apache.commons.vfs.provider.temp.TemporaryFileProvider"/>
        </property>
    </bean>

    <bean class="org.apache.geronimo.gshell.vfs.config.FileProviderConfigurer">
        <property name="fileSystemManager" ref="fileSystemManager"/>
        <property name="scheme" value="ram"/>
        <property name="provider">
            <bean class="org.apache.commons.vfs.provider.ram.RamFileProvider"/>
        </property>
    </bean>

    <bean class="org.apache.geronimo.gshell.vfs.config.FileProviderConfigurer">
        <property name="fileSystemManager" ref="fileSystemManager"/>
        <property name="scheme" value="file"/>
        <property name="provider">
            <bean class="org.apache.commons.vfs.provider.local.DefaultLocalFileProvider"/>
        </property>
    </bean>

    <bean class="org.apache.geronimo.gshell.vfs.config.FileProviderConfigurer">
        <property name="fileSystemManager" ref="fileSystemManager"/>
        <property name="scheme" value="mvn"/>
        <property name="provider">
            <bean class="org.apache.servicemix.kernel.gshell.core.vfs.mvn.MvnFileProvider"/>
        </property>
    </bean>

    <bean id="metaDataRegistry" class="org.apache.geronimo.gshell.vfs.provider.meta.data.MetaDataRegistryImpl">
        <constructor-arg ref="eventManager" />
    </bean>

    <bean id="metaFileProviderConfigurer" class="org.apache.geronimo.gshell.vfs.config.FileProviderConfigurer">
        <property name="fileSystemManager" ref="fileSystemManager"/>
        <property name="scheme" value="meta"/>
        <property name="provider">
            <bean class="org.apache.geronimo.gshell.vfs.provider.meta.MetaFileProvider">
                <constructor-arg ref="metaDataRegistry"/>
            </bean>
        </property>
    </bean>

</beans>