// Path: src/main/java/com/sulaco/fuse/akka/message/FuseRequestMessage.java
// public interface FuseRequestMessage extends Route {
// 
//     long getId();
// 
//     HttpRequest getRequest();
// 
//     String getRequestBody();
// 
//     ChannelHandlerContext getChannelContext();
// 
//     void flush();
// 
//     boolean flushed();
// 
//     public <T> Optional<T> getParam(String name, Class<T> clazz);
// 
// }
// 
// Path: src/main/java/com/sulaco/fuse/akka/message/FuseRequestMessageImpl.java
// public class FuseRequestMessageImpl implements FuseRequestMessage {
// 
//     long id;
// 
//     HttpRequest incomingRequest;
// 
//     ChannelHandlerContext channelContext;
// 
//     Route route;
//     
//     volatile boolean flushed = false;
//     
//     public FuseRequestMessageImpl(long id, ChannelHandlerContext context, HttpRequest request) {
//         this.id = id;
//         this.channelContext  = context;
//         this.incomingRequest = request;
//     }
// 
//     @Override
//     public long getId() {
//         return id;
//     }
// 
//     @Override
//     public HttpRequest getRequest() {
//         return incomingRequest;
//     }
// 
//     @Override
//     public ChannelHandlerContext getChannelContext() {
//         return channelContext;
//     }
// 
//     @Override
//     public RouteHandler getHandler() {
//         return route.getHandler();
//     }
// 
//     @Override
//     public Map<String, String> getParams() {
//         return route.getParams();
//     }
// 
//     @Override
//     public Optional<String> getParam(String name) {
//         return route.getParam(name);
//     }
// 
//     @Override
//     public <T> Optional<T> getParam(String name, Class<T> clazz) {
//         Optional<String> param = route.getParam(name);
//         return param.map(v -> PrimitiveConverters.convert(v, clazz));
//     }
// 
//     @Override
//     public String getRequestBody() {
//         return ((DefaultFullHttpRequest) incomingRequest).content().toString(charset_utf8);
//     }
// 
//     public void setRoute(Route route) {
//         this.route = route;
//     }
// 
//     @Override
//     public void flush() {
//         channelContext.flush();
//         flushed = true;
//     }
// 
//     @Override
//     public boolean flushed() {
//         return flushed;
//     }
// 
//     private static final Charset charset_utf8 = Charset.forName("UTF-8");
//     
// }
// 
// Path: src/main/java/com/sulaco/fuse/config/route/Route.java
// public interface Route {
// 
//     public RouteHandler getHandler();
//     
//     public Map<String, String> getParams();
//     
//     public Optional<String> getParam(String name);
//     
// }
// 
// Path: src/main/java/com/sulaco/fuse/config/route/RoutesConfig.java
// public interface RoutesConfig {
// 
//     public void parse();
//     
//     public Optional<Route> getFuseRoute(String uri);
// 
//     public void addEndpoint(ActorRef ref, String httpMethod, String path);
// }


import io.netty.handler.codec.http.HttpMethod;
import java.util.Optional;
import io.netty.handler.codec.http.HttpResponseStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import com.sulaco.fuse.akka.message.FuseRequestMessage;
import com.sulaco.fuse.akka.message.FuseRequestMessageImpl;
import com.sulaco.fuse.config.route.Route;
import com.sulaco.fuse.config.route.RoutesConfig;

package com.sulaco.fuse.akka.actor;










public class RouteFinderActor extends FuseEndpointActor {

    @Autowired protected RoutesConfig routes;
    
    @Override

// Path: src/main/java/com/sulaco/fuse/akka/message/FuseRequestMessage.java
// public interface FuseRequestMessage extends Route {
// 
//     long getId();
// 
//     HttpRequest getRequest();
// 
//     String getRequestBody();
// 
//     ChannelHandlerContext getChannelContext();
// 
//     void flush();
// 
//     boolean flushed();
// 
//     public <T> Optional<T> getParam(String name, Class<T> clazz);
// 
// }
// 
// Path: src/main/java/com/sulaco/fuse/akka/message/FuseRequestMessageImpl.java
// public class FuseRequestMessageImpl implements FuseRequestMessage {
// 
//     long id;
// 
//     HttpRequest incomingRequest;
// 
//     ChannelHandlerContext channelContext;
// 
//     Route route;
//     
//     volatile boolean flushed = false;
//     
//     public FuseRequestMessageImpl(long id, ChannelHandlerContext context, HttpRequest request) {
//         this.id = id;
//         this.channelContext  = context;
//         this.incomingRequest = request;
//     }
// 
//     @Override
//     public long getId() {
//         return id;
//     }
// 
//     @Override
//     public HttpRequest getRequest() {
//         return incomingRequest;
//     }
// 
//     @Override
//     public ChannelHandlerContext getChannelContext() {
//         return channelContext;
//     }
// 
//     @Override
//     public RouteHandler getHandler() {
//         return route.getHandler();
//     }
// 
//     @Override
//     public Map<String, String> getParams() {
//         return route.getParams();
//     }
// 
//     @Override
//     public Optional<String> getParam(String name) {
//         return route.getParam(name);
//     }
// 
//     @Override
//     public <T> Optional<T> getParam(String name, Class<T> clazz) {
//         Optional<String> param = route.getParam(name);
//         return param.map(v -> PrimitiveConverters.convert(v, clazz));
//     }
// 
//     @Override
//     public String getRequestBody() {
//         return ((DefaultFullHttpRequest) incomingRequest).content().toString(charset_utf8);
//     }
// 
//     public void setRoute(Route route) {
//         this.route = route;
//     }
// 
//     @Override
//     public void flush() {
//         channelContext.flush();
//         flushed = true;
//     }
// 
//     @Override
//     public boolean flushed() {
//         return flushed;
//     }
// 
//     private static final Charset charset_utf8 = Charset.forName("UTF-8");
//     
// }
// 
// Path: src/main/java/com/sulaco/fuse/config/route/Route.java
// public interface Route {
// 
//     public RouteHandler getHandler();
//     
//     public Map<String, String> getParams();
//     
//     public Optional<String> getParam(String name);
//     
// }
// 
// Path: src/main/java/com/sulaco/fuse/config/route/RoutesConfig.java
// public interface RoutesConfig {
// 
//     public void parse();
//     
//     public Optional<Route> getFuseRoute(String uri);
// 
//     public void addEndpoint(ActorRef ref, String httpMethod, String path);
// }


// Path: src/main/java/com/sulaco/fuse/akka/actor/RouteFinderActor.java
import io.netty.handler.codec.http.HttpMethod;
import java.util.Optional;
import io.netty.handler.codec.http.HttpResponseStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import com.sulaco.fuse.akka.message.FuseRequestMessage;
import com.sulaco.fuse.akka.message.FuseRequestMessageImpl;
import com.sulaco.fuse.config.route.Route;
import com.sulaco.fuse.config.route.RoutesConfig;

package com.sulaco.fuse.akka.actor;










public class RouteFinderActor extends FuseEndpointActor {

    @Autowired protected RoutesConfig routes;
    
    @Override

    protected void onRequest(final FuseRequestMessage message) {
