/*
 * @(#)SessionAttributeGenerator.java
 *
 * Copyright (C) 2006 Infocity Inc. All Rights Reserved.
 */
package info.dragonlady.sso.helper;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * セッションに格納された属性値から、アサーション属性用のマップを生成する。
 * 
 * @author Hiroshi.Ebata(INFOCITY)
 * @version $Revision: 1.0 $ $Date: 2006/11/22 14:07:02 $
 */
public class SessionAttributeGenerator implements AttributeGenerator {

	/**
	 * コンストラクタ。
	 */
	public SessionAttributeGenerator() {
	}

	/**
	 * セッション属性値をもとにアサーション属性マップを生成する。
	 * 
	 * @param request HTTP要求オブジェクト
	 * @return Map アサーション属性マップ
	 * @throws GenerationException
	 * @see info.dragonlady.sso.helper.AttributeGenerator#generateAttributesMap(javax.servlet.http.HttpServletRequest)
	 */
	public Map generateAttributesMap(HttpServletRequest request) throws GenerationException {
		try {
			HttpSession session = request.getSession();
			Iterator itr = SSOServletConfig.getSessionAttributeKeys().values().iterator();
			Map map = new HashMap();
			while(itr.hasNext()) {
				String key = (String)itr.next();
				String value = (String)session.getAttribute(key);
				map.put(key, value != null ? value : "");
			}
			return map;
		} catch(Exception e) {
			throw new GenerationException(e);
		}
	}

}
