Skip to content

Commit b90cd0d

Browse files
author
Dennis Labordus
committed
Split rest and websocket implementations between 2 packages, different models. And also add 2 get websocket endpoints.
Signed-off-by: Dennis Labordus <[email protected]>
1 parent a6cd02a commit b90cd0d

File tree

65 files changed

+1466
-200
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+1466
-200
lines changed
Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
// SPDX-FileCopyrightText: 2022 Alliander N.V.
22
//
33
// SPDX-License-Identifier: Apache-2.0
4-
package org.lfenergy.compas.scl.data.rest.v1.event;
4+
package org.lfenergy.compas.scl.data.websocket.event;
55

66
import io.quarkus.vertx.ConsumeEvent;
77
import org.lfenergy.compas.core.websocket.WebsocketHandler;
8-
import org.lfenergy.compas.scl.data.rest.v1.model.CreateResponse;
9-
import org.lfenergy.compas.scl.data.rest.v1.model.UpdateResponse;
108
import org.lfenergy.compas.scl.data.service.CompasSclDataService;
9+
import org.lfenergy.compas.scl.data.websocket.event.model.CreateEventRequest;
10+
import org.lfenergy.compas.scl.data.websocket.event.model.GetEventRequest;
11+
import org.lfenergy.compas.scl.data.websocket.event.model.GetVersionEventRequest;
12+
import org.lfenergy.compas.scl.data.websocket.event.model.UpdateEventRequest;
13+
import org.lfenergy.compas.scl.data.websocket.v1.model.CreateResponse;
14+
import org.lfenergy.compas.scl.data.websocket.v1.model.GetResponse;
15+
import org.lfenergy.compas.scl.data.websocket.v1.model.UpdateResponse;
1116

1217
import javax.enterprise.context.ApplicationScoped;
1318
import javax.inject.Inject;
@@ -34,6 +39,24 @@ public void createWebsocketsEvent(CreateEventRequest request) {
3439
});
3540
}
3641

42+
@ConsumeEvent(value = "get-ws")
43+
public void getWebsocketsEvent(GetEventRequest request) {
44+
new WebsocketHandler<GetResponse>().execute(request.getSession(), () -> {
45+
var response = new GetResponse();
46+
response.setSclData(compasSclDataService.findByUUID(request.getType(), request.getId()));
47+
return response;
48+
});
49+
}
50+
51+
@ConsumeEvent(value = "get-version-ws")
52+
public void getVersionWebsocketsEvent(GetVersionEventRequest request) {
53+
new WebsocketHandler<GetResponse>().execute(request.getSession(), () -> {
54+
var response = new GetResponse();
55+
response.setSclData(compasSclDataService.findByUUID(request.getType(), request.getId(), request.getVersion()));
56+
return response;
57+
});
58+
}
59+
3760
@ConsumeEvent(value = "update-ws", blocking = true)
3861
public void updateWebsocketsEvent(UpdateEventRequest request) {
3962
new WebsocketHandler<UpdateResponse>().execute(request.getSession(), () -> {

app/src/main/java/org/lfenergy/compas/scl/data/rest/v1/event/CreateEventRequest.java renamed to app/src/main/java/org/lfenergy/compas/scl/data/websocket/event/model/CreateEventRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-FileCopyrightText: 2022 Alliander N.V.
22
//
33
// SPDX-License-Identifier: Apache-2.0
4-
package org.lfenergy.compas.scl.data.rest.v1.event;
4+
package org.lfenergy.compas.scl.data.websocket.event.model;
55

66
import org.lfenergy.compas.scl.extensions.model.SclFileType;
77

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// SPDX-FileCopyrightText: 2022 Alliander N.V.
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
package org.lfenergy.compas.scl.data.websocket.event.model;
5+
6+
import org.lfenergy.compas.scl.extensions.model.SclFileType;
7+
8+
import javax.websocket.Session;
9+
import java.util.UUID;
10+
11+
public class GetEventRequest {
12+
private final Session session;
13+
private final SclFileType type;
14+
private final UUID id;
15+
16+
public GetEventRequest(Session session, SclFileType type, UUID id) {
17+
this.session = session;
18+
this.type = type;
19+
this.id = id;
20+
}
21+
22+
public Session getSession() {
23+
return session;
24+
}
25+
26+
public SclFileType getType() {
27+
return type;
28+
}
29+
30+
public UUID getId() {
31+
return id;
32+
}
33+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// SPDX-FileCopyrightText: 2022 Alliander N.V.
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
package org.lfenergy.compas.scl.data.websocket.event.model;
5+
6+
import org.lfenergy.compas.scl.data.model.Version;
7+
import org.lfenergy.compas.scl.extensions.model.SclFileType;
8+
9+
import javax.websocket.Session;
10+
import java.util.UUID;
11+
12+
public class GetVersionEventRequest {
13+
private final Session session;
14+
private final SclFileType type;
15+
private final UUID id;
16+
private final Version version;
17+
18+
public GetVersionEventRequest(Session session, SclFileType type, UUID id, Version version) {
19+
this.session = session;
20+
this.type = type;
21+
this.id = id;
22+
this.version = version;
23+
}
24+
25+
public Session getSession() {
26+
return session;
27+
}
28+
29+
public SclFileType getType() {
30+
return type;
31+
}
32+
33+
public UUID getId() {
34+
return id;
35+
}
36+
37+
public Version getVersion() {
38+
return version;
39+
}
40+
}

app/src/main/java/org/lfenergy/compas/scl/data/rest/v1/event/UpdateEventRequest.java renamed to app/src/main/java/org/lfenergy/compas/scl/data/websocket/event/model/UpdateEventRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-FileCopyrightText: 2022 Alliander N.V.
22
//
33
// SPDX-License-Identifier: Apache-2.0
4-
package org.lfenergy.compas.scl.data.rest.v1.event;
4+
package org.lfenergy.compas.scl.data.websocket.event.model;
55

66
import org.lfenergy.compas.scl.data.model.ChangeSetType;
77
import org.lfenergy.compas.scl.extensions.model.SclFileType;

app/src/main/java/org/lfenergy/compas/scl/data/rest/v1/CompasSclCreateServerEndpoint.java renamed to app/src/main/java/org/lfenergy/compas/scl/data/websocket/v1/CompasSclCreateServerEndpoint.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
// SPDX-FileCopyrightText: 2022 Alliander N.V.
22
//
33
// SPDX-License-Identifier: Apache-2.0
4-
package org.lfenergy.compas.scl.data.rest.v1;
4+
package org.lfenergy.compas.scl.data.websocket.v1;
55

66
import io.quarkus.security.Authenticated;
77
import io.vertx.mutiny.core.eventbus.EventBus;
88
import org.eclipse.microprofile.jwt.JsonWebToken;
99
import org.lfenergy.compas.core.websocket.ErrorResponseEncoder;
1010
import org.lfenergy.compas.scl.data.rest.UserInfoProperties;
11-
import org.lfenergy.compas.scl.data.rest.v1.event.CreateEventRequest;
12-
import org.lfenergy.compas.scl.data.rest.v1.model.CreateRequest;
13-
import org.lfenergy.compas.scl.data.rest.v1.websocket.CreateRequestDecoder;
14-
import org.lfenergy.compas.scl.data.rest.v1.websocket.CreateResponseEncoder;
11+
import org.lfenergy.compas.scl.data.websocket.event.model.CreateEventRequest;
12+
import org.lfenergy.compas.scl.data.websocket.v1.decoder.CreateRequestDecoder;
13+
import org.lfenergy.compas.scl.data.websocket.v1.encoder.CreateResponseEncoder;
14+
import org.lfenergy.compas.scl.data.websocket.v1.model.CreateRequest;
1515
import org.lfenergy.compas.scl.extensions.model.SclFileType;
1616
import org.slf4j.Logger;
1717
import org.slf4j.LoggerFactory;
@@ -33,16 +33,16 @@ public class CompasSclCreateServerEndpoint {
3333
private static final Logger LOGGER = LoggerFactory.getLogger(CompasSclCreateServerEndpoint.class);
3434

3535
private final EventBus eventBus;
36+
private final JsonWebToken jsonWebToken;
37+
private final UserInfoProperties userInfoProperties;
3638

3739
@Inject
38-
JsonWebToken jsonWebToken;
39-
40-
@Inject
41-
UserInfoProperties userInfoProperties;
42-
43-
@Inject
44-
public CompasSclCreateServerEndpoint(EventBus eventBus) {
40+
public CompasSclCreateServerEndpoint(EventBus eventBus,
41+
JsonWebToken jsonWebToken,
42+
UserInfoProperties userInfoProperties) {
4543
this.eventBus = eventBus;
44+
this.jsonWebToken = jsonWebToken;
45+
this.userInfoProperties = userInfoProperties;
4646
}
4747

4848
@OnOpen
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// SPDX-FileCopyrightText: 2022 Alliander N.V.
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
package org.lfenergy.compas.scl.data.websocket.v1;
5+
6+
import io.quarkus.security.Authenticated;
7+
import io.vertx.mutiny.core.eventbus.EventBus;
8+
import org.lfenergy.compas.core.websocket.ErrorResponseEncoder;
9+
import org.lfenergy.compas.scl.data.websocket.event.model.GetEventRequest;
10+
import org.lfenergy.compas.scl.data.websocket.v1.decoder.GetRequestDecoder;
11+
import org.lfenergy.compas.scl.data.websocket.v1.encoder.GetResponseEncoder;
12+
import org.lfenergy.compas.scl.data.websocket.v1.model.GetRequest;
13+
import org.lfenergy.compas.scl.extensions.model.SclFileType;
14+
import org.slf4j.Logger;
15+
import org.slf4j.LoggerFactory;
16+
17+
import javax.enterprise.context.ApplicationScoped;
18+
import javax.inject.Inject;
19+
import javax.websocket.*;
20+
import javax.websocket.server.PathParam;
21+
import javax.websocket.server.ServerEndpoint;
22+
23+
import static org.lfenergy.compas.scl.data.rest.Constants.TYPE_PATH_PARAM;
24+
25+
@Authenticated
26+
@ApplicationScoped
27+
@ServerEndpoint(value = "/scl-ws/v1/{" + TYPE_PATH_PARAM + "}/get",
28+
decoders = {GetRequestDecoder.class},
29+
encoders = {GetResponseEncoder.class, ErrorResponseEncoder.class})
30+
public class CompasSclGetServerEndpoint {
31+
private static final Logger LOGGER = LoggerFactory.getLogger(CompasSclGetServerEndpoint.class);
32+
33+
private final EventBus eventBus;
34+
35+
@Inject
36+
public CompasSclGetServerEndpoint(EventBus eventBus) {
37+
this.eventBus = eventBus;
38+
}
39+
40+
@OnOpen
41+
public void onOpen(Session session, @PathParam(TYPE_PATH_PARAM) String type) {
42+
LOGGER.debug("Starting session {} for type {}.", session.getId(), type);
43+
}
44+
45+
@OnMessage
46+
public void onGetMessage(Session session,
47+
GetRequest request,
48+
@PathParam(TYPE_PATH_PARAM) String type) {
49+
LOGGER.info("Message from session {} for type {}.", session.getId(), type);
50+
51+
eventBus.send("get-ws", new GetEventRequest(session, SclFileType.valueOf(type), request.getId()));
52+
}
53+
54+
@OnError
55+
public void onError(Session session, @PathParam(TYPE_PATH_PARAM) String type, Throwable throwable) {
56+
LOGGER.warn("Error with session {} for type {}.", session.getId(), type, throwable);
57+
}
58+
59+
@OnClose
60+
public void onClose(Session session, @PathParam(TYPE_PATH_PARAM) String type) {
61+
LOGGER.debug("Closing session {} for type {}.", session.getId(), type);
62+
}
63+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// SPDX-FileCopyrightText: 2022 Alliander N.V.
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
package org.lfenergy.compas.scl.data.websocket.v1;
5+
6+
import io.quarkus.security.Authenticated;
7+
import io.vertx.mutiny.core.eventbus.EventBus;
8+
import org.lfenergy.compas.core.websocket.ErrorResponseEncoder;
9+
import org.lfenergy.compas.scl.data.model.Version;
10+
import org.lfenergy.compas.scl.data.websocket.event.model.GetVersionEventRequest;
11+
import org.lfenergy.compas.scl.data.websocket.v1.decoder.GetVersionRequestDecoder;
12+
import org.lfenergy.compas.scl.data.websocket.v1.encoder.GetResponseEncoder;
13+
import org.lfenergy.compas.scl.data.websocket.v1.model.GetVersionRequest;
14+
import org.lfenergy.compas.scl.extensions.model.SclFileType;
15+
import org.slf4j.Logger;
16+
import org.slf4j.LoggerFactory;
17+
18+
import javax.enterprise.context.ApplicationScoped;
19+
import javax.inject.Inject;
20+
import javax.websocket.*;
21+
import javax.websocket.server.PathParam;
22+
import javax.websocket.server.ServerEndpoint;
23+
24+
import static org.lfenergy.compas.scl.data.rest.Constants.TYPE_PATH_PARAM;
25+
26+
@Authenticated
27+
@ApplicationScoped
28+
@ServerEndpoint(value = "/scl-ws/v1/{" + TYPE_PATH_PARAM + "}/get-version",
29+
decoders = {GetVersionRequestDecoder.class},
30+
encoders = {GetResponseEncoder.class, ErrorResponseEncoder.class})
31+
public class CompasSclGetVersionServerEndpoint {
32+
private static final Logger LOGGER = LoggerFactory.getLogger(CompasSclGetVersionServerEndpoint.class);
33+
34+
private final EventBus eventBus;
35+
36+
@Inject
37+
public CompasSclGetVersionServerEndpoint(EventBus eventBus) {
38+
this.eventBus = eventBus;
39+
}
40+
41+
@OnOpen
42+
public void onOpen(Session session, @PathParam(TYPE_PATH_PARAM) String type) {
43+
LOGGER.debug("Starting session {} for type {}.", session.getId(), type);
44+
}
45+
46+
@OnMessage
47+
public void onGetVersionMessage(Session session,
48+
GetVersionRequest request,
49+
@PathParam(TYPE_PATH_PARAM) String type) {
50+
LOGGER.info("Message from session {} for type {}.", session.getId(), type);
51+
52+
eventBus.send("get-version-ws", new GetVersionEventRequest(session, SclFileType.valueOf(type),
53+
request.getId(), new Version(request.getVersion())));
54+
}
55+
56+
@OnError
57+
public void onError(Session session, @PathParam(TYPE_PATH_PARAM) String type, Throwable throwable) {
58+
LOGGER.warn("Error with session {} for type {}.", session.getId(), type, throwable);
59+
}
60+
61+
@OnClose
62+
public void onClose(Session session, @PathParam(TYPE_PATH_PARAM) String type) {
63+
LOGGER.debug("Closing session {} for type {}.", session.getId(), type);
64+
}
65+
}

app/src/main/java/org/lfenergy/compas/scl/data/rest/v1/CompasSclUpdateServerEndpoint.java renamed to app/src/main/java/org/lfenergy/compas/scl/data/websocket/v1/CompasSclUpdateServerEndpoint.java

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
// SPDX-FileCopyrightText: 2022 Alliander N.V.
22
//
33
// SPDX-License-Identifier: Apache-2.0
4-
package org.lfenergy.compas.scl.data.rest.v1;
4+
package org.lfenergy.compas.scl.data.websocket.v1;
55

66
import io.quarkus.security.Authenticated;
77
import io.vertx.mutiny.core.eventbus.EventBus;
88
import org.eclipse.microprofile.jwt.JsonWebToken;
99
import org.lfenergy.compas.core.websocket.ErrorResponseEncoder;
1010
import org.lfenergy.compas.scl.data.rest.UserInfoProperties;
11-
import org.lfenergy.compas.scl.data.rest.v1.event.UpdateEventRequest;
12-
import org.lfenergy.compas.scl.data.rest.v1.model.UpdateRequest;
13-
import org.lfenergy.compas.scl.data.rest.v1.websocket.UpdateRequestDecoder;
14-
import org.lfenergy.compas.scl.data.rest.v1.websocket.UpdateResponseEncoder;
11+
import org.lfenergy.compas.scl.data.websocket.event.model.UpdateEventRequest;
12+
import org.lfenergy.compas.scl.data.websocket.v1.decoder.UpdateRequestDecoder;
13+
import org.lfenergy.compas.scl.data.websocket.v1.encoder.UpdateResponseEncoder;
14+
import org.lfenergy.compas.scl.data.websocket.v1.model.UpdateRequest;
1515
import org.lfenergy.compas.scl.extensions.model.SclFileType;
1616
import org.slf4j.Logger;
1717
import org.slf4j.LoggerFactory;
@@ -21,30 +21,28 @@
2121
import javax.websocket.*;
2222
import javax.websocket.server.PathParam;
2323
import javax.websocket.server.ServerEndpoint;
24-
import java.util.UUID;
2524

26-
import static org.lfenergy.compas.scl.data.rest.Constants.ID_PATH_PARAM;
2725
import static org.lfenergy.compas.scl.data.rest.Constants.TYPE_PATH_PARAM;
2826

2927
@Authenticated
3028
@ApplicationScoped
31-
@ServerEndpoint(value = "/scl-ws/v1/{" + TYPE_PATH_PARAM + "}/update/{" + ID_PATH_PARAM + "}",
29+
@ServerEndpoint(value = "/scl-ws/v1/{" + TYPE_PATH_PARAM + "}/update",
3230
decoders = {UpdateRequestDecoder.class},
3331
encoders = {UpdateResponseEncoder.class, ErrorResponseEncoder.class})
3432
public class CompasSclUpdateServerEndpoint {
3533
private static final Logger LOGGER = LoggerFactory.getLogger(CompasSclUpdateServerEndpoint.class);
3634

3735
private final EventBus eventBus;
36+
private final JsonWebToken jsonWebToken;
37+
private final UserInfoProperties userInfoProperties;
3838

3939
@Inject
40-
JsonWebToken jsonWebToken;
41-
42-
@Inject
43-
UserInfoProperties userInfoProperties;
44-
45-
@Inject
46-
public CompasSclUpdateServerEndpoint(EventBus eventBus) {
40+
public CompasSclUpdateServerEndpoint(EventBus eventBus,
41+
JsonWebToken jsonWebToken,
42+
UserInfoProperties userInfoProperties) {
4743
this.eventBus = eventBus;
44+
this.jsonWebToken = jsonWebToken;
45+
this.userInfoProperties = userInfoProperties;
4846
}
4947

5048
@OnOpen
@@ -54,15 +52,14 @@ public void onOpen(Session session, @PathParam(TYPE_PATH_PARAM) String type) {
5452

5553
@OnMessage
5654
public void onUpdateMessage(Session session, UpdateRequest request,
57-
@PathParam(TYPE_PATH_PARAM) String type,
58-
@PathParam(ID_PATH_PARAM) String id) {
55+
@PathParam(TYPE_PATH_PARAM) String type) {
5956
LOGGER.info("Message from session {} for type {}.", session.getId(), type);
6057

6158
String who = jsonWebToken.getClaim(userInfoProperties.who());
6259
LOGGER.trace("Username used for Who {}", who);
6360

6461
eventBus.send("update-ws", new UpdateEventRequest(
65-
session, SclFileType.valueOf(type), UUID.fromString(id), request.getChangeSetType(),
62+
session, SclFileType.valueOf(type), request.getId(), request.getChangeSetType(),
6663
who, request.getComment(), request.getSclData()));
6764
}
6865

0 commit comments

Comments
 (0)