package org.fireproject.axissample;

import org.apache.axis.MessageContext;

/**
 * 値を足すハンドラ
 *
 */
public class AddHandler extends SampleHandler {

    /** 足す値オプション取得用キー. */
    private static final String ADD_VALUE_OPTION_KEY = "addValue";

    /**
     * メイン処理
     *
     * @param msgContext 実行コンテキスト
     */
    public void invoke(MessageContext msgContext) {
	super.invoke(msgContext);
	// オプションで指定された足す値を取得
	String addValue = (String)getOption(ADD_VALUE_OPTION_KEY);
	int intAddValue = Integer.parseInt(addValue);

	// 先行ハンドラによる処理結果取得
	CalculateParameter cp = (CalculateParameter)msgContext.getProperty(CalculateService.CALCULATE_PARAMETER_KEY);

	// 先行ハンドラによる処理結果に自分の処理結果を追加
	CalculateParameter result = new CalculateParameter();
	result.setType(CalculateParameter.ADD_TYPE);
	result.setParameter(intAddValue);
	if (cp != null) {
	    result.setAhead(cp);
	} else {
	    result.setAhead(new CalculateParameter());
	}
	// 自分の処理結果を格納
	msgContext.setProperty(CalculateService.CALCULATE_PARAMETER_KEY, result);
    }
}