Skip to content

Commit e8dd20f

Browse files
committed
Change route-style responders to be Routes, update RouteMap methods and update GetResponder to use the new route system
1 parent 3dc0ea5 commit e8dd20f

28 files changed

+289
-235
lines changed

src/main/java/httpserver/ResponderSupplierFactory.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,26 @@
55
import httpserver.file.PathExaminer;
66
import httpserver.header.RangeHeaderValueParser;
77
import httpserver.responder.*;
8-
import httpserver.responder.special.*;
8+
import httpserver.route.*;
99

1010
public class ResponderSupplierFactory {
1111
public MethodResponderSupplier makeResponderSupplier() {
1212
MethodResponderSupplier methodResponderSupplier = new MethodResponderSupplier();
1313

1414
PathExaminer pathExaminer = new PathExaminer();
1515
FileOperator fileOperator = new FileOperator();
16-
RouteMap routeMap = getRouteMap(pathExaminer, fileOperator);
16+
Router router = getRouter(pathExaminer, fileOperator);
1717
Html html = new Html();
1818
RangeHeaderValueParser rangeHeaderValueParser = new RangeHeaderValueParser();
1919
Hasher hasher = new Hasher();
2020

2121
methodResponderSupplier.registerResponder(new GetResponder(
22-
routeMap,
22+
router,
2323
pathExaminer,
2424
html,
2525
rangeHeaderValueParser));
2626
methodResponderSupplier.registerResponder(new HeadResponder(
27-
routeMap,
27+
router,
2828
pathExaminer,
2929
html,
3030
rangeHeaderValueParser));
@@ -46,17 +46,17 @@ public MethodResponderSupplier makeResponderSupplier() {
4646
return methodResponderSupplier;
4747
}
4848

49-
private RouteMap getRouteMap(PathExaminer pathExaminer, FileOperator fileOperator) {
50-
Responder[] responderList = new Responder[]{
51-
new CoffeeResponder(),
52-
new TeaResponder(),
53-
new LogsResponder(),
54-
new CookieResponder(),
55-
new EatCookieResponder(),
56-
new ParametersResponder(),
57-
new FormGetResponder(pathExaminer, fileOperator),
58-
new RedirectResponder(),
49+
private Router getRouter(PathExaminer pathExaminer, FileOperator fileOperator) {
50+
Route[] routeList = new Route[]{
51+
new CoffeeRoute(),
52+
new TeaRoute(),
53+
new LogsRoute(),
54+
new CookieRoute(),
55+
new EatCookieRoute(),
56+
new ParametersRoute(),
57+
new FormGetRoute(pathExaminer, fileOperator),
58+
new RedirectRoute(),
5959
};
60-
return new RouteMap(responderList);
60+
return new Router(routeList);
6161
}
6262
}

src/main/java/httpserver/responder/GetResponder.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,39 +12,38 @@
1212
import httpserver.response.PartialContentResponse;
1313
import httpserver.response.Response;
1414
import httpserver.file.PathExaminer;
15+
import httpserver.route.Router;
1516

1617
import java.io.IOException;
1718
import java.nio.file.Path;
1819

1920
public class GetResponder extends MethodResponder {
2021

2122
private final PathExaminer pathExaminer;
22-
private final RouteMap specialCaseRouteMap;
23+
private final Router router;
2324
private final Html html;
2425
private RangeHeaderValueParser rangeHeaderValueParser;
2526

26-
public GetResponder(RouteMap getRouteMap,
27+
public GetResponder(Router router,
2728
PathExaminer pathExaminer,
2829
Html html,
2930
RangeHeaderValueParser rangeHeaderValueParser) {
3031
super.method= Method.GET;
3132
this.pathExaminer = pathExaminer;
32-
this.specialCaseRouteMap = getRouteMap;
33+
this.router = router;
3334
this.html = html;
3435
this.rangeHeaderValueParser = rangeHeaderValueParser;
3536
}
3637

3738
@Override
3839
public Response respond(AppConfig appConfig, Request request) throws IOException {
39-
String requestPathString = request.getPathString();
4040

41-
if (specialCaseRouteMap.hasRoute(requestPathString)) {
42-
Responder responderForRoute = specialCaseRouteMap.getResponderForRoute(requestPathString);
43-
return responderForRoute.respond(appConfig, request);
41+
if (router.canRespond(request)) {
42+
return router.respond(appConfig, request);
4443
}
4544

4645
Path root = appConfig.getRoot();
47-
Path fullPath = pathExaminer.getFullPath(root, requestPathString);
46+
Path fullPath = pathExaminer.getFullPath(root, request.getPathString());
4847

4948
if (!pathExaminer.pathExists(fullPath)) {
5049
return new NotFoundResponse();

src/main/java/httpserver/responder/HeadResponder.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@
77
import httpserver.file.PathExaminer;
88
import httpserver.header.RangeHeaderValueParser;
99
import httpserver.response.Response;
10+
import httpserver.route.Router;
1011

1112
import java.io.IOException;
1213

1314
public class HeadResponder extends GetResponder {
14-
public HeadResponder(RouteMap getRouteMap,
15+
public HeadResponder(Router getRouter,
1516
PathExaminer pathExaminer,
1617
Html html,
1718
RangeHeaderValueParser rangeHeaderValueParser) {
18-
super(getRouteMap, pathExaminer, html, rangeHeaderValueParser);
19+
super(getRouter, pathExaminer, html, rangeHeaderValueParser);
1920
super.method= Method.HEAD;
2021
}
2122

src/main/java/httpserver/responder/Responder.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/main/java/httpserver/responder/RouteMap.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/main/java/httpserver/responder/special/CoffeeResponder.java renamed to src/main/java/httpserver/route/CoffeeRoute.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
1-
package httpserver.responder.special;
1+
package httpserver.route;
22

33
import httpserver.AppConfig;
44
import httpserver.request.Request;
5-
import httpserver.responder.Responder;
65
import httpserver.response.TeapotResponse;
76
import httpserver.response.Response;
87

9-
public class CoffeeResponder implements Responder {
10-
@Override
11-
public Response respond(AppConfig appConfig, Request request) {
12-
return new TeapotResponse();
8+
public class CoffeeRoute extends Route {
9+
public CoffeeRoute() {
10+
super.routeString = "/coffee";
1311
}
1412

1513
@Override
16-
public boolean allows(String pathString) {
17-
return pathString.equals("/coffee");
14+
public Response respond(AppConfig appConfig, Request request) {
15+
return new TeapotResponse();
1816
}
1917
}

src/main/java/httpserver/responder/special/CookieResponder.java renamed to src/main/java/httpserver/route/CookieRoute.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,20 @@
1-
package httpserver.responder.special;
1+
package httpserver.route;
22

33
import httpserver.AppConfig;
44
import httpserver.request.Request;
55
import httpserver.header.Header;
6-
import httpserver.responder.Responder;
76
import httpserver.response.OkResponse;
87
import httpserver.response.Response;
98

10-
public class CookieResponder implements Responder {
9+
public class CookieRoute extends Route {
10+
public CookieRoute() {
11+
super.routeString = "/cookie";
12+
}
13+
1114
@Override
1215
public Response respond(AppConfig appConfig, Request request) {
1316
Response response = new OkResponse("Eat".getBytes());
1417
response.setHeader(new Header("Set-Cookie", "key=value"));
1518
return response;
1619
}
17-
18-
@Override
19-
public boolean allows(String pathString) {
20-
return pathString.equals("/cookie");
21-
}
2220
}

src/main/java/httpserver/responder/special/EatCookieResponder.java renamed to src/main/java/httpserver/route/EatCookieRoute.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
1-
package httpserver.responder.special;
1+
package httpserver.route;
22

33
import httpserver.AppConfig;
44
import httpserver.request.Request;
5-
import httpserver.responder.Responder;
65
import httpserver.response.OkResponse;
76
import httpserver.response.Response;
87

9-
public class EatCookieResponder implements Responder {
8+
public class EatCookieRoute extends Route {
9+
public EatCookieRoute() {
10+
super.routeString = "/eat_cookie";
11+
}
12+
1013
@Override
1114
public Response respond(AppConfig appConfig, Request request) {
1215
Response response = new OkResponse("mmmm chocolate".getBytes());
1316
return response;
1417
}
15-
16-
@Override
17-
public boolean allows(String pathString) {
18-
return pathString.equals("/eat_cookie");
19-
}
2018
}

src/main/java/httpserver/responder/FormGetResponder.java renamed to src/main/java/httpserver/route/FormGetRoute.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package httpserver.responder;
1+
package httpserver.route;
22

33
import httpserver.AppConfig;
44
import httpserver.request.Request;
@@ -10,11 +10,12 @@
1010
import java.io.IOException;
1111
import java.nio.file.Path;
1212

13-
public class FormGetResponder implements Responder {
13+
public class FormGetRoute extends Route {
1414
private final PathExaminer pathExaminer;
1515
private final FileOperator fileOperator;
1616

17-
public FormGetResponder(PathExaminer pathExaminer, FileOperator fileOperator) {
17+
public FormGetRoute(PathExaminer pathExaminer, FileOperator fileOperator) {
18+
super.routeString = "/form";
1819
this.pathExaminer = pathExaminer;
1920
this.fileOperator = fileOperator;
2021
}
@@ -29,9 +30,4 @@ public Response respond(AppConfig appConfig, Request request) throws IOException
2930

3031
return new OkResponse(fileOperator.readContents(fullPath));
3132
}
32-
33-
@Override
34-
public boolean allows(String pathString) {
35-
return pathString.equals("/form");
36-
}
3733
}
Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1-
package httpserver.responder.special;
1+
package httpserver.route;
22

33
import httpserver.AppConfig;
44
import httpserver.Authorizer;
55
import httpserver.request.Request;
6-
import httpserver.responder.Responder;
76
import httpserver.response.OkResponse;
87
import httpserver.response.Response;
98
import httpserver.response.ServerErrorResponse;
109
import httpserver.response.UnauthorizedResponse;
1110

1211
import java.io.IOException;
1312

14-
public class LogsResponder implements Responder {
13+
public class LogsRoute extends Route {
14+
public LogsRoute() {
15+
super.routeString = "/logs";
16+
}
17+
1518
@Override
1619
public Response respond(AppConfig appConfig, Request request) {
1720
Authorizer authorizer = new Authorizer();
@@ -27,9 +30,4 @@ public Response respond(AppConfig appConfig, Request request) {
2730
return new ServerErrorResponse();
2831
}
2932
}
30-
31-
@Override
32-
public boolean allows(String pathString) {
33-
return pathString.equals("/logs");
34-
}
3533
}

0 commit comments

Comments
 (0)