Skip to content

Commit a00f392

Browse files
committed
refactor
1 parent 518477f commit a00f392

5 files changed

Lines changed: 77 additions & 70 deletions

File tree

src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractChargePointServiceInvoker.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,9 @@ private void run(String chargeBoxId, CommunicationTask task) {
6464

6565
FutureResponseContext frc = new FutureResponseContext(task, pair.getResponseClass());
6666

67-
CommunicationContext context = new CommunicationContext();
68-
context.setChargeBoxId(chargeBoxId);
67+
CommunicationContext context = new CommunicationContext(endpoint.getSession(chargeBoxId), chargeBoxId);
6968
context.setOutgoingMessage(call);
7069
context.setFutureResponseContext(frc);
71-
context.setSession(endpoint.getSession(chargeBoxId));
7270

7371
outgoingCallPipeline.process(context);
7472
}

src/main/java/de/rwth/idsg/steve/ocpp/ws/AbstractWebSocketEndpoint.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ private void handleTextMessage(WebSocketSession session, TextMessage webSocketMe
8181

8282
log.info("[chargeBoxId={}, sessionId={}] Received message: {}", chargeBoxId, session.getId(), incomingString);
8383

84-
CommunicationContext context = new CommunicationContext();
85-
context.setSession(session);
86-
context.setChargeBoxId(chargeBoxId);
84+
CommunicationContext context = new CommunicationContext(session, chargeBoxId);
8785
context.setIncomingString(incomingString);
8886

8987
pipeline.process(context);
Lines changed: 69 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,92 @@
11
package de.rwth.idsg.steve.ocpp.ws.data;
22

33
import de.rwth.idsg.steve.ocpp.CommunicationTask;
4+
import de.rwth.idsg.steve.ocpp.ResponseType;
5+
import lombok.AccessLevel;
46
import lombok.Getter;
7+
import lombok.RequiredArgsConstructor;
58
import lombok.Setter;
69
import org.springframework.web.socket.WebSocketSession;
710

11+
import javax.xml.ws.Response;
12+
import java.util.Map;
13+
import java.util.concurrent.TimeUnit;
14+
import java.util.function.Consumer;
15+
816
/**
917
* Default holder/context of incoming and outgoing messages.
1018
*
1119
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>
1220
* @since 23.03.2015
1321
*/
22+
@RequiredArgsConstructor
1423
@Getter
15-
@Setter
1624
public class CommunicationContext {
17-
private WebSocketSession session;
18-
private String chargeBoxId;
1925

20-
private String incomingString;
21-
private String outgoingString;
26+
private final WebSocketSession session;
27+
private final String chargeBoxId;
28+
29+
@Setter private String incomingString;
30+
@Setter private String outgoingString;
2231

23-
private OcppJsonMessage incomingMessage;
24-
private OcppJsonMessage outgoingMessage;
32+
@Setter private OcppJsonMessage incomingMessage;
33+
@Setter private OcppJsonMessage outgoingMessage;
2534

26-
private CommunicationTask task;
27-
private FutureResponseContext futureResponseContext;
35+
@Setter private FutureResponseContext futureResponseContext;
36+
37+
// for incoming responses to previously sent requests
38+
private Consumer<OcppJsonResult> resultHandler;
39+
private Consumer<OcppJsonError> errorHandler;
2840

2941
public boolean isSetOutgoingError() {
3042
return (outgoingMessage != null) && (outgoingMessage instanceof OcppJsonError);
3143
}
44+
45+
@SuppressWarnings("unchecked")
46+
public void createResultHandler(CommunicationTask task) {
47+
// TODO: not so sure about this
48+
resultHandler = result -> task.getHandler(chargeBoxId)
49+
.handleResponse(new DummyResponse(result.getPayload()));
50+
}
51+
52+
public void createErrorHandler(CommunicationTask task) {
53+
// TODO: not so sure about this
54+
errorHandler = result -> task.defaultCallback()
55+
.success(chargeBoxId, result);
56+
}
57+
58+
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
59+
private static class DummyResponse implements Response<ResponseType> {
60+
private final ResponseType payload;
61+
62+
@Override
63+
public Map<String, Object> getContext() {
64+
return null;
65+
}
66+
67+
@Override
68+
public boolean cancel(boolean mayInterruptIfRunning) {
69+
return false;
70+
}
71+
72+
@Override
73+
public boolean isCancelled() {
74+
return false;
75+
}
76+
77+
@Override
78+
public boolean isDone() {
79+
return true;
80+
}
81+
82+
@Override
83+
public ResponseType get() {
84+
return payload;
85+
}
86+
87+
@Override
88+
public ResponseType get(long timeout, TimeUnit unit) {
89+
return payload;
90+
}
91+
}
3292
}

src/main/java/de/rwth/idsg/steve/ocpp/ws/pipeline/Deserializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ private void handleResult(CommunicationContext context, String messageId, JsonPa
145145
result.setPayload(res);
146146

147147
context.setIncomingMessage(result);
148-
context.setTask(responseContext.getTask());
148+
context.createResultHandler(responseContext.getTask());
149149
}
150150

151151
/**
@@ -193,6 +193,6 @@ private void handleError(CommunicationContext context, String messageId, JsonPar
193193
error.setErrorDetails(details);
194194

195195
context.setIncomingMessage(error);
196-
context.setTask(responseContext.getTask());
196+
context.createErrorHandler(responseContext.getTask());
197197
}
198198
}
Lines changed: 4 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
package de.rwth.idsg.steve.ocpp.ws.pipeline;
22

3-
import de.rwth.idsg.steve.ocpp.ResponseType;
43
import de.rwth.idsg.steve.ocpp.ws.data.CommunicationContext;
54
import de.rwth.idsg.steve.ocpp.ws.data.OcppJsonCall;
65
import de.rwth.idsg.steve.ocpp.ws.data.OcppJsonError;
76
import de.rwth.idsg.steve.ocpp.ws.data.OcppJsonMessage;
87
import de.rwth.idsg.steve.ocpp.ws.data.OcppJsonResult;
9-
import lombok.AccessLevel;
108
import lombok.RequiredArgsConstructor;
119
import lombok.extern.slf4j.Slf4j;
1210

13-
import javax.xml.ws.Response;
14-
import java.util.Map;
15-
import java.util.concurrent.TimeUnit;
16-
1711
/**
1812
* For all incoming message types.
1913
*
@@ -28,7 +22,6 @@ public class IncomingPipeline extends AbstractPipeline {
2822
private final OutgoingPipeline outgoingPipeline;
2923

3024
@Override
31-
@SuppressWarnings("unchecked")
3225
public void process(CommunicationContext context) {
3326
deserializer.process(context);
3427

@@ -45,55 +38,13 @@ public void process(CommunicationContext context) {
4538
outgoingPipeline.process(context);
4639

4740
} else if (msg instanceof OcppJsonResult) {
48-
OcppJsonResult result = (OcppJsonResult) msg;
49-
50-
// TODO: not so sure about this
51-
context.getTask()
52-
.getHandler(context.getChargeBoxId())
53-
.handleResponse(new DummyResponse(result.getPayload()));
41+
context.getResultHandler()
42+
.accept((OcppJsonResult) msg);
5443

5544
} else if (msg instanceof OcppJsonError) {
56-
OcppJsonError result = (OcppJsonError) msg;
57-
58-
// TODO: not so sure about this
59-
context.getTask()
60-
.defaultCallback()
61-
.success(context.getChargeBoxId(), result);
45+
context.getErrorHandler()
46+
.accept((OcppJsonError) msg);
6247
}
6348
}
6449

65-
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
66-
private static class DummyResponse implements Response<ResponseType> {
67-
private final ResponseType payload;
68-
69-
@Override
70-
public Map<String, Object> getContext() {
71-
return null;
72-
}
73-
74-
@Override
75-
public boolean cancel(boolean mayInterruptIfRunning) {
76-
return false;
77-
}
78-
79-
@Override
80-
public boolean isCancelled() {
81-
return false;
82-
}
83-
84-
@Override
85-
public boolean isDone() {
86-
return true;
87-
}
88-
89-
@Override
90-
public ResponseType get() {
91-
return payload;
92-
}
93-
94-
@Override
95-
public ResponseType get(long timeout, TimeUnit unit) {
96-
return payload;
97-
}
98-
}
9950
}

0 commit comments

Comments
 (0)