diff --git a/tomcat/src/main/java/nextstep/jwp/handle/mapping/GetFileMappingInfo.java b/tomcat/src/main/java/nextstep/jwp/handle/mapping/GetFileMappingInfo.java new file mode 100644 index 0000000000..c8f5befd22 --- /dev/null +++ b/tomcat/src/main/java/nextstep/jwp/handle/mapping/GetFileMappingInfo.java @@ -0,0 +1,20 @@ +package nextstep.jwp.handle.mapping; + +import java.util.regex.Pattern; +import org.apache.coyote.common.HttpMethod; +import org.apache.coyote.request.HttpRequest; + +public class GetFileMappingInfo extends MappingInfo { + + private static final String FILE_PATTER = "/[^.]*\\.[^.]*$"; + private static final Pattern PATTERN = Pattern.compile(FILE_PATTER); + + public GetFileMappingInfo() { + super(HttpMethod.GET, FILE_PATTER); + } + + @Override + public boolean support(final HttpRequest request) { + return httpMethod.equals(request.getHttpMethod()) && PATTERN.matcher(request.getUriPath()).matches(); + } +} diff --git a/tomcat/src/main/java/nextstep/jwp/handle/mapping/GetLoginMappingInfo.java b/tomcat/src/main/java/nextstep/jwp/handle/mapping/GetLoginMappingInfo.java new file mode 100644 index 0000000000..b02aa62141 --- /dev/null +++ b/tomcat/src/main/java/nextstep/jwp/handle/mapping/GetLoginMappingInfo.java @@ -0,0 +1,17 @@ +package nextstep.jwp.handle.mapping; + +import java.util.Objects; +import org.apache.coyote.common.HttpMethod; +import org.apache.coyote.request.HttpRequest; + +public class GetLoginMappingInfo extends MappingInfo { + + public GetLoginMappingInfo() { + super(HttpMethod.GET, "/login"); + } + + @Override + public boolean support(final HttpRequest request) { + return httpMethod.equals(request.getHttpMethod()) && Objects.equals(uriPath, request.getUriPath()); + } +} diff --git a/tomcat/src/main/java/nextstep/jwp/handle/mapping/GetRegisterMappingInfo.java b/tomcat/src/main/java/nextstep/jwp/handle/mapping/GetRegisterMappingInfo.java new file mode 100644 index 0000000000..fc382e0ae5 --- /dev/null +++ b/tomcat/src/main/java/nextstep/jwp/handle/mapping/GetRegisterMappingInfo.java @@ -0,0 +1,17 @@ +package nextstep.jwp.handle.mapping; + +import java.util.Objects; +import org.apache.coyote.common.HttpMethod; +import org.apache.coyote.request.HttpRequest; + +public class GetRegisterMappingInfo extends MappingInfo { + + public GetRegisterMappingInfo() { + super(HttpMethod.GET, "/register"); + } + + @Override + public boolean support(final HttpRequest request) { + return httpMethod.equals(request.getHttpMethod()) && Objects.equals(uriPath, request.getUriPath()); + } +} diff --git a/tomcat/src/main/java/nextstep/jwp/handle/mapping/PostLoginMappingInfo.java b/tomcat/src/main/java/nextstep/jwp/handle/mapping/PostLoginMappingInfo.java new file mode 100644 index 0000000000..494b764cc2 --- /dev/null +++ b/tomcat/src/main/java/nextstep/jwp/handle/mapping/PostLoginMappingInfo.java @@ -0,0 +1,17 @@ +package nextstep.jwp.handle.mapping; + +import java.util.Objects; +import org.apache.coyote.common.HttpMethod; +import org.apache.coyote.request.HttpRequest; + +public class PostLoginMappingInfo extends MappingInfo { + + public PostLoginMappingInfo() { + super(HttpMethod.POST, "/login"); + } + + @Override + public boolean support(final HttpRequest request) { + return httpMethod.equals(request.getHttpMethod()) && Objects.equals(uriPath, request.getUriPath()); + } +} diff --git a/tomcat/src/main/java/org/apache/coyote/handle/mapping/FileMappingInfo.java b/tomcat/src/main/java/org/apache/coyote/handle/mapping/FileMappingInfo.java deleted file mode 100644 index ede706eda2..0000000000 --- a/tomcat/src/main/java/org/apache/coyote/handle/mapping/FileMappingInfo.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.apache.coyote.handle.mapping; - -import java.util.regex.Pattern; -import org.apache.coyote.common.HttpMethod; -import org.apache.coyote.handle.handler.FileHandler; -import org.apache.coyote.request.HttpRequest; -import org.apache.coyote.response.HttpResponse; - -public class FileMappingInfo extends MappingInfo { - - private static final String FILE_PATTER = "/[^.]*\\.[^.]*$"; - private static final Pattern PATTERN = Pattern.compile(FILE_PATTER); - - public FileMappingInfo() { - super(FILE_PATTER); - try { - methodMapping.put( - HttpMethod.GET, - FileHandler.class.getDeclaredMethod("doGet", HttpRequest.class, HttpResponse.class) - ); - } catch (NoSuchMethodException e) { - throw new IllegalStateException(e); - } - } - - @Override - public boolean support(final HttpRequest httpRequest) { - return methodMapping.keySet().contains(httpRequest.getHttpMethod()) - && PATTERN.matcher(httpRequest.getUriPath()).matches(); - } -} diff --git a/tomcat/src/main/java/org/apache/coyote/handle/mapping/LoginMappingInfo.java b/tomcat/src/main/java/org/apache/coyote/handle/mapping/LoginMappingInfo.java deleted file mode 100644 index 71fe174d5c..0000000000 --- a/tomcat/src/main/java/org/apache/coyote/handle/mapping/LoginMappingInfo.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.apache.coyote.handle.mapping; - -import java.util.Objects; -import org.apache.coyote.common.HttpMethod; -import org.apache.coyote.handle.handler.LoginHandler; -import org.apache.coyote.request.HttpRequest; -import org.apache.coyote.response.HttpResponse; - -public class LoginMappingInfo extends MappingInfo { - - public LoginMappingInfo() { - super("/login"); - try { - methodMapping.put( - HttpMethod.GET, - LoginHandler.class.getDeclaredMethod("doGet", HttpRequest.class, HttpResponse.class) - ); - methodMapping.put( - HttpMethod.POST, - LoginHandler.class.getDeclaredMethod("doPost", HttpRequest.class, HttpResponse.class) - ); - } catch (NoSuchMethodException e) { - throw new IllegalStateException(e); - } - } - - @Override - public boolean support(final HttpRequest httpRequest) { - return methodMapping.keySet().contains(httpRequest.getHttpMethod()) - && Objects.equals(uriPath, httpRequest.getUriPath()); - } -}