// Path: echo/src/main/java/org/restexpress/example/echo/controller/EchoController.java
// public class EchoController
// extends AbstractDelayingController
// {
//     private static final String ECHO_PARAMETER_NOT_FOUND = "'echo' header or query-string parameter not found";
// 	private static final String ECHO_HEADER = "echo";
// 
// 	public ByteBuf create(Request request, Response response)
// 	{
// 		delay(request);
// 		response.setResponseCreated();
// 		return request.getBody();
// 	}
// 	
// 	public String delete(Request request, Response response)
// 	{
// 		delay(request);
// 		return request.getHeader(ECHO_HEADER, ECHO_PARAMETER_NOT_FOUND);
// 	}
// 	
// 	public String read(Request request, Response response)
// 	{
// 		System.out.println(request.getRemoteAddress());
// 		delay(request);
// 		String echo = request.getHeader(ECHO_HEADER);
// 		
// 		if (echo == null)
// 		{
// 			return "Please set query-string parameter 'echo' (e.g. ?echo=value)";
// 		}
// 		
// 		return echo;
// 	}
// 
// 	public ByteBuf update(Request request, Response response)
// 	{
// 		delay(request);
// 		return request.getBody();
// 	}
// }
// 
// Path: echo/src/main/java/org/restexpress/example/echo/controller/StatusController.java
// public class StatusController
// extends AbstractDelayingController
// {
// 	private static final String STATUS_RESPONSE_HEADER = "http_response_code";
// 
// 	public Object create(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		int status = Integer.valueOf(request.getHeader(STATUS_RESPONSE_HEADER));
// 		response.setResponseCode(status);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("create", delayms, message);
// 	}
// 
// 	public Object read(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		int status = Integer.valueOf(request.getHeader(STATUS_RESPONSE_HEADER));
// 		response.setResponseCode(status);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("read", delayms, message);
// 	}
// 
// 	public Object update(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		int status = Integer.valueOf(request.getHeader(STATUS_RESPONSE_HEADER));
// 		response.setResponseCode(status);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("update", delayms, message);
// 	}
// 
// 	public Object delete(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		int status = Integer.valueOf(request.getHeader(STATUS_RESPONSE_HEADER));
// 		response.setResponseCode(status);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("delete", delayms, message);
// 	}
// }
// 
// Path: echo/src/main/java/org/restexpress/example/echo/controller/SuccessController.java
// public class SuccessController
// extends AbstractDelayingController
// {
// 	public Object create(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		response.setResponseCreated();
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("create", delayms, message);
// 	}
// 
// 	public Object read(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("read", delayms, message);
// 	}
// 
// 	public Object update(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("update", delayms, message);
// 	}
// 
// 	public Object delete(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("delete", delayms, message);
// 	}
// }


import java.util.Properties;
import org.restexpress.Format;
import org.restexpress.RestExpress;
import org.restexpress.example.echo.controller.EchoController;
import org.restexpress.example.echo.controller.StatusController;
import org.restexpress.example.echo.controller.SuccessController;
import org.restexpress.util.Environment;
		this.defaultFormat = p.getProperty(DEFAULT_FORMAT_PROPERTY, Format.JSON);
		this.workerCount = Integer.parseInt(p.getProperty(WORKER_COUNT_PROPERTY, String.valueOf(DEFAULT_WORKER_COUNT)));
		this.executorThreadCount = Integer.parseInt(p.getProperty(EXECUTOR_THREAD_COUNT_PROPERTY, String.valueOf(DEFAULT_EXECUTOR_THREAD_COUNT)));
	}

	public String getDefaultFormat()
	{
		return defaultFormat;
	}

	public int getPort()
	{
		return port;
	}

	public String getName()
	{
		return name;
	}
	
	public int getWorkerCount()
	{
		return workerCount;
	}
	
	public int getExecutorThreadCount()
	{
		return executorThreadCount;
	}
	
// Path: echo/src/main/java/org/restexpress/example/echo/controller/EchoController.java
// public class EchoController
// extends AbstractDelayingController
// {
//     private static final String ECHO_PARAMETER_NOT_FOUND = "'echo' header or query-string parameter not found";
// 	private static final String ECHO_HEADER = "echo";
// 
// 	public ByteBuf create(Request request, Response response)
// 	{
// 		delay(request);
// 		response.setResponseCreated();
// 		return request.getBody();
// 	}
// 	
// 	public String delete(Request request, Response response)
// 	{
// 		delay(request);
// 		return request.getHeader(ECHO_HEADER, ECHO_PARAMETER_NOT_FOUND);
// 	}
// 	
// 	public String read(Request request, Response response)
// 	{
// 		System.out.println(request.getRemoteAddress());
// 		delay(request);
// 		String echo = request.getHeader(ECHO_HEADER);
// 		
// 		if (echo == null)
// 		{
// 			return "Please set query-string parameter 'echo' (e.g. ?echo=value)";
// 		}
// 		
// 		return echo;
// 	}
// 
// 	public ByteBuf update(Request request, Response response)
// 	{
// 		delay(request);
// 		return request.getBody();
// 	}
// }
// 
// Path: echo/src/main/java/org/restexpress/example/echo/controller/StatusController.java
// public class StatusController
// extends AbstractDelayingController
// {
// 	private static final String STATUS_RESPONSE_HEADER = "http_response_code";
// 
// 	public Object create(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		int status = Integer.valueOf(request.getHeader(STATUS_RESPONSE_HEADER));
// 		response.setResponseCode(status);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("create", delayms, message);
// 	}
// 
// 	public Object read(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		int status = Integer.valueOf(request.getHeader(STATUS_RESPONSE_HEADER));
// 		response.setResponseCode(status);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("read", delayms, message);
// 	}
// 
// 	public Object update(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		int status = Integer.valueOf(request.getHeader(STATUS_RESPONSE_HEADER));
// 		response.setResponseCode(status);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("update", delayms, message);
// 	}
// 
// 	public Object delete(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		int status = Integer.valueOf(request.getHeader(STATUS_RESPONSE_HEADER));
// 		response.setResponseCode(status);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("delete", delayms, message);
// 	}
// }
// 
// Path: echo/src/main/java/org/restexpress/example/echo/controller/SuccessController.java
// public class SuccessController
// extends AbstractDelayingController
// {
// 	public Object create(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		response.setResponseCreated();
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("create", delayms, message);
// 	}
// 
// 	public Object read(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("read", delayms, message);
// 	}
// 
// 	public Object update(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("update", delayms, message);
// 	}
// 
// 	public Object delete(Request request, Response response)
// 	{
// 		long delayms = delay(request);
// 		String message = request.getHeader("echo");
// 		return new DelayResponse("delete", delayms, message);
// 	}
// }


// Path: echo/src/main/java/org/restexpress/example/echo/Configuration.java
import java.util.Properties;
import org.restexpress.Format;
import org.restexpress.RestExpress;
import org.restexpress.example.echo.controller.EchoController;
import org.restexpress.example.echo.controller.StatusController;
import org.restexpress.example.echo.controller.SuccessController;
import org.restexpress.util.Environment;

		this.defaultFormat = p.getProperty(DEFAULT_FORMAT_PROPERTY, Format.JSON);
		this.workerCount = Integer.parseInt(p.getProperty(WORKER_COUNT_PROPERTY, String.valueOf(DEFAULT_WORKER_COUNT)));
		this.executorThreadCount = Integer.parseInt(p.getProperty(EXECUTOR_THREAD_COUNT_PROPERTY, String.valueOf(DEFAULT_EXECUTOR_THREAD_COUNT)));
	}

	public String getDefaultFormat()
	{
		return defaultFormat;
	}

	public int getPort()
	{
		return port;
	}

	public String getName()
	{
		return name;
	}
	
	public int getWorkerCount()
	{
		return workerCount;
	}
	
	public int getExecutorThreadCount()
	{
		return executorThreadCount;
	}
	
	public EchoController getEchoController()