/*
 * Paraselene
 * Copyright (c) 2009  Akira Terasaki
 * このファイルは同梱されているLicense.txtに定めた条件に同意できる場合にのみ
 * 利用可能です。
 */
package paraselene.mockup.output.source.base;
public class Json extends paraselene.mockup.Output {
protected String getFileByte() { return
"// Paraselene generated this source file.\npackage #1.#x;\n\nimport paraselene.*;\nimport paraselene.supervisor.*;\nimport paraselene.ajax.*;\nimport java.io.*;\n\n/**\n * JSON非同期通信。\n */\npublic abstract class Json extends #1.SuperPage implements Downloadable {\n	/**\n	 * クライアントの取得キーを表すパラメータ。\n	 */\n	protected static final String	KEY = \"key\";\n	private boolean	opera_f = false;\n	private JSON	data;\n	/**\n	 * コンストラクタ。\n	 */\n	public Json() {\n		super();\n		try {\n			setInitialized( true );\n		}\n		catch( Exception e ) {\n			Option.debug( e );\n		}\n	}\n	/**\n	 * ページIDの取得。\n	 * @return ページID。\n	 */\n	public PageID getID() {\n		return PageType.PARASELENE_JSON;\n	}\n	/**\n	 * ブラウザに403を返す。\n	 * @param req リクエスト内容。\n	 * @param fw デフォルト遷移先。\n	 * @exception PageException 処理の継続が不可能(ブラウザには500を返す)。\n	 */\n	public Forward inputMain( RequestParameter req, Forward fw ) throws PageException {\n		return new Forward( 403 );\n	}\n	public boolean isHistoryClear() { return false; }\n	public boolean isAllowHistoryAdd() { return false; }\n	/**\n	 * 別名URI設定。\n	 * @return paraselene.json.na\n	 */\n	public String getAliasURI() {\n		return \"paraselene.json.na\";\n	}\n	/**\n	 * 出力情報のハンドリングを行う。\n	 * リクエストに応じて、固定のレスポンスを生成したい時はnull以外を返して下さい。\n	 * nullを返すと、Ajaxクラスにキューイングされたものを使用します。\n	 * @param req リクエスト内容。\n	 * @return レスポンスするインスタンス。null可。\n	 */\n	protected abstract Serializable outputMain( RequestParameter req ) throws PageException;\n	/**\n	 * 初回outputの呼び出しメイン処理。\n	 * @param req リクエスト内容。\n	 * @exception PageException 処理の継続が不可能(ブラウザには500を返す)。\n	 */\n	public void firstOutputMain( RequestParameter req ) throws PageException{}\n	/**\n	 * 出力情報の設定を行う。\n	 * @param from 遷移元ページ。直接呼ばれている場合はnullです。\n	 * @param req リクエスト内容。\n	 * @return 出力ページ。\n	 * @exception PageException 処理の継続が不可能(ブラウザには500を返す)。\n	 */\n	public Page outputMain( Page from, RequestParameter req ) throws PageException {\n		data = null;\n		Serializable	spot = outputMain( req );\n		if ( spot != null ) {\n			data = new JSON( spot );\n		}\n		else {\n			RequestItem	item = req.getItem( KEY );\n			if ( item == null )	return this;\n			data = Ajax.get( req.getSession(), item.getValue( 0 ) );\n		}\n		String[]	ua = req.getHeader( \"User-Agent\" );\n		if ( ua != null ) {\n			opera_f = ua[0].indexOf( \"Opera\" ) != -1;\n		}\n		return this;\n	}\n	/**\n	 * 出力コンテントタイプ。\n	 * @return text/javascript+json; charset=utf-8\n	 */\n	public String getContentType() {\n		return opera_f?\n			\"text/html; charset=utf-8\":\n			\"text/javascript+json; charset=utf-8\";\n	}\n	/**\n	 * 出力内容の取得。\n	 * @return ストリーム。\n	 * @exception PageException 処理の継続が不可能(ブラウザには500を返す)。\n	 */\n	public InputStream getInputStream() throws PageException {\n		String	ret = \"{}\";\n		if ( data != null ) {\n			ret = data.toString();\n		}\n		try {\n			return new ByteArrayInputStream( ret.getBytes( \"utf-8\" ) );\n		}\n		catch( Exception e ) {\n			throw new PageException( e );\n		}\n	}\n}\n\n";}
}
