Skip to content

Commit 90d92e5

Browse files
committed
Merge remote-tracking branch 'origin/issues/8_dsf_1_2_0' into develop
2 parents d462031 + 6053ffd commit 90d92e5

11 files changed

Lines changed: 431 additions & 240 deletions

File tree

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55

66
<groupId>dev.dsf</groupId>
77
<artifactId>dsf-process-ping-pong</artifactId>
8-
<version>1.0.0.0-SNAPSHOT</version>
8+
<version>1.0.1.0-SNAPSHOT</version>
99
<packaging>jar</packaging>
1010

1111
<properties>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1313
<compileSource>17</compileSource>
1414
<compileTarget>17</compileTarget>
1515

16-
<dsf.version>1.0.0</dsf.version>
16+
<dsf.version>1.2.0-RC1</dsf.version>
1717
<dsf.location>../dsf</dsf.location>
1818
</properties>
1919

src/main/java/dev/dsf/bpe/PingProcessPluginDefinition.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010

1111
public class PingProcessPluginDefinition implements ProcessPluginDefinition
1212
{
13-
public static final String VERSION = "1.0.0.0";
14-
public static final LocalDate RELEASE_DATE = LocalDate.of(2023, 5, 20);
13+
public static final String VERSION = "1.0.1.0";
14+
public static final LocalDate RELEASE_DATE = LocalDate.of(2023, 9, 5);
1515

1616
@Override
1717
public String getName()
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package dev.dsf.bpe.listener;
2+
3+
import java.util.Objects;
4+
5+
import org.camunda.bpm.engine.delegate.DelegateExecution;
6+
import org.camunda.bpm.engine.delegate.ExecutionListener;
7+
import org.springframework.beans.factory.InitializingBean;
8+
9+
import dev.dsf.bpe.v1.ProcessPluginApi;
10+
import dev.dsf.bpe.v1.constants.BpmnExecutionVariables;
11+
import dev.dsf.bpe.v1.variables.Target;
12+
import dev.dsf.bpe.v1.variables.Variables;
13+
14+
public class SetCorrelationKeyListener implements ExecutionListener, InitializingBean
15+
{
16+
private final ProcessPluginApi api;
17+
18+
public SetCorrelationKeyListener(ProcessPluginApi api)
19+
{
20+
this.api = api;
21+
}
22+
23+
@Override
24+
public void afterPropertiesSet() throws Exception
25+
{
26+
Objects.requireNonNull(api, "api");
27+
}
28+
29+
@Override
30+
public void notify(DelegateExecution execution) throws Exception
31+
{
32+
Variables variables = api.getVariables(execution);
33+
Target target = variables.getTarget();
34+
35+
execution.setVariableLocal(BpmnExecutionVariables.CORRELATION_KEY, target.getCorrelationKey());
36+
}
37+
}

src/main/java/dev/dsf/bpe/message/SendPing.java

Lines changed: 20 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package dev.dsf.bpe.message;
22

3-
import java.util.Objects;
43
import java.util.stream.Stream;
54

65
import org.camunda.bpm.engine.delegate.DelegateExecution;
@@ -11,35 +10,18 @@
1110
import org.hl7.fhir.r4.model.Task.ParameterComponent;
1211

1312
import dev.dsf.bpe.ConstantsPing;
14-
import dev.dsf.bpe.mail.ErrorMailService;
15-
import dev.dsf.bpe.util.PingStatusGenerator;
1613
import dev.dsf.bpe.v1.ProcessPluginApi;
1714
import dev.dsf.bpe.v1.activity.AbstractTaskMessageSend;
18-
import dev.dsf.bpe.v1.variables.Target;
1915
import dev.dsf.bpe.v1.variables.Variables;
2016
import jakarta.ws.rs.WebApplicationException;
2117
import jakarta.ws.rs.core.Response;
18+
import jakarta.ws.rs.core.Response.StatusType;
2219

2320
public class SendPing extends AbstractTaskMessageSend
2421
{
25-
private final PingStatusGenerator statusGenerator;
26-
private final ErrorMailService errorMailService;
27-
28-
public SendPing(ProcessPluginApi api, PingStatusGenerator statusGenerator, ErrorMailService errorMailService)
22+
public SendPing(ProcessPluginApi api)
2923
{
3024
super(api);
31-
32-
this.statusGenerator = statusGenerator;
33-
this.errorMailService = errorMailService;
34-
}
35-
36-
@Override
37-
public void afterPropertiesSet() throws Exception
38-
{
39-
super.afterPropertiesSet();
40-
41-
Objects.requireNonNull(statusGenerator, "statusGenerator");
42-
Objects.requireNonNull(errorMailService, "errorMailService");
4325
}
4426

4527
@Override
@@ -51,36 +33,17 @@ protected Stream<ParameterComponent> getAdditionalInputParameters(DelegateExecut
5133
}
5234

5335
@Override
54-
protected void handleSendTaskError(DelegateExecution execution, Variables variables, Exception exception,
55-
String errorMessage)
36+
protected void handleIntermediateThrowEventError(DelegateExecution execution, Variables variables,
37+
Exception exception, String errorMessage)
5638
{
57-
Target target = variables.getTarget();
58-
Task mainTask = variables.getStartTask();
59-
60-
if (mainTask != null)
61-
{
62-
String statusCode = ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_REACHABLE;
63-
if (exception instanceof WebApplicationException webApplicationException)
64-
{
65-
if (webApplicationException.getResponse() != null && webApplicationException.getResponse()
66-
.getStatus() == Response.Status.FORBIDDEN.getStatusCode())
67-
{
68-
statusCode = ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_ALLOWED;
69-
}
70-
}
71-
72-
String specialErrorMessage = createErrorMessage(exception);
73-
74-
mainTask.addOutput(statusGenerator.createPingStatusOutput(target, statusCode, specialErrorMessage));
75-
variables.updateTask(mainTask);
76-
77-
if (ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_REACHABLE.equals(statusCode))
78-
errorMailService.endpointNotReachableForPing(mainTask.getIdElement(), target, specialErrorMessage);
79-
else if (ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_ALLOWED.equals(statusCode))
80-
errorMailService.endpointReachablePingForbidden(mainTask.getIdElement(), target, specialErrorMessage);
81-
}
82-
83-
super.handleSendTaskError(execution, variables, exception, errorMessage);
39+
String statusCode = exception instanceof WebApplicationException w && w.getResponse() != null
40+
&& w.getResponse().getStatus() == Response.Status.FORBIDDEN.getStatusCode()
41+
? ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_ALLOWED
42+
: ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_REACHABLE;
43+
execution.setVariableLocal("statusCode", statusCode);
44+
45+
String specialErrorMessage = createErrorMessage(exception);
46+
execution.setVariableLocal("errorMessage", specialErrorMessage);
8447
}
8548

8649
@Override
@@ -91,10 +54,14 @@ protected void addErrorMessage(Task task, String errorMessage)
9154

9255
private String createErrorMessage(Exception exception)
9356
{
94-
return exception.getClass().getSimpleName()
95-
+ ((exception.getMessage() != null && !exception.getMessage().isBlank())
96-
? (": " + exception.getMessage())
97-
: "");
57+
if (exception instanceof WebApplicationException w
58+
&& (exception.getMessage() == null || exception.getMessage().isBlank()))
59+
{
60+
StatusType statusInfo = w.getResponse().getStatusInfo();
61+
return statusInfo.getStatusCode() + " " + statusInfo.getReasonPhrase();
62+
}
63+
else
64+
return exception.getMessage();
9865
}
9966

10067
private Identifier getLocalEndpointIdentifier()

src/main/java/dev/dsf/bpe/message/SendPong.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import dev.dsf.bpe.v1.variables.Variables;
1515
import jakarta.ws.rs.WebApplicationException;
1616
import jakarta.ws.rs.core.Response;
17+
import jakarta.ws.rs.core.Response.StatusType;
1718

1819
public class SendPong extends AbstractTaskMessageSend
1920
{
@@ -58,16 +59,10 @@ protected void handleEndEventError(DelegateExecution execution, Variables variab
5859

5960
if (mainTask != null)
6061
{
61-
String statusCode = ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_REACHABLE;
62-
if (exception instanceof WebApplicationException)
63-
{
64-
WebApplicationException webApplicationException = (WebApplicationException) exception;
65-
if (webApplicationException.getResponse() != null && webApplicationException.getResponse()
66-
.getStatus() == Response.Status.FORBIDDEN.getStatusCode())
67-
{
68-
statusCode = ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_ALLOWED;
69-
}
70-
}
62+
String statusCode = exception instanceof WebApplicationException w && w.getResponse() != null
63+
&& w.getResponse().getStatus() == Response.Status.FORBIDDEN.getStatusCode()
64+
? ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_ALLOWED
65+
: ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_REACHABLE;
7166

7267
String specialErrorMessage = createErrorMessage(exception);
7368

@@ -85,9 +80,13 @@ else if (ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_NOT_ALLOWED.equals(statu
8580

8681
private String createErrorMessage(Exception exception)
8782
{
88-
return exception.getClass().getSimpleName()
89-
+ ((exception.getMessage() != null && !exception.getMessage().isBlank())
90-
? (": " + exception.getMessage())
91-
: "");
83+
if (exception instanceof WebApplicationException w
84+
&& (exception.getMessage() == null || exception.getMessage().isBlank()))
85+
{
86+
StatusType statusInfo = w.getResponse().getStatusInfo();
87+
return statusInfo.getStatusCode() + " " + statusInfo.getReasonPhrase();
88+
}
89+
else
90+
return exception.getMessage();
9291
}
9392
}
Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,34 @@
11
package dev.dsf.bpe.service;
22

3-
import java.util.Objects;
4-
53
import org.camunda.bpm.engine.delegate.BpmnError;
64
import org.camunda.bpm.engine.delegate.DelegateExecution;
7-
import org.hl7.fhir.r4.model.Task;
85
import org.slf4j.Logger;
96
import org.slf4j.LoggerFactory;
107

118
import dev.dsf.bpe.ConstantsPing;
12-
import dev.dsf.bpe.mail.ErrorMailService;
13-
import dev.dsf.bpe.util.PingStatusGenerator;
149
import dev.dsf.bpe.v1.ProcessPluginApi;
1510
import dev.dsf.bpe.v1.activity.AbstractServiceDelegate;
1611
import dev.dsf.bpe.v1.variables.Target;
17-
import dev.dsf.bpe.v1.variables.Targets;
1812
import dev.dsf.bpe.v1.variables.Variables;
1913

2014
public class LogNoResponse extends AbstractServiceDelegate
2115
{
2216
private static final Logger logger = LoggerFactory.getLogger(LogNoResponse.class);
2317

24-
private final PingStatusGenerator responseGenerator;
25-
private final ErrorMailService errorMailService;
26-
27-
public LogNoResponse(ProcessPluginApi api, PingStatusGenerator responseGenerator, ErrorMailService errorMailService)
18+
public LogNoResponse(ProcessPluginApi api)
2819
{
2920
super(api);
30-
31-
this.responseGenerator = responseGenerator;
32-
this.errorMailService = errorMailService;
3321
}
3422

35-
@Override
36-
public void afterPropertiesSet() throws Exception
37-
{
38-
super.afterPropertiesSet();
39-
40-
Objects.requireNonNull(responseGenerator, "responseGenerator");
41-
Objects.requireNonNull(errorMailService, "errorLogger");
42-
}
43-
44-
4523
@Override
4624
protected void doExecute(DelegateExecution execution, Variables variables) throws BpmnError, Exception
4725
{
48-
Task mainTask = variables.getStartTask();
49-
50-
Targets targets = variables.getTargets();
51-
targets.getEntries().forEach(t -> logAndAddResponseToTask(mainTask, t));
26+
Target target = variables.getTarget();
5227

53-
variables.updateTask(mainTask);
54-
}
55-
56-
private void logAndAddResponseToTask(Task task, Target target)
57-
{
5828
logger.warn("PONG from organization {} (endpoint {}) missing", target.getOrganizationIdentifierValue(),
5929
target.getEndpointIdentifierValue());
6030

61-
task.addOutput(responseGenerator.createPingStatusOutput(target,
62-
ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_PONG_MISSING));
63-
errorMailService.pongMessageNotReceived(task.getIdElement(), target);
31+
variables.setString("statusCode_" + target.getCorrelationKey(),
32+
ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_PONG_MISSING);
6433
}
6534
}
Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,26 @@
11
package dev.dsf.bpe.service;
22

3-
import java.util.Objects;
4-
53
import org.camunda.bpm.engine.delegate.BpmnError;
64
import org.camunda.bpm.engine.delegate.DelegateExecution;
7-
import org.hl7.fhir.r4.model.Task;
85
import org.slf4j.Logger;
96
import org.slf4j.LoggerFactory;
107

118
import dev.dsf.bpe.ConstantsPing;
12-
import dev.dsf.bpe.util.PingStatusGenerator;
139
import dev.dsf.bpe.v1.ProcessPluginApi;
1410
import dev.dsf.bpe.v1.activity.AbstractServiceDelegate;
1511
import dev.dsf.bpe.v1.variables.Target;
16-
import dev.dsf.bpe.v1.variables.Targets;
1712
import dev.dsf.bpe.v1.variables.Variables;
1813

1914
public class LogPong extends AbstractServiceDelegate
2015
{
2116
private static final Logger logger = LoggerFactory.getLogger(LogPong.class);
2217

23-
private final PingStatusGenerator responseGenerator;
24-
25-
public LogPong(ProcessPluginApi api, PingStatusGenerator responseGenerator)
18+
public LogPong(ProcessPluginApi api)
2619
{
2720
super(api);
2821

29-
this.responseGenerator = responseGenerator;
3022
}
3123

32-
@Override
33-
public void afterPropertiesSet() throws Exception
34-
{
35-
super.afterPropertiesSet();
36-
37-
Objects.requireNonNull(responseGenerator, "responseGenerator");
38-
}
39-
40-
4124
@Override
4225
protected void doExecute(DelegateExecution execution, Variables variables) throws BpmnError, Exception
4326
{
@@ -46,13 +29,8 @@ protected void doExecute(DelegateExecution execution, Variables variables) throw
4629
logger.info("PONG from {} (endpoint: {})", target.getOrganizationIdentifierValue(),
4730
target.getEndpointIdentifierValue());
4831

49-
Task mainTask = variables.getStartTask();
50-
mainTask.addOutput(responseGenerator.createPingStatusOutput(target,
51-
ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_PONG_RECEIVED));
52-
variables.updateTask(mainTask);
53-
54-
Targets targets = variables.getTargets();
55-
targets = targets.removeByEndpointIdentifierValue(target.getEndpointIdentifierValue());
56-
variables.setTargets(targets);
32+
execution.removeVariable("statusCode");
33+
variables.setString("statusCode_" + target.getCorrelationKey(),
34+
ConstantsPing.CODESYSTEM_DSF_PING_STATUS_VALUE_PONG_RECEIVED);
5735
}
5836
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package dev.dsf.bpe.service;
2+
3+
import org.camunda.bpm.engine.delegate.BpmnError;
4+
import org.camunda.bpm.engine.delegate.DelegateExecution;
5+
import org.slf4j.Logger;
6+
import org.slf4j.LoggerFactory;
7+
8+
import dev.dsf.bpe.v1.ProcessPluginApi;
9+
import dev.dsf.bpe.v1.activity.AbstractServiceDelegate;
10+
import dev.dsf.bpe.v1.variables.Target;
11+
import dev.dsf.bpe.v1.variables.Variables;
12+
13+
public class LogSendError extends AbstractServiceDelegate
14+
{
15+
private static final Logger logger = LoggerFactory.getLogger(LogSendError.class);
16+
17+
public LogSendError(ProcessPluginApi api)
18+
{
19+
super(api);
20+
}
21+
22+
@Override
23+
protected void doExecute(DelegateExecution execution, Variables variables) throws BpmnError, Exception
24+
{
25+
Target target = variables.getTarget();
26+
String statusCode = (String) execution.getVariableLocal("statusCode");
27+
String errorMessage = (String) execution.getVariableLocal("errorMessage");
28+
29+
logger.warn("Unable to send PING to {} (endpoint: {}): {}", target.getOrganizationIdentifierValue(),
30+
target.getEndpointIdentifierValue(), errorMessage);
31+
32+
variables.setString("statusCode_" + target.getCorrelationKey(), statusCode);
33+
variables.setString("errorMessage_" + target.getCorrelationKey(), errorMessage);
34+
}
35+
}

0 commit comments

Comments
 (0)