/*
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2005 satoshi akabane(akabane@logical-paradox.org)
 * $Id: CloseSessionCommand.java,v 1.1 2005/09/07 13:38:06 rampil Exp $
 */
package org.logical_paradox.vsan.dac.command.handler;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.logical_paradox.common.session.Session;
import org.logical_paradox.vsan.dac.command.exception.CommandExecutionException;
import org.logical_paradox.vsan.dac.command.exception.SessionTerminationException;
import org.logical_paradox.vsan.node.DatabaseAccessException;

/**
 * セッションクローズコマンド
 * DACとの接続を閉じる際、必ずこのコマンドをDACに対して送信する必要がある。<br>
 * DACは一定時間経過時に、セッションタイムアウトする機能があるが、これをあてにしないこと。
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class CloseSessionCommand implements DacCommand {
	/** ロガー */
	private static final Log log = LogFactory.getLog(CloseSessionCommand.class);

	/**
	 * コマンドを実行する
	 * @param session 実行するセッション
	 * @return 更新されたセッション
	 * @throws CommandExecutionException コマンド実行中に発生した例外
	 * @throws SessionTerminationException 接続終了時に発生する例外
	 */
	public Session execute(Session session) throws CommandExecutionException, SessionTerminationException, DatabaseAccessException {
		log.info("セッションをクローズします");
		// 問答無用でセッションを閉じる
		throw new SessionTerminationException();
	}
}
