<?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.
-->

<!-- $Rev$ $Date$ -->

<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.xsd"
       default-autowire="no"
       default-dependency-check="none">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="properties">
            <props>
                <!--
                FIXME: Use filtering to automatically keep this updated.
                -->
                <prop key="gshell.version">1.0-alpha-3-SNAPSHOT</prop>
            </props>
        </property>
    </bean>

    <bean class="org.apache.geronimo.gshell.artifact.maven.ArtifactManagerConfigurator" init-method="init">
        <constructor-arg ref="artifactManager"/>
        
        <property name="localRepository" value="${gshell.home}/var/repository"/>
        <property name="remoteRepositories">
            <map>
                <entry key="cache" value="file:${user.home}/.m2/repository"/>
            </map>
        </property>
    </bean>
    
    <bean class="org.apache.geronimo.gshell.application.model.ApplicationModel">
        <property name="groupId" value="org.apache.geronimo.gshell"/>
        <property name="artifactId" value="gshell"/>
        <property name="name" value="GShell"/>
        <property name="version" value="${gshell.version}"/>

        <property name="branding">
            <bean class="org.apache.geronimo.gshell.wisdom.branding.GShellBranding"/>
        </property>

        <property name="dependencies">
            <list>
                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.wisdom"/>
                    <property name="name" value="gshell-wisdom-core"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>
                
                <!--
                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.support"/>
                    <property name="name" value="gshell-vfs-truezip"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>
                -->
            </list>
        </property>

        <property name="plugins">
            <list>
                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
                    <property name="name" value="gshell-builtin"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>

                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
                    <property name="name" value="gshell-shell"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>

                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
                    <property name="name" value="gshell-file"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>

                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
                    <property name="name" value="gshell-text"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>

                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
                    <property name="name" value="gshell-network"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>

                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
                    <property name="name" value="gshell-admin"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>

                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
                    <property name="name" value="gshell-log4j"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>

                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
                    <property name="name" value="gshell-bsf"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>

                <bean class="org.apache.geronimo.gshell.artifact.Artifact">
                    <property name="group" value="org.apache.geronimo.gshell.commands"/>
                    <property name="name" value="gshell-ssh"/>
                    <property name="version" value="${gshell.version}"/>
                </bean>
            </list>
        </property>
    </bean>

</beans>