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

	<!-- プレゼンテーション層のBean定義 -->
	<!--                                                                -->
	<!-- コントローラや相関入力チェッククラスのBean定義などを記述する。 -->
	<!-- プレゼンテーション層共通のBean定義はfunctionsample-servlet.xmlに記述する。 -->

	<!-- ======= コントローラ定義 ======= -->
	<!-- UC101 リクエスト・コントローラマッピング 定義 -->
	<bean name="/controllermappingController"
		class="jp.terasoluna.rich.functionsample.controllermapping.controller.ControllerMappingController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="controllerMappingService"
			ref="controllerMappingService" />
	</bean>

	<!-- UC102 リクエストデータ解析 クエリ 定義 -->
	<bean name="/queryRequestAnalysisController"
		class="jp.terasoluna.rich.functionsample.requestanalysis.controller.RequestAnalysisController"
		parent="pojoQueryRequestCastorViewController" scope="prototype">
		<property name="requestAnalysisService"
			ref="requestAnalysisService" />
		<property name="propertyEditorRegistrar"
			ref="datePropertyEditorRegistrar" />
	</bean>

	<!-- UC102 リクエストデータ解析 xml 定義-->
	<bean name="/xmlRequestAnalysisController"
		class="jp.terasoluna.rich.functionsample.requestanalysis.controller.RequestAnalysisController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="requestAnalysisService"
			ref="requestAnalysisService" />
		<property name="propertyEditorRegistrar"
			ref="datePropertyEditorRegistrar" />
	</bean>

	<!-- UC103 レスポンスデータ生成 castor 定義 -->
	<bean name="/castorResponseController"
		class="jp.terasoluna.rich.functionsample.response.controller.ResponseController"
		parent="pojoQueryRequestCastorViewController" scope="prototype">
		<property name="responseService" ref="responseService" />
	</bean>

	<!-- UC103 レスポンスデータ生成 velociy 定義 -->
	<bean name="/velocityResponseController"
		class="jp.terasoluna.rich.functionsample.response.controller.ResponseController"
		parent="pojoQueryRequestVelocityViewController" scope="prototype">
		<property name="responseService" ref="responseService" />
	</bean>

	<!-- UC103 レスポンスデータ生成 ファイルダウンロード 定義 -->
	<bean name="/fileResponseController"
		class="jp.terasoluna.rich.functionsample.response.controller.FileResponseController"
		parent="pojoXmlRequestDefaultFileDownloadViewController"
		scope="prototype">
		<property name="fileResponseService" ref="fileResponseService" />
	</bean>

	<!-- UC104 制御情報管理 定義-->
	<bean name="/infoController"
		class="jp.terasoluna.rich.functionsample.informationcontrol.controller.InformationControlController"
		parent="pojoQueryRequestCastorViewController" scope="prototype">
		<property name="infoService" ref="infoService" />
	</bean>

	<!-- UC105 サービスクラス実行 POJO(正常) 定義 -->
	<bean name="/servicePOJOController"
		class="jp.terasoluna.rich.functionsample.service.controller.ServiceController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="serviceService" ref="serviceService" />
	</bean>

	<!-- UC105 サービスクラス実行 POJO(不正) 定義 -->
	<bean name="/incorrectServicePOJOController"
		class="jp.terasoluna.rich.functionsample.service.controller.IncorrectServiceController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="incorrectServiceService"
			ref="incorrectServiceService" />
	</bean>

	<!-- UC105 サービスクラス実行 BLogic(正常) 定義 -->
	<bean name="/serviceBLogicController"
		parent="blogicXmlRequestCastorViewController" scope="prototype">
		<property name="blogic" ref="serviceBLogic" />
	</bean>

	<!-- UC105 サービスクラス実行 BLogic(不正) 定義 -->
	<bean name="/incorrectServiceBLogicController"
		parent="blogicXmlRequestCastorViewController" scope="prototype">
		<property name="blogic" ref="incorrectServiceBLogic" />
	</bean>

	<!-- UC106 例外処理 定義 -->
	<bean name="/exceptionHandlerController"
		class="jp.terasoluna.rich.functionsample.exceptionhandler.controller.ExceptionHandlerController"
		parent="pojoXmlRequestController" scope="prototype">
		<property name="viewName" value="exceptionHandlerView" />
		<property name="exceptionHandlerService"
			ref="exceptionHandlerService" />
	</bean>

	<!-- UC107 アクセスURI 定義 -->
	<bean name="/uriController"
		class="jp.terasoluna.rich.functionsample.uri.controller.URIController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="uriService" ref="uriService" />
	</bean>

	<!-- UC108 XML形式チェック 定義-->
	<bean name="/XMLFormCheckController"
		class="jp.terasoluna.rich.functionsample.formcheck.controller.XMLFormCheckController"
		parent="pojoXmlSchemaValidatorRequestCastorViewController"
		scope="prototype">
		<property name="xmlFormCheckService" ref="XMLFormCheckService" />
	</bean>

	<!-- UC108 クエリ形式チェック 定義 -->
	<bean name="/queryFormCheckController"
		class="jp.terasoluna.rich.functionsample.formcheck.controller.QueryFormCheckController"
		parent="pojoQueryRequestCastorViewController" scope="prototype">
		<property name="queryFormCheckService"
			ref="queryFormCheckService" />
	</bean>

	<!-- UC109 単項目の入力チェック 定義 -->
	<bean name="/singleInputCheckController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.SingleController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="singleService" ref="singleService" />
		<property name="validator" ref="beanValidator" />
	</bean>

	<!-- UC109 1属性・2種類以上の入力チェック 定義 -->
	<bean name="/multipleInputCheckController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.MultipleController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="multipleService" ref="multipleService" />
		<property name="validator" ref="beanValidator" />
	</bean>

	<!-- UC109 JavaBean1クラス・2パターンのの入力チェックの検証ロジック正義-->
	<bean id="validator1"
		class="org.springmodules.validation.commons.ConfigurableBeanValidator">
		<property name="validatorFactory" ref="validatorFactory" />
		<property name="formName" value="testBeanA" />
	</bean>

	<bean id="validator2"
		class="org.springmodules.validation.commons.ConfigurableBeanValidator">
		<property name="validatorFactory" ref="validatorFactory" />
		<property name="formName" value="testBeanB" />
	</bean>

	<!-- UC109 JavaBean1クラス・2パターンの入力チェック(1番) 定義 -->
	<bean name="/beanValidationAController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.BeanValidationController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="beanValidationService"
			ref="beanValidationService" />
		<property name="validator" ref="validator1" />
	</bean>

	<!-- UC109 JavaBean1クラス・2パターンの入力チェック(2番) 定義 -->
	<bean name="/beanValidationBController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.BeanValidationController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="beanValidationService"
			ref="beanValidationService" />
		<property name="validator" ref="validator2" />
	</bean>

	<!-- UC109 コーディングによる入力チェックの入力チェック 定義 -->
	<bean name="/codingInputCheckController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.CodingController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="codingService" ref="codingService" />
		<property name="validator" ref="codingValidator" />
	</bean>

	<!-- UC109 コーディングによる入力チェックの入力チェック未実施 定義 -->
	<bean name="/notcodingInputCheckController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.CodingController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="codingService" ref="codingService" />
	</bean>

	<!-- UC109 配列・コレクション型への入力チェック 定義 -->
	<bean name="/arrayInputCheckController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.ArrayController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="arrayService" ref="arrayService" />
		<property name="validator" ref="beanValidator" />
	</bean>

	<!-- UC109 コレクション型への入力チェック 定義 -->
	<bean name="/arrayListStringInputCheckController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.ArrayListStringController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="arrayListStringService"
			ref="arrayListStringService" />
		<property name="validator" ref="beanValidator" />
	</bean>

	<!-- UC109 Beanを格納するコレクション型への入力チェック 定義 -->
	<bean name="/arrayListBeanInputCheckController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.ArrayListBeanController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="arrayListBeanService"
			ref="arrayListBeanService" />
		<property name="validator" ref="beanValidator" />
	</bean>

	<!-- UC109 Bean型への入力チェック 定義 -->
	<bean name="/beanDataInputCheckController"
		class="jp.terasoluna.rich.functionsample.inputcheck.controller.BeanDataController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="beanDataService" ref="beanDataService" />
		<property name="validator" ref="beanValidator" />
	</bean>


	<!-- UC110 DBメッセージ管理 定義 -->
	<bean name="/dbMessageController"
		class="jp.terasoluna.rich.functionsample.dbmessage.controller.DBMessageController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="dbMessageService" ref="dbMessageService" />
	</bean>

	<!-- UC111 コントローラ拡張 xml-POJO-castor 定義 -->
	<bean name="/XMLPOJOCastorController"
		class="jp.terasoluna.rich.functionsample.controllerex.controller.ControllerExController"
		parent="pojoXmlRequestCastorViewController" scope="prototype">
		<property name="sumService" ref="sumService" />
	</bean>

	<!-- UC111 コントローラ拡張 xml-POJO-velocity 定義 -->
	<bean name="/XMLPOJOVelocityController"
		class="jp.terasoluna.rich.functionsample.controllerex.controller.ControllerExController"
		parent="pojoXmlRequestVelocityViewController" scope="prototype">
		<property name="sumService" ref="sumService" />
	</bean>

	<!-- UC111 コントローラ拡張 xml-POJO-file 定義 -->
	<bean name="/XMLPOJOFileController"
		class="jp.terasoluna.rich.functionsample.controllerex.controller.ControllerExFileController"
		parent="pojoXmlRequestController" scope="prototype">
		<property name="viewName" value="FileControllerEx" />
		<property name="fileDownloadService" ref="fileDownloadService" />
	</bean>

	<!-- UC111 コントローラ拡張 クエリ-POJO-castor 定義 -->
	<bean name="/queryPOJOCastorController"
		class="jp.terasoluna.rich.functionsample.controllerex.controller.ControllerExController"
		parent="pojoQueryRequestCastorViewController" scope="prototype">
		<property name="sumService" ref="sumService" />
	</bean>

	<!-- UC111 コントローラ拡張 クエリ-POJO-velocity 定義 -->
	<bean name="/queryPOJOVelocityController"
		class="jp.terasoluna.rich.functionsample.controllerex.controller.ControllerExController"
		parent="pojoQueryRequestVelocityViewController" scope="prototype">
		<property name="sumService" ref="sumService" />
	</bean>

	<!-- UC111 コントローラ拡張 クエリ-POJO-file 定義 -->
	<bean name="/queryPOJOFileController"
		class="jp.terasoluna.rich.functionsample.controllerex.controller.ControllerExFileController"
		parent="pojoQueryRequestController" scope="prototype">
		<property name="viewName" value="FileControllerEx" />
		<property name="fileDownloadService" ref="fileDownloadService" />
	</bean>

	<!-- UC111 コントローラ拡張 xml-BLogic-castor 定義 -->
	<bean name="/XMLBLogicCastorController"
		parent="blogicXmlRequestCastorViewController" scope="prototype">
		<property name="blogic" ref="sumBLogicService" />
	</bean>

	<!-- UC111 コントローラ拡張 xml-BLogic-velocity 定義 -->
	<bean name="/XMLBLogicVelocityController"
		parent="blogicXmlRequestVelocityViewController" scope="prototype">
		<property name="blogic" ref="sumBLogicService" />
	</bean>

	<!-- UC111 コントローラ拡張 xml-BLogic-file 定義 -->
	<bean name="/XMLBLogicFileController"
		parent="blogicXmlRequestController" scope="prototype">
		<property name="viewName" value="FileControllerEx" />
		<property name="blogic" ref="fileBLogicService" />
	</bean>

	<!-- UC111 コントローラ拡張 クエリ-BLogic-castor 定義 -->
	<bean name="/queryBLogicCastorController"
		parent="blogicQueryRequestCastorViewController" scope="prototype">
		<property name="blogic" ref="sumBLogicService" />
	</bean>

	<!-- UC111 コントローラ拡張 クエリ-BLogic-velocity 定義 -->
	<bean name="/queryBLogicVelocityController"
		parent="blogicQueryRequestVelocityViewController" scope="prototype">
		<property name="blogic" ref="sumBLogicService" />
	</bean>

	<!-- UC111 コントローラ拡張 クエリ-BLogic-file 定義 -->
	<bean name="/queryBLogicFileController"
		parent="blogicQueryRequestController" scope="prototype">
		<property name="viewName" value="FileControllerEx" />
		<property name="blogic" ref="fileBLogicService" />
	</bean>

	<!-- UC112 サービスクラス実行 BLogic(実装) 定義 -->
	<bean name="/succeededBLogicController"
		parent="blogicXmlRequestCastorViewController" scope="prototype">
		<property name="blogic" ref="succeededBLogic" />
	</bean>

	<!-- UC113 ファイルアップロードコントローラー 定義	-->
	<bean name="/fileUploadController"
		class="jp.terasoluna.rich.functionsample.upload.controller.FileUploadController"
		parent="pojoQueryRequestCastorViewController" scope="prototype">
		<property name="fileUploadService" ref="fileUploadService" />
	</bean>

</beans>