Skip to content

Instantly share code, notes, and snippets.

@pumpkincouture
Created April 14, 2015 15:49
Show Gist options
  • Save pumpkincouture/157939fa7f1bf39c7586 to your computer and use it in GitHub Desktop.
Save pumpkincouture/157939fa7f1bf39c7586 to your computer and use it in GitHub Desktop.
# Factory class
public class HandlerFactory {
private Request request;
private ResponseCodeBuilder responseCodeBuilder;
public HandlerFactory(Request request) {
this.request = request;
responseCodeBuilder = new ResponseCodeBuilder(request);
}
public RequestHandler createMethodHandler() {
String requestMethod = request.getMethod();
switch (requestMethod) {
case "GET":
RequestHandler gethandler = new GetHandler(responseCodeBuilder);
return gethandler;
case "POST":
RequestHandler postHandler = new PostHandler(responseCodeBuilder);
return postHandler;
case "PUT":
RequestHandler putHandler = new PutHandler(responseCodeBuilder);
return putHandler;
case "OPTIONS":
RequestHandler optionsHandler = new OptionsHandler(responseCodeBuilder);
return optionsHandler;
}
RequestHandler gethandler = new GetHandler(responseCodeBuilder);
return gethandler;
}
}
# Interface
public interface RequestHandler {
public String handle(Request request);
}
# Concrete GET class
public class GetHandler implements RequestHandler {
private ResponseCodeBuilder responseCodeBuilder;
public GetHandler(ResponseCodeBuilder responseCodeBuilder) {
this.responseCodeBuilder = responseCodeBuilder;
}
@Override
public String handle(Request request) {
return getResponse(request);
}
private String getResponse(Request request) {
if (request.getPath().equals("/")) {
return responseCodeBuilder.createValidResponse();
}
return responseCodeBuilder.returnFourOhFour();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment