/*
 * MockServiceCheckPrameters.java
 * Copyright (C) 2008 Cyber Beans Corporation. All rights reserved.
 */
package jp.co.cybec.cb3.mock.container.service;

import jp.co.cybec.cb3.container.service.CB3Service;
import jp.co.cybec.cb3.exception.ServiceException;
import jp.co.cybec.cb3.session.RuntimeParameters;
import jp.co.cybec.cb3.session.ServiceParameters;

/**
 * サービスのモック。<br>
 * {@link ServiceParameters}の「serviceParameter1」と
 * {@link RuntimeParameters}の「runtimeParameter1」に値が設定されているかチェックし、
 * 値が設定されていない場合は{@link ServiceException}をスローします。<br>
 * また、{@link ServiceParameters}の「exitCode」を実行結果として返却します。
 * @author Naoko Sugimoto
 */
public class MockServiceCheckPrameters extends CB3Service {

	/**
	 * サービスを実行するメソッドです。
	 * このモックでは、常にServiceExceptionをスローします。
	 * @param serviceParameters サービスパラメータ
	 * @param runtimeParameters 起動パラメータ
	 * @return 実行結果
	 * @throws ServiceException 業務処理で何らかの例外が発生した場合。
	 */
	@Override
	protected int doService(ServiceParameters serviceParameters, RuntimeParameters runtimeParameters)
			throws ServiceException {
		if (serviceParameters == null) {
			throw new ServiceException("ServiceParameters is null");
		}
		if (runtimeParameters == null) {
			throw new ServiceException("RuntimeParameters is null");
		}
		if (serviceParameters.get("serviceParameter1") == null) {
			throw new ServiceException("serviceParameter1 is null");
		}
		if (runtimeParameters.get("runtimeParameter1") == null) {
			throw new ServiceException("runtimeParameter1 is null");
		}
		Integer exitCode = (Integer) serviceParameters.get("exitCode");
		return exitCode;
	}

}
