diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/route/ChatRoutes.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/route/ChatRoutes.java index 5a521326..1c45d0d8 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/route/ChatRoutes.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/route/ChatRoutes.java @@ -12,7 +12,7 @@ import org.linkwave.ws.websocket.routing.Box; import org.linkwave.ws.websocket.routing.Payload; import org.linkwave.ws.websocket.routing.bpp.Broadcast; -import org.linkwave.ws.websocket.routing.bpp.SubRoute; +import org.linkwave.ws.websocket.routing.bpp.Endpoint; import org.linkwave.ws.websocket.routing.bpp.WebSocketRoute; import org.springframework.lang.NonNull; import org.springframework.web.bind.annotation.PathVariable; @@ -38,7 +38,7 @@ public class ChatRoutes { @SneakyThrows @Broadcast - @SubRoute("/{id}/send") + @Endpoint("/{id}/send") public Box sendTextMessage(@PathVariable String id, @Payload IncomeMessage message, @NonNull WebSocketSession session, @@ -82,7 +82,7 @@ public Box sendTextMessage(@PathVariable String id, .build()); } - @SubRoute("/edit_text_message/{messageId}") + @Endpoint("/edit_text_message/{messageId}") @Broadcast(value = "chat:{chatId}", analyzeMessage = true) public Box editTextMessage(@PathVariable String messageId, @Payload String text, @@ -111,7 +111,7 @@ public Box editTextMessage(@PathVariable String messageId, } @Broadcast - @SubRoute("/{id}/send_file") + @Endpoint("/{id}/send_file") public Box sendFileMessage(@PathVariable String id, @Payload CreatedFileMessage message, @NonNull UserPrincipal principal, @@ -150,7 +150,7 @@ public Box sendFileMessage(@PathVariable String id, .build()); } - @SubRoute("/remove_message/{messageId}") + @Endpoint("/remove_message/{messageId}") @Broadcast(value = "chat:{chatId}", analyzeMessage = true) public Box removeMessage(@PathVariable String messageId, @NonNull UserPrincipal principal, @@ -185,7 +185,7 @@ public Box removeMessage(@PathVariable String messageId, } @Broadcast - @SubRoute("/{id}/clear_history") + @Endpoint("/{id}/clear_history") public Box clearChatHistory(@PathVariable String id, @NonNull UserPrincipal principal, @NonNull String path) { @@ -211,7 +211,7 @@ public Box clearChatHistory(@PathVariable String id, .build()); } - @SubRoute("/unread_messages") + @Endpoint("/unread_messages") public UnreadMessages getUnreadMessages(@NonNull UserPrincipal principal) { final Long userId = principal.token().userId(); return UnreadMessages.builder() @@ -220,7 +220,7 @@ public UnreadMessages getUnreadMessages(@NonNull UserPrincipal principal) { } @Broadcast - @SubRoute("/{id}/read") + @Endpoint("/{id}/read") public Box readMessages(@PathVariable String id, @Payload LastReadMessage message, @NonNull UserPrincipal principal, @@ -264,7 +264,7 @@ public Box readMessages(@PathVariable String id, return ok(); } - @SubRoute(value = "/{id}/{recipientId}/add", disabled = true) + @Endpoint(value = "/{id}/{recipientId}/add", disabled = true) public Box addChat(@PathVariable String id, @PathVariable Long recipientId, @NonNull UserPrincipal principal, diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/route/GroupChatRoutes.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/route/GroupChatRoutes.java index 82ae9e9e..c9adb363 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/route/GroupChatRoutes.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/route/GroupChatRoutes.java @@ -12,7 +12,7 @@ import org.linkwave.ws.websocket.routing.Box; import org.linkwave.ws.websocket.routing.Payload; import org.linkwave.ws.websocket.routing.bpp.Broadcast; -import org.linkwave.ws.websocket.routing.bpp.SubRoute; +import org.linkwave.ws.websocket.routing.bpp.Endpoint; import org.linkwave.ws.websocket.routing.bpp.WebSocketRoute; import org.springframework.lang.NonNull; import org.springframework.web.bind.annotation.PathVariable; @@ -31,7 +31,7 @@ public class GroupChatRoutes { private final ChatRepository chatRepository; private final ChatServiceClient chatClient; - @SubRoute(value = "/create", disabled = true) + @Endpoint(value = "/create", disabled = true) public Box createChat(@NonNull UserPrincipal principal, @Payload NewGroupChat body, @NonNull String path) { @@ -52,7 +52,7 @@ public Box createChat(@NonNull UserPrincipal principal, return ok(groupChat); } - @SubRoute(value = "/{id}/add", disabled = true) + @Endpoint(value = "/{id}/add", disabled = true) public Box addChat(@PathVariable String id, @NonNull UserPrincipal principal, @NonNull String path) { @@ -76,7 +76,7 @@ public Box addChat(@PathVariable String id, } @Broadcast - @SubRoute("/{id}/join") + @Endpoint("/{id}/join") public Box join(@PathVariable String id, @NonNull UserPrincipal principal, @NonNull String path) { @@ -113,7 +113,7 @@ public Box join(@PathVariable String id, @Broadcast @Broadcast(value = "user:{senderId}", analyzeMessage = true) - @SubRoute("/{id}/leave") + @Endpoint("/{id}/leave") public Box leaveChat(@PathVariable String id, @NonNull UserPrincipal principal, @NonNull String path) { @@ -146,7 +146,7 @@ public Box leaveChat(@PathVariable String id, } @Broadcast - @SubRoute("/{id}/add_member/{userId}") + @Endpoint("/{id}/add_member/{userId}") public Box addMember(@PathVariable String id, @PathVariable Long userId, @NonNull UserPrincipal principal, @@ -193,7 +193,7 @@ public Box addMember(@PathVariable String id, @Broadcast @Broadcast("user:{memberId}") - @SubRoute("/{id}/kick/{memberId}") + @Endpoint("/{id}/kick/{memberId}") public Box removeMember(@PathVariable String id, @PathVariable Long memberId, @NonNull UserPrincipal principal, @@ -238,7 +238,7 @@ public Box removeMember(@PathVariable String id, } @Broadcast - @SubRoute("/{id}/set_role/{memberId}") + @Endpoint("/{id}/set_role/{memberId}") public Box changeMemberRole(@PathVariable String id, @PathVariable Long memberId, @NonNull UserPrincipal principal, diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/Payload.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/Payload.java index 34f7cdc8..141cc6d4 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/Payload.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/Payload.java @@ -6,10 +6,10 @@ import java.lang.annotation.Target; import org.linkwave.ws.websocket.routing.args.RouteHandlerArgumentResolver; -import org.linkwave.ws.websocket.routing.bpp.SubRoute; +import org.linkwave.ws.websocket.routing.bpp.Endpoint; /** - * Used to indicate parameter as message payload in {@link SubRoute} (route handler). + * Used to indicate parameter as message payload in method annotated with {@link Endpoint} (i.e. route handler). * Moreover, the annotated parameter is involved in {@link RouteHandlerArgumentResolver} * in message injection. */ diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/RouteComponent.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/RouteComponent.java index 19384d7c..c893d8de 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/RouteComponent.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/RouteComponent.java @@ -3,7 +3,7 @@ import java.lang.reflect.Method; import org.linkwave.ws.websocket.routing.bpp.WebSocketRoute; -import org.linkwave.ws.websocket.routing.bpp.SubRoute; +import org.linkwave.ws.websocket.routing.bpp.Endpoint; /** * Just a convenient container that holds reference to object or bean annotated @@ -11,7 +11,7 @@ * one of handler that's declared in that bean. * * @param beanRoute component with route handlers declaration - * @param routeHandler one of the declared handlers ({@link SubRoute}) + * @param routeHandler one of the declared handlers ({@link Endpoint}) */ public record RouteComponent(Object beanRoute, Method routeHandler) { } diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/args/RouteHandlerArgumentResolver.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/args/RouteHandlerArgumentResolver.java index 856d0741..63888446 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/args/RouteHandlerArgumentResolver.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/args/RouteHandlerArgumentResolver.java @@ -5,7 +5,7 @@ import org.linkwave.ws.websocket.routing.exception.InvalidPathException; import org.springframework.lang.NonNull; import org.springframework.web.socket.WebSocketSession; -import org.linkwave.ws.websocket.routing.bpp.SubRoute; +import org.linkwave.ws.websocket.routing.bpp.Endpoint; import java.util.List; import java.util.Map; @@ -14,7 +14,7 @@ * Describes the way {@link WebSocketRouter} should resolve route handler's parameters * in order to construct his successful invocation. The message has a chance to be handled only if * it passed this stage, i.e. path that specified in message is valid and payload type is compatible with - * the type of {@link Payload} declared in target {@link SubRoute} (route handler). + * the type of {@link Payload} declared in target {@link Endpoint} (route handler). */ public interface RouteHandlerArgumentResolver { diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/Broadcast.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/Broadcast.java index ce42de4c..c55ecbe2 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/Broadcast.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/Broadcast.java @@ -8,7 +8,7 @@ * This annotation is used to enable message broadcast for route handler. * * @see BroadcastManager - * @see SubRoute + * @see Endpoint */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @@ -23,7 +23,7 @@ * *
    *
  • - * a path variable from route that is specified in {@link SubRoute} annotation that + * a path variable from endpoint that is specified in {@link Endpoint} annotation that * attached to specific route handler. *
  • *
  • diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/SubRoute.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/Endpoint.java similarity index 79% rename from backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/SubRoute.java rename to backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/Endpoint.java index fca85ab5..3f7f67c6 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/SubRoute.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/Endpoint.java @@ -6,14 +6,14 @@ import java.lang.annotation.Target; /** - * This annotation is used to mark methods of {@code @WebSocketRoute} beans - * aimed to handle received message by defined route at value property + * This annotation is used to mark methods of {@code @WebSocketRoute} beans that are + * aimed to handle received messages for specific endpoint. * * @see WebSocketRoute */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) -public @interface SubRoute { +public @interface Endpoint { String value() default ""; boolean disabled() default false; } diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/WebSocketRoute.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/WebSocketRoute.java index 1a9ef461..18f32830 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/WebSocketRoute.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/WebSocketRoute.java @@ -10,9 +10,9 @@ /** * This annotation is used to define bean that can hold - * route handlers, i.e. methods marked with {@code @SubRoute} + * route handlers, i.e. methods marked with {@link Endpoint} * - * @see SubRoute + * @see Endpoint */ @Component @Retention(RetentionPolicy.RUNTIME) diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/WebSocketRouterBeanPostProcessor.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/WebSocketRouterBeanPostProcessor.java index a7153d5e..bad7c37f 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/WebSocketRouterBeanPostProcessor.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/bpp/WebSocketRouterBeanPostProcessor.java @@ -49,12 +49,12 @@ public Object postProcessAfterInitialization(@NonNull Object bean, String rootPath = routeCls.getAnnotation(WebSocketRoute.class).value(); sb.append(rootPath); - // scan all sub-routes + // scan all endpoints inside bean for (Method method : routeCls.getDeclaredMethods()) { - if (method.isAnnotationPresent(SubRoute.class)) { - SubRoute ann = method.getAnnotation(SubRoute.class); + if (method.isAnnotationPresent(Endpoint.class)) { + Endpoint ann = method.getAnnotation(Endpoint.class); - // omit disabled route handler + // omit disabled endpoint if (ann.disabled()) { continue; } @@ -64,7 +64,7 @@ public Object postProcessAfterInitialization(@NonNull Object bean, String combinedPath = sb.toString(); if (routes.containsKey(combinedPath)) { - throw new RuntimeException("found duplicate routes"); + throw new RuntimeException("Found duplicate routes"); } // check broadcast options diff --git a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/broadcast/BroadcastManager.java b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/broadcast/BroadcastManager.java index 87889a76..4b106309 100644 --- a/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/broadcast/BroadcastManager.java +++ b/backend/ws-server/src/main/java/org/linkwave/ws/websocket/routing/broadcast/BroadcastManager.java @@ -9,7 +9,7 @@ /** * Built-in component that is used by router to automatically broadcast message - * using {@code @Broadcast} annotation. Broadcast manager is informed about what, how and where + * using {@link Broadcast} annotation. Broadcast manager is informed about what, how and where * the message must be delivered. * * @see Broadcast diff --git a/backend/ws-server/src/test/java/org/linkwave/ws/unit/DefaultRouteHandlerArgumentResolverTest.java b/backend/ws-server/src/test/java/org/linkwave/ws/unit/DefaultRouteHandlerArgumentResolverTest.java index 859f32c5..33754fc1 100644 --- a/backend/ws-server/src/test/java/org/linkwave/ws/unit/DefaultRouteHandlerArgumentResolverTest.java +++ b/backend/ws-server/src/test/java/org/linkwave/ws/unit/DefaultRouteHandlerArgumentResolverTest.java @@ -12,7 +12,7 @@ import org.linkwave.ws.websocket.routing.RoutingMessage; import org.linkwave.ws.websocket.routing.args.DefaultRouteHandlerArgumentResolver; import org.linkwave.ws.websocket.routing.args.RouteHandlerArgumentResolver; -import org.linkwave.ws.websocket.routing.bpp.SubRoute; +import org.linkwave.ws.websocket.routing.bpp.Endpoint; import org.linkwave.ws.websocket.routing.exception.InvalidMessageFormatException; import org.linkwave.ws.websocket.routing.exception.InvalidPathException; import org.linkwave.ws.websocket.routing.exception.RoutingException; @@ -204,37 +204,37 @@ void shouldThrowExceptionWhenPathVariableCantBeResolved() { private static class RouteHandlers { - @SubRoute("/send") + @Endpoint("/send") void send() { } - @SubRoute("/echo") + @Endpoint("/echo") void echoPath(String path) { } - @SubRoute("/echo") + @Endpoint("/echo") void echoPrincipal(UserPrincipal userPrincipal, Principal principal) { } - @SubRoute("/chat/{id}/send") + @Endpoint("/chat/{id}/send") void send(WebSocketSession session, @Payload String message, @PathVariable long id, int abc) { } - @SubRoute("/chat/{id}/send") + @Endpoint("/chat/{id}/send") void send2(@Payload int message, @PathVariable long id) { } - @SubRoute("/chat/{ID}/send") + @Endpoint("/chat/{ID}/send") void send(@PathVariable long id) { } - @SubRoute("/chat/{objId}/send") + @Endpoint("/chat/{objId}/send") void send(@PathVariable Object objId) { } - @SubRoute("/chat/{intId}/send/{stringId}") + @Endpoint("/chat/{intId}/send/{stringId}") void send(@PathVariable int intId, @PathVariable String stringId) { } @@ -246,7 +246,7 @@ private Map.Entry findRouteHandler(final String route, f final List routeHandlers = Arrays.stream(handlers.getClass().getDeclaredMethods()) .filter(method -> method.getName().equals(handlerName)) .filter(method -> { - final var ann = method.getAnnotation(SubRoute.class); + final var ann = method.getAnnotation(Endpoint.class); return ann != null && ann.value().equals(route); }) .toList(); diff --git a/backend/ws-server/src/test/java/org/linkwave/ws/unit/FlexBroadcastManagerTest.java b/backend/ws-server/src/test/java/org/linkwave/ws/unit/FlexBroadcastManagerTest.java index 89e1d96d..537c1f65 100644 --- a/backend/ws-server/src/test/java/org/linkwave/ws/unit/FlexBroadcastManagerTest.java +++ b/backend/ws-server/src/test/java/org/linkwave/ws/unit/FlexBroadcastManagerTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.linkwave.ws.websocket.routing.bpp.Broadcast; -import org.linkwave.ws.websocket.routing.bpp.SubRoute; +import org.linkwave.ws.websocket.routing.bpp.Endpoint; import org.linkwave.ws.websocket.routing.broadcast.BroadcastRepositoryResolver; import org.linkwave.ws.websocket.routing.broadcast.FlexBroadcastManager; import org.linkwave.ws.websocket.routing.broadcast.WebSocketMessageBroadcast; @@ -122,14 +122,14 @@ static class Routes { @Broadcast @Broadcast(value = "user:{senderId}", analyzeMessage = true) - @SubRoute("/chat/{id}") + @Endpoint("/chat/{id}") Message send(@PathVariable String id) { return new Message(id, 1L); } @Broadcast @Broadcast - @SubRoute("/chat/{id}") + @Endpoint("/chat/{id}") Message sendDuplicates(@PathVariable String id) { return new Message(id, 1L); } diff --git a/backend/ws-server/src/test/java/org/linkwave/ws/unit/WebSocketRouterBroadcastTest.java b/backend/ws-server/src/test/java/org/linkwave/ws/unit/WebSocketRouterBroadcastTest.java index 3bcafa3b..c5c10c52 100644 --- a/backend/ws-server/src/test/java/org/linkwave/ws/unit/WebSocketRouterBroadcastTest.java +++ b/backend/ws-server/src/test/java/org/linkwave/ws/unit/WebSocketRouterBroadcastTest.java @@ -15,7 +15,7 @@ import org.linkwave.ws.websocket.routing.*; import org.linkwave.ws.websocket.routing.args.DefaultRouteHandlerArgumentResolver; import org.linkwave.ws.websocket.routing.bpp.Broadcast; -import org.linkwave.ws.websocket.routing.bpp.SubRoute; +import org.linkwave.ws.websocket.routing.bpp.Endpoint; import org.linkwave.ws.websocket.routing.bpp.WebSocketRoute; import org.linkwave.ws.websocket.routing.broadcast.BroadcastManager; import org.linkwave.ws.websocket.routing.broadcast.SimpleBroadcastManager; @@ -202,7 +202,7 @@ void everyoneInChatMustReceiveTextMessage() { @WebSocketRoute("/group-chat") private static class ChatRoutesBroadcastT { - @SubRoute("/{id}/send") + @Endpoint("/{id}/send") @Broadcast("chat:{id}") Box sendMessage(@PathVariable String id, @NonNull WebSocketSession session, diff --git a/backend/ws-server/src/test/java/org/linkwave/ws/unit/WebSocketRouterImplTest.java b/backend/ws-server/src/test/java/org/linkwave/ws/unit/WebSocketRouterImplTest.java index e7ed5f91..a177f79e 100644 --- a/backend/ws-server/src/test/java/org/linkwave/ws/unit/WebSocketRouterImplTest.java +++ b/backend/ws-server/src/test/java/org/linkwave/ws/unit/WebSocketRouterImplTest.java @@ -14,7 +14,7 @@ import org.linkwave.ws.websocket.dto.OutcomeMessage; import org.linkwave.ws.websocket.routing.*; import org.linkwave.ws.websocket.routing.args.RouteHandlerArgumentResolver; -import org.linkwave.ws.websocket.routing.bpp.SubRoute; +import org.linkwave.ws.websocket.routing.bpp.Endpoint; import org.linkwave.ws.websocket.routing.bpp.WebSocketRoute; import org.linkwave.ws.websocket.routing.broadcast.BroadcastManager; import org.linkwave.ws.websocket.routing.exception.InvalidMessageFormatException; @@ -202,7 +202,7 @@ static Stream invalidPaths() { @WebSocketRoute("/chat") private static class ChatRoutesT { - @SubRoute("/{id}/send") + @Endpoint("/{id}/send") Box sendMessage(@PathVariable String id, WebSocketSession session, @Payload String message) { @@ -213,7 +213,7 @@ Box sendMessage(@PathVariable String id, .build()); } - @SubRoute("/{id}/update_message/{messageId}") + @Endpoint("/{id}/update_message/{messageId}") Box updateMessage(@PathVariable String id, @PathVariable String messageId, WebSocketSession session,