<?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:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <!-- Tell Spring where it can find all of the Command components. -->
    <context:component-scan base-package="org.apache.rya.shell"/>

    <!-- Define the shell state bean that will be shared across all of the commands. -->
    <bean id="sharedShellState" class="org.apache.rya.shell.SharedShellState" />

    <!-- We use a mock Password Prompt here to simulate a user entering a password. -->
    <bean id="passwordPrompt" class="org.mockito.Mockito" factory-method="mock">
        <constructor-arg value="org.apache.rya.shell.util.PasswordPrompt" />
    </bean>
    
    <!-- We use a mock Install Prompt here to simulate a user entering the installation configuration. -->
    <bean id="installPrompt" class="org.mockito.Mockito" factory-method="mock">
        <constructor-arg value="org.apache.rya.shell.util.InstallPrompt"/>
    </bean>

    <!-- We use a mock SPARQL Prompt here to simulate a user entering the installation configuration. -->
    <bean id="sparqlPrompt" class="org.mockito.Mockito" factory-method="mock">
        <constructor-arg value="org.apache.rya.shell.util.SparqlPrompt"/>
    </bean>
    
    <!-- We use a mock ConsolePrintert here to simulate console output to the user. -->
    <bean id="consolePrinter" class="org.mockito.Mockito" factory-method="mock">
        <constructor-arg value="org.apache.rya.shell.util.ConsolePrinter"/>
    </bean>
    
    <!-- We use a mock Uninstall Prompt here to simulate a user entering the installation configuration. -->
    <bean id="uninstallPrompt" class="org.mockito.Mockito" factory-method="mock">
        <constructor-arg value="org.apache.rya.shell.util.UninstallPrompt"/>
    </bean>

    <!-- Define each of the beans that hold onto commands used by the shell. -->
    <bean id="ryaConnectionCommands" class="org.apache.rya.shell.RyaConnectionCommands" />
    <bean id="ryaCommands" class="org.apache.rya.shell.RyaCommands" />
    <bean id="ryaAdminCommands" class="org.apache.rya.shell.RyaAdminCommands" />
    <bean id="ryaStreamsCommands" class="org.apache.rya.shell.RyaStreamsCommands" />
</beans>