Skip to content

Commit fd9bca1

Browse files
committed
Merge remote-tracking branch 'origin/develop_2' into
issue/346_347_ProcessPluginDefinition_Access_-_BPMN_Activity_Beans
2 parents c5645c7 + 73c9979 commit fd9bca1

File tree

77 files changed

+1561
-931
lines changed

Some content is hidden

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

77 files changed

+1561
-931
lines changed

.gitignore

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ dsf-bpe/dsf-bpe-server-jetty/cert/*.key
2121
dsf-bpe/dsf-bpe-server-jetty/conf/config.properties
2222
dsf-bpe/dsf-bpe-server-jetty/docker/api/v1/*.jar
2323
dsf-bpe/dsf-bpe-server-jetty/docker/api/v2/*.jar
24-
dsf-bpe/dsf-bpe-server-jetty/docker/ca/*.pem
24+
dsf-bpe/dsf-bpe-server-jetty/docker/ca/client_ca_chains/*.crt
25+
dsf-bpe/dsf-bpe-server-jetty/docker/ca/server_root_cas/*.crt
2526
dsf-bpe/dsf-bpe-server-jetty/docker/dsf_bpe.jar
2627
dsf-bpe/dsf-bpe-server-jetty/docker/dsf_status_client.jar
2728
dsf-bpe/dsf-bpe-server-jetty/docker/lib/*.jar
@@ -32,8 +33,10 @@ dsf-bpe/dsf-bpe-server-jetty/ui
3233
###
3334
# dsf-docker ignore
3435
###
35-
dsf-docker/bpe_proxy/ca/*.pem
36-
dsf-docker/fhir_proxy/ca/*.pem
36+
dsf-docker/bpe_proxy/ca/client_ca_chains/*.crt
37+
dsf-docker/bpe_proxy/ca/client_issuing_cas/*.crt
38+
dsf-docker/fhir_proxy/ca/client_ca_chains/*.crt
39+
dsf-docker/fhir_proxy/ca/client_issuing_cas/*.crt
3740

3841
###
3942
# dsf-docker-test-setup ignores
@@ -98,25 +101,10 @@ dsf-fhir/dsf-fhir-server-jetty/cert/*.crt
98101
dsf-fhir/dsf-fhir-server-jetty/cert/*.key
99102
dsf-fhir/dsf-fhir-server-jetty/conf/bundle.xml
100103
dsf-fhir/dsf-fhir-server-jetty/conf/config.properties
101-
dsf-fhir/dsf-fhir-server-jetty/docker/ca/*.pem
104+
dsf-fhir/dsf-fhir-server-jetty/docker/ca/client_ca_chains/*.crt
105+
dsf-fhir/dsf-fhir-server-jetty/docker/ca/server_root_cas/*.crt
102106
dsf-fhir/dsf-fhir-server-jetty/docker/dsf_fhir.jar
103107
dsf-fhir/dsf-fhir-server-jetty/docker/dsf_status_client.jar
104108
dsf-fhir/dsf-fhir-server-jetty/docker/lib/*.jar
105109
dsf-fhir/dsf-fhir-server-jetty/ui
106-
dsf-fhir/dsf-fhir-validation/src/main/resources/fhir/bundle.xml
107-
108-
###
109-
# dsf-tools ignores
110-
###
111-
dsf-tools/dsf-tools-default-ca-files-generator/cert/*.pem
112-
113-
dsf-tools/dsf-tools-test-data-generator/bundle/*.xml
114-
115-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.pem
116-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.key
117-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.crt
118-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.csr
119-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.p12
120-
dsf-tools/dsf-tools-test-data-generator/cert/thumbprints.txt
121-
122-
dsf-tools/dsf-tools-test-data-generator/config/*.properties
110+
dsf-fhir/dsf-fhir-validation/src/main/resources/fhir/bundle.xml

dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,22 @@
6464

6565
<build>
6666
<plugins>
67+
<plugin>
68+
<groupId>org.apache.maven.plugins</groupId>
69+
<artifactId>maven-compiler-plugin</artifactId>
70+
<configuration>
71+
<testCompilerArgument>-proc:none</testCompilerArgument>
72+
</configuration>
73+
</plugin>
6774
<plugin>
6875
<groupId>org.apache.maven.plugins</groupId>
6976
<artifactId>maven-dependency-plugin</artifactId>
7077
<executions>
78+
<execution>
79+
<goals>
80+
<goal>properties</goal>
81+
</goals>
82+
</execution>
7183
<execution>
7284
<id>copy-api-v1-dependencies-to-docker</id>
7385
<phase>pre-integration-test</phase>
@@ -187,6 +199,13 @@
187199
</execution>
188200
</executions>
189201
</plugin>
202+
<plugin>
203+
<groupId>org.apache.maven.plugins</groupId>
204+
<artifactId>maven-surefire-plugin</artifactId>
205+
<configuration>
206+
<argLine>-javaagent:${org.mockito:mockito-core:jar}</argLine>
207+
</configuration>
208+
</plugin>
190209
<plugin>
191210
<groupId>org.apache.maven.plugins</groupId>
192211
<artifactId>maven-clean-plugin</artifactId>

dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/ProcessPluginApiFactory.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import dev.dsf.bpe.v2.service.DataLogger;
1414
import dev.dsf.bpe.v2.service.DsfClientProvider;
1515
import dev.dsf.bpe.v2.service.EndpointProvider;
16+
import dev.dsf.bpe.v2.service.FhirClientConfigProvider;
1617
import dev.dsf.bpe.v2.service.FhirClientProvider;
1718
import dev.dsf.bpe.v2.service.MailService;
1819
import dev.dsf.bpe.v2.service.MimeTypeService;
@@ -45,11 +46,11 @@ public ProcessPluginApi get()
4546
{
4647
return new ProcessPluginApiImpl(processPluginDefinition, fromParent(ProxyConfig.class),
4748
fromParent(EndpointProvider.class), fromParent(FhirContext.class), fromParent(DsfClientProvider.class),
48-
fromParent(FhirClientProvider.class), fromParent(OidcClientProvider.class),
49-
fromParent(MailService.class), fromParent(MimeTypeService.class), fromParent(ObjectMapper.class),
50-
fromParent(OrganizationProvider.class), fromParent(ProcessAuthorizationHelper.class),
51-
fromParent(QuestionnaireResponseHelper.class), fromParent(ReadAccessHelper.class),
52-
fromParent(TaskHelper.class), fromParent(CryptoService.class), fromParent(TargetProvider.class),
53-
fromParent(DataLogger.class));
49+
fromParent(FhirClientProvider.class), fromParent(FhirClientConfigProvider.class),
50+
fromParent(OidcClientProvider.class), fromParent(MailService.class), fromParent(MimeTypeService.class),
51+
fromParent(ObjectMapper.class), fromParent(OrganizationProvider.class),
52+
fromParent(ProcessAuthorizationHelper.class), fromParent(QuestionnaireResponseHelper.class),
53+
fromParent(ReadAccessHelper.class), fromParent(TaskHelper.class), fromParent(CryptoService.class),
54+
fromParent(TargetProvider.class), fromParent(DataLogger.class));
5455
}
5556
}

dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/ProcessPluginApiImpl.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import dev.dsf.bpe.v2.service.DataLogger;
1313
import dev.dsf.bpe.v2.service.DsfClientProvider;
1414
import dev.dsf.bpe.v2.service.EndpointProvider;
15+
import dev.dsf.bpe.v2.service.FhirClientConfigProvider;
1516
import dev.dsf.bpe.v2.service.FhirClientProvider;
1617
import dev.dsf.bpe.v2.service.MailService;
1718
import dev.dsf.bpe.v2.service.MimeTypeService;
@@ -31,6 +32,7 @@ public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
3132
private final FhirContext fhirContext;
3233
private final DsfClientProvider dsfClientProvider;
3334
private final FhirClientProvider fhirClientProvider;
35+
private final FhirClientConfigProvider fhirClientConfigProvider;
3436
private final OidcClientProvider oidcClientProvider;
3537
private final MailService mailService;
3638
private final MimeTypeService mimeTypeService;
@@ -46,8 +48,9 @@ public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
4648

4749
public ProcessPluginApiImpl(ProcessPluginDefinition processPluginDefinition, ProxyConfig proxyConfig,
4850
EndpointProvider endpointProvider, FhirContext fhirContext, DsfClientProvider dsfClientProvider,
49-
FhirClientProvider fhirClientProvider, OidcClientProvider oidcClientProvider, MailService mailService,
50-
MimeTypeService mimeTypeService, ObjectMapper objectMapper, OrganizationProvider organizationProvider,
51+
FhirClientProvider fhirClientProvider, FhirClientConfigProvider fhirClientConfigProvider,
52+
OidcClientProvider oidcClientProvider, MailService mailService, MimeTypeService mimeTypeService,
53+
ObjectMapper objectMapper, OrganizationProvider organizationProvider,
5154
ProcessAuthorizationHelper processAuthorizationHelper,
5255
QuestionnaireResponseHelper questionnaireResponseHelper, ReadAccessHelper readAccessHelper,
5356
TaskHelper taskHelper, CryptoService cryptoService, TargetProvider targetProvider, DataLogger dataLogger)
@@ -58,6 +61,7 @@ public ProcessPluginApiImpl(ProcessPluginDefinition processPluginDefinition, Pro
5861
this.fhirContext = fhirContext;
5962
this.dsfClientProvider = dsfClientProvider;
6063
this.fhirClientProvider = fhirClientProvider;
64+
this.fhirClientConfigProvider = fhirClientConfigProvider;
6165
this.oidcClientProvider = oidcClientProvider;
6266
this.mailService = mailService;
6367
this.mimeTypeService = mimeTypeService;
@@ -81,6 +85,7 @@ public void afterPropertiesSet() throws Exception
8185
Objects.requireNonNull(fhirContext, "fhirContext");
8286
Objects.requireNonNull(dsfClientProvider, "dsfClientProvider");
8387
Objects.requireNonNull(fhirClientProvider, "fhirClientProvider");
88+
Objects.requireNonNull(fhirClientConfigProvider, "fhirClientConfigProvider");
8489
Objects.requireNonNull(oidcClientProvider, "oidcClientProvider");
8590
Objects.requireNonNull(mailService, "mailService");
8691
Objects.requireNonNull(mimeTypeService, "mimeTypeService");
@@ -131,6 +136,12 @@ public FhirClientProvider getFhirClientProvider()
131136
return fhirClientProvider;
132137
}
133138

139+
@Override
140+
public FhirClientConfigProvider getFhirClientConfigProvider()
141+
{
142+
return fhirClientConfigProvider;
143+
}
144+
134145
@Override
135146
public OidcClientProvider getOidcClientProvider()
136147
{

dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/fhir/FhirClientFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ public int getConnectTimeout()
222222
}
223223

224224
@Override
225+
@Deprecated
225226
public ServerValidationModeEnum getServerValidationModeEnum()
226227
{
227228
return getServerValidationMode();
@@ -294,6 +295,7 @@ public void setProxyCredentials(String theUsername, String thePassword)
294295
}
295296

296297
@Override
298+
@Deprecated
297299
public void setServerValidationModeEnum(ServerValidationModeEnum theServerValidationMode)
298300
{
299301
throw notSupported();
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package dev.dsf.bpe.v2.service;
2+
3+
import java.io.ByteArrayInputStream;
4+
import java.io.ByteArrayOutputStream;
5+
import java.io.IOException;
6+
import java.security.KeyManagementException;
7+
import java.security.KeyStore;
8+
import java.security.KeyStoreException;
9+
import java.security.NoSuchAlgorithmException;
10+
import java.security.UnrecoverableKeyException;
11+
import java.security.cert.CertificateException;
12+
import java.util.HashMap;
13+
import java.util.Map;
14+
import java.util.Objects;
15+
import java.util.Optional;
16+
import java.util.UUID;
17+
import java.util.function.Function;
18+
import java.util.stream.Collectors;
19+
20+
import javax.net.ssl.SSLContext;
21+
22+
import org.springframework.beans.factory.InitializingBean;
23+
24+
import de.hsheilbronn.mi.utils.crypto.context.SSLContextFactory;
25+
import dev.dsf.bpe.v2.client.fhir.ClientConfig;
26+
import dev.dsf.bpe.v2.client.fhir.ClientConfigs;
27+
28+
public class FhirClientConfigProviderImpl implements FhirClientConfigProvider, InitializingBean
29+
{
30+
private final Map<String, ClientConfig> clientConfigsByFhirServerId = new HashMap<>();
31+
private final KeyStore defaultTrustStore;
32+
33+
public FhirClientConfigProviderImpl(KeyStore defaultTrustStore, ClientConfigs clientConfigs)
34+
{
35+
this.defaultTrustStore = defaultTrustStore;
36+
37+
if (clientConfigs != null)
38+
clientConfigsByFhirServerId.putAll(clientConfigs.getConfigs().stream()
39+
.collect(Collectors.toMap(ClientConfig::getFhirServerId, Function.identity())));
40+
}
41+
42+
@Override
43+
public void afterPropertiesSet() throws Exception
44+
{
45+
Objects.requireNonNull(defaultTrustStore, "defaultTrustStore");
46+
}
47+
48+
@Override
49+
public SSLContext createDefaultSslContext()
50+
{
51+
try
52+
{
53+
return SSLContextFactory.createSSLContext(defaultTrustStore);
54+
}
55+
catch (UnrecoverableKeyException | KeyManagementException | KeyStoreException | NoSuchAlgorithmException e)
56+
{
57+
throw new RuntimeException(e);
58+
}
59+
}
60+
61+
@Override
62+
public KeyStore createDefaultTrustStore()
63+
{
64+
try
65+
{
66+
char[] password = UUID.randomUUID().toString().toCharArray();
67+
ByteArrayOutputStream out = new ByteArrayOutputStream();
68+
defaultTrustStore.store(out, password);
69+
70+
KeyStore store = KeyStore.getInstance(defaultTrustStore.getType(), defaultTrustStore.getProvider());
71+
store.load(new ByteArrayInputStream(out.toByteArray()), password);
72+
73+
return store;
74+
}
75+
catch (KeyStoreException | NoSuchAlgorithmException | CertificateException | IOException e)
76+
{
77+
throw new RuntimeException(e);
78+
}
79+
}
80+
81+
@Override
82+
public Optional<ClientConfig> getClientConfig(String fhirServerId)
83+
{
84+
if (fhirServerId == null || fhirServerId.isBlank())
85+
return Optional.empty();
86+
87+
return Optional.ofNullable(clientConfigsByFhirServerId.get(fhirServerId));
88+
}
89+
}
Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,36 @@
22

33
import java.security.KeyStore;
44
import java.time.Duration;
5-
import java.util.Objects;
65
import java.util.Optional;
76
import java.util.function.Function;
87

9-
import org.springframework.beans.factory.InitializingBean;
8+
import javax.net.ssl.SSLContext;
109

11-
import ca.uhn.fhir.rest.client.api.IGenericClient;
1210
import dev.dsf.bpe.api.config.FhirClientConfig;
1311
import dev.dsf.bpe.v2.client.fhir.ClientConfig;
1412

15-
public class FhirClientProviderWithEndpointSupport implements FhirClientProvider, InitializingBean
13+
public class FhirClientConfigProviderWithEndpointSupport implements FhirClientConfigProvider
1614
{
1715
private final EndpointProvider endpointProvider;
18-
private final FhirClientProviderImpl delegate;
16+
private final FhirClientConfigProvider delegate;
1917

20-
public FhirClientProviderWithEndpointSupport(EndpointProvider endpointProvider, FhirClientProviderImpl delegate)
18+
public FhirClientConfigProviderWithEndpointSupport(EndpointProvider endpointProvider,
19+
FhirClientConfigProvider delegate)
2120
{
2221
this.endpointProvider = endpointProvider;
2322
this.delegate = delegate;
2423
}
2524

2625
@Override
27-
public void afterPropertiesSet() throws Exception
26+
public SSLContext createDefaultSslContext()
2827
{
29-
Objects.requireNonNull(endpointProvider, "endpointProvider");
30-
Objects.requireNonNull(delegate, "delegate");
28+
return delegate.createDefaultSslContext();
3129
}
3230

3331
@Override
34-
public Optional<IGenericClient> getClient(String fhirServerId)
32+
public KeyStore createDefaultTrustStore()
3533
{
36-
if (fhirServerId == null || fhirServerId.isBlank())
37-
return Optional.empty();
38-
else if (fhirServerId.startsWith("#"))
39-
return getClientConfig(fhirServerId).flatMap(delegate::getClient);
40-
else
41-
return delegate.getClient(fhirServerId);
34+
return delegate.createDefaultTrustStore();
4235
}
4336

4437
@Override

0 commit comments

Comments
 (0)