diff --git a/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/LoadBalancerWebApplication.java b/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/LoadBalancerWebApplication.java new file mode 100644 index 0000000..12ba999 --- /dev/null +++ b/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/LoadBalancerWebApplication.java @@ -0,0 +1,12 @@ +package ru.dragonestia.loadbalancer.web; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LoadBalancerWebApplication { + + public static void main(String[] args) { + SpringApplication.run(LoadBalancerWebApplication.class, args); + } +} diff --git a/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/page/HomePage.java b/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/page/HomePage.java new file mode 100644 index 0000000..904924d --- /dev/null +++ b/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/page/HomePage.java @@ -0,0 +1,17 @@ +package ru.dragonestia.loadbalancer.web.page; + +import com.vaadin.flow.component.html.H1; +import com.vaadin.flow.component.html.Paragraph; +import com.vaadin.flow.component.orderedlayout.VerticalLayout; +import com.vaadin.flow.router.Route; + +@Route("/") +public class HomePage extends VerticalLayout { + + public HomePage() { + super(); + + add(new H1("Hello world!")); + add(new Paragraph("Hello world!")); + } +} diff --git a/LoadBalancerWeb/src/main/resources/application.properties b/LoadBalancerWeb/src/main/resources/application.properties new file mode 100644 index 0000000..f620381 --- /dev/null +++ b/LoadBalancerWeb/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=8090 diff --git a/LoadBalancerWeb/src/test/java/ru/dragonestia/loadbalancer/web/LoadBalancerWebApplicationTests.java b/LoadBalancerWeb/src/test/java/ru/dragonestia/loadbalancer/web/LoadBalancerWebApplicationTests.java new file mode 100644 index 0000000..8301805 --- /dev/null +++ b/LoadBalancerWeb/src/test/java/ru/dragonestia/loadbalancer/web/LoadBalancerWebApplicationTests.java @@ -0,0 +1,13 @@ +package ru.dragonestia.loadbalancer.web; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class LoadBalancerWebApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/src/main/java/ru/dragonestia/loadbalancer/service/NodeService.java b/src/main/java/ru/dragonestia/loadbalancer/service/NodeService.java index db04204..fac6745 100644 --- a/src/main/java/ru/dragonestia/loadbalancer/service/NodeService.java +++ b/src/main/java/ru/dragonestia/loadbalancer/service/NodeService.java @@ -3,6 +3,7 @@ package ru.dragonestia.loadbalancer.service; import ru.dragonestia.loadbalancer.model.Node; import java.util.List; +import java.util.Optional; public interface NodeService { @@ -11,4 +12,6 @@ public interface NodeService { void removeNode(Node node); List allNodes(); + + Optional findNode(String identifier); } diff --git a/src/main/java/ru/dragonestia/loadbalancer/service/impl/NodeServiceImpl.java b/src/main/java/ru/dragonestia/loadbalancer/service/impl/NodeServiceImpl.java new file mode 100644 index 0000000..83e11ed --- /dev/null +++ b/src/main/java/ru/dragonestia/loadbalancer/service/impl/NodeServiceImpl.java @@ -0,0 +1,41 @@ +package ru.dragonestia.loadbalancer.service.impl; + +import org.springframework.stereotype.Service; +import ru.dragonestia.loadbalancer.model.Node; +import ru.dragonestia.loadbalancer.service.NodeService; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; + + +@Service +public class NodeServiceImpl implements NodeService { + + private final Map nodes = new ConcurrentHashMap<>(); + + @Override + public void createNode(Node node) { + if (nodes.containsKey(node.identifier())) { + throw new IllegalArgumentException("Node with id '" + node.identifier() + "' already exists"); + } + + nodes.put(node.identifier(), node); + } + + @Override + public void removeNode(Node node) { + nodes.remove(node.identifier()); + } + + @Override + public List allNodes() { + return nodes.values().stream().toList(); + } + + @Override + public Optional findNode(String identifier) { + return nodes.containsKey(identifier)? Optional.of(nodes.get(identifier)) : Optional.empty(); + } +}