// Path: siden-core/src/main/java/ninja/siden/Request.java
// public interface Request extends AttributeContainer {
// 
// 	HttpMethod method();
// 
// 	String path();
// 
// 	/**
// 	 * get path parameter
// 	 * 
// 	 * @param key
// 	 * @return
// 	 */
// 	Optional<String> params(String key);
// 
// 	Map<String, String> params();
// 
// 	/**
// 	 * get query parameter
// 	 * 
// 	 * @param key
// 	 * @return
// 	 */
// 	Optional<String> query(String key);
// 
// 	Optional<String> header(String name);
// 
// 	List<String> headers(String name);
// 
// 	Map<String, List<String>> headers();
// 
// 	Map<String, Cookie> cookies();
// 
// 	Optional<Cookie> cookie(String name);
// 
// 	Optional<String> form(String key);
// 
// 	List<String> forms(String key);
// 
// 	Map<String, List<String>> forms();
// 
// 	Optional<File> file(String key);
// 
// 	List<File> files(String key);
// 
// 	Map<String, List<File>> files();
// 
// 	Optional<String> body();
// 
// 	/**
// 	 * get current session or create new session.
// 	 * 
// 	 * @return session
// 	 */
// 	Session session();
// 
// 	/**
// 	 * get current session
// 	 * 
// 	 * @return session or empty
// 	 */
// 	Optional<Session> current();
// 
// 	boolean xhr();
// 
// 	String protocol();
// 
// 	String scheme();
// 
// 	HttpServerExchange raw();
// 
// }
// 
// Path: siden-core/src/main/java/ninja/siden/Response.java
// public interface Response {
// 
// 	Response status(int code);
// 
// 	Response header(String name, String... values);
// 
// 	/**
// 	 * set RFC1123 date pattern to Response header.
// 	 * 
// 	 * @param name
// 	 * @param date
// 	 * @return this
// 	 */
// 	Response header(String name, long date);
// 
// 	Response headers(Map<String, String> headers);
// 
// 	Cookie cookie(String name, String value);
// 
// 	/**
// 	 * @param name
// 	 * @return existing value
// 	 */
// 	Cookie removeCookie(String name);
// 
// 	/**
// 	 * @param contentType
// 	 */
// 	Response type(String contentType);
// 
// 	Object redirect(String location);
// 
// 	Object redirect(int code, String location);
// 
// 	<MODEL> Object render(MODEL model, Renderer<MODEL> renderer);
// 
// 	<MODEL> Object render(MODEL model, String template);
// 
// 	HttpServerExchange raw();
// }


import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import io.undertow.util.AttachmentKey;
import java.util.function.Predicate;
import ninja.siden.Request;
import ninja.siden.Response;
import org.xnio.OptionMap;
/*
 * Copyright 2014 SATO taichi
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package ninja.siden.internal;





/**
 * @author taichi
 */
public class Core implements HttpHandler {

	public static final AttachmentKey<OptionMap> CONFIG = AttachmentKey
			.create(OptionMap.class);

	public static final AttachmentKey<Request> REQUEST = AttachmentKey
			.create(Request.class);

// Path: siden-core/src/main/java/ninja/siden/Request.java
// public interface Request extends AttributeContainer {
// 
// 	HttpMethod method();
// 
// 	String path();
// 
// 	/**
// 	 * get path parameter
// 	 * 
// 	 * @param key
// 	 * @return
// 	 */
// 	Optional<String> params(String key);
// 
// 	Map<String, String> params();
// 
// 	/**
// 	 * get query parameter
// 	 * 
// 	 * @param key
// 	 * @return
// 	 */
// 	Optional<String> query(String key);
// 
// 	Optional<String> header(String name);
// 
// 	List<String> headers(String name);
// 
// 	Map<String, List<String>> headers();
// 
// 	Map<String, Cookie> cookies();
// 
// 	Optional<Cookie> cookie(String name);
// 
// 	Optional<String> form(String key);
// 
// 	List<String> forms(String key);
// 
// 	Map<String, List<String>> forms();
// 
// 	Optional<File> file(String key);
// 
// 	List<File> files(String key);
// 
// 	Map<String, List<File>> files();
// 
// 	Optional<String> body();
// 
// 	/**
// 	 * get current session or create new session.
// 	 * 
// 	 * @return session
// 	 */
// 	Session session();
// 
// 	/**
// 	 * get current session
// 	 * 
// 	 * @return session or empty
// 	 */
// 	Optional<Session> current();
// 
// 	boolean xhr();
// 
// 	String protocol();
// 
// 	String scheme();
// 
// 	HttpServerExchange raw();
// 
// }
// 
// Path: siden-core/src/main/java/ninja/siden/Response.java
// public interface Response {
// 
// 	Response status(int code);
// 
// 	Response header(String name, String... values);
// 
// 	/**
// 	 * set RFC1123 date pattern to Response header.
// 	 * 
// 	 * @param name
// 	 * @param date
// 	 * @return this
// 	 */
// 	Response header(String name, long date);
// 
// 	Response headers(Map<String, String> headers);
// 
// 	Cookie cookie(String name, String value);
// 
// 	/**
// 	 * @param name
// 	 * @return existing value
// 	 */
// 	Cookie removeCookie(String name);
// 
// 	/**
// 	 * @param contentType
// 	 */
// 	Response type(String contentType);
// 
// 	Object redirect(String location);
// 
// 	Object redirect(int code, String location);
// 
// 	<MODEL> Object render(MODEL model, Renderer<MODEL> renderer);
// 
// 	<MODEL> Object render(MODEL model, String template);
// 
// 	HttpServerExchange raw();
// }


// Path: siden-core/src/main/java/ninja/siden/internal/Core.java
import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import io.undertow.util.AttachmentKey;
import java.util.function.Predicate;
import ninja.siden.Request;
import ninja.siden.Response;
import org.xnio.OptionMap;

/*
 * Copyright 2014 SATO taichi
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package ninja.siden.internal;





/**
 * @author taichi
 */
public class Core implements HttpHandler {

	public static final AttachmentKey<OptionMap> CONFIG = AttachmentKey
			.create(OptionMap.class);

	public static final AttachmentKey<Request> REQUEST = AttachmentKey
			.create(Request.class);

	public static final AttachmentKey<Response> RESPONSE = AttachmentKey