<?xml version="1.0" encoding="UTF-8"?>
	<!--
		Copyright 2008 Federal Chancellery Austria and Graz University of
		Technology Licensed 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:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

	<bean id="STALFactory" class="at.gv.egiz.stal.service.impl.RequestBrokerSTALFactory"
		scope="singleton" />

	<bean id="accessController"
		class="at.gv.egiz.bku.online.accesscontroller.SpringSecurityManager"
		scope="singleton" init-method="init">
		<property name="config" ref="configurator" />
	</bean>

	<bean id="commandInvoker" class="at.gv.egiz.bku.binding.SLCommandInvokerImpl">
		<property name="securityManager" ref="accessController" />
	</bean>

	<bean id="slCommandFactory" class="at.gv.egiz.bku.slcommands.SLCommandFactory"
		factory-method="getInstance">
		<property name="commandImpl">
			<map>
				<entry
					key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:NullOperationRequest"
					value="at.gv.egiz.bku.slcommands.impl.NullOperationCommandImpl" />
				<entry
					key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:InfoboxReadRequest"
					value="at.gv.egiz.bku.slcommands.impl.InfoboxReadCommandImpl" />
				<entry
					key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:InfoboxUpdateRequest"
					value="at.gv.egiz.bku.slcommands.impl.InfoboxUpdateCommandImpl" />
				<entry
					key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:CreateXMLSignatureRequest"
					value="at.gv.egiz.bku.slcommands.impl.CreateXMLSignatureCommandImpl" />
				<entry
					key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:GetStatusRequest"
					value="at.gv.egiz.bku.slcommands.impl.GetStatusCommandImpl" />
			</map>
		</property>
	</bean>

  <bean id="infoboxFactory" class="at.gv.egiz.bku.slcommands.impl.InfoboxFactory"
    factory-method="getInstance">
    <property name="infoboxImpl">
      <map>
        <entry
          key="Certificates"
          value="at.gv.egiz.bku.slcommands.impl.CertificatesInfoboxImpl" />
        <entry
          key="IdentityLink"
          value="at.gv.egiz.bku.slcommands.impl.IdentityLinkInfoboxImpl" />
        <entry
          key="CardChannel"
          value="at.gv.egiz.bku.slcommands.impl.CardChannelInfoboxImpl" />
        <entry
          key="SV-Personendaten"
          value="at.gv.egiz.bku.slcommands.impl.SVPersonendatenInfoboxImpl" />
      </map>
    </property>
  </bean>

	<bean id="bindingProcessorManager" class="at.gv.egiz.bku.binding.BindingProcessorManagerImpl"
		scope="singleton">
		<constructor-arg ref="STALFactory"></constructor-arg>
		<constructor-arg ref="commandInvoker"></constructor-arg>
    <constructor-arg ref="configuration"></constructor-arg>
	</bean>

  <!-- TODO DataURL bean with configuration injected -->

	<bean
		class="org.springframework.web.context.support.ServletContextAttributeExporter">
		<property name="attributes">
			<map>
				<entry key="bindingProcessorManager">
					<ref bean="bindingProcessorManager" />
				</entry>
			</map>
		</property>
	</bean>

	<!-- Configure Configuration -->
	<bean id="certValidator" class="at.gv.egiz.bku.conf.CertValidatorImpl"></bean>


	<bean id="configurator" class="at.gv.egiz.bku.online.conf.SpringConfigurator"
		init-method="configure" scope="singleton">
		<property name="resource"
			value="classpath:at/gv/egiz/bku/online/conf/defaultConf.properties" />
		<property name="certValidator" ref="certValidator"></property>
	</bean>

	<!-- Shutdown Event handler -->
	<bean id="shutdown" class="at.gv.egiz.bku.online.webapp.ShutdownHandler">
		<property name="bindingProcessorManager" ref="bindingProcessorManager"></property>
	</bean>

  <!-- Begin MOCCA Configuration [REFACTORED]
   |   Configuration beans (no conf properties file) should be injected directly 
   |   to module configurators (at.gv.egiz.bku.X.conf.Configuration).
   |   Currently, only configuration items are considered.
   |-->
  <import resource="mocca-conf.xml"/>

</beans>