diff --git a/build.gradle b/build.gradle index 3e0f04a..8db8001 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ repositories { mavenCentral() } -sourceCompatibility = 8 +sourceCompatibility = 10 dependencies { compileOnly 'javax.servlet:javax.servlet-api:4.0.1' diff --git a/src/main/java/api/Orders.java b/src/main/java/api/Orders.java new file mode 100644 index 0000000..4f21951 --- /dev/null +++ b/src/main/java/api/Orders.java @@ -0,0 +1,42 @@ +package api; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@WebServlet("/api/orders") +public class Orders extends HttpServlet { + private static final long serialVersionUID = 1L; + private int lastOrderId = 0; + private Pattern orderPattern = Pattern.compile(".*\"orderNumber\":\\s*\"(.*)\".*"); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.getWriter().format("%d", lastOrderId); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("application/json"); + String order = req.getReader().lines().collect(Collectors.joining(" ")); + int orderId = lastOrderId++; + Matcher matcher = orderPattern.matcher(order); + boolean matches = matcher.matches(); + + if (matches && matcher.groupCount() > 0) { + String orderNumber = matcher.group(1); + System.out.format("request data: %s, orderNumber: %s\n", order, orderNumber); + resp.getWriter().printf("{\"id\": %d, \"orderNumber\": \"%s\"}", orderId, orderNumber); + } else { + resp.getWriter().print("\"Invalid request\""); + } + + + } +}