Created
April 14, 2015 15:49
-
-
Save pumpkincouture/157939fa7f1bf39c7586 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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