Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
8b16554
fixed typos in documentation annotations
hhund Nov 8, 2025
c340686
fixed default value "more then one character" limitation
hhund Nov 8, 2025
5ea91c9
added missing practitioner roles, modified display value (Member > User)
hhund Nov 8, 2025
1e9c1d1
fixed CodeSystem count (12 -> 15)
hhund Nov 8, 2025
8c72f17
added missing async search methods, DsfClients for non DSF servers
hhund Nov 11, 2025
e3bf70c
removed not blank check for default and example values
hhund Nov 11, 2025
ffb39df
DsfClient: Improved async search impl, refactored operations with retry
hhund Nov 11, 2025
c81cd19
organization-role preferred binding
hhund Nov 12, 2025
14c117b
Cache-Control no-store for GET of root URL
hhund Nov 15, 2025
841f905
improved async client: bundle unpacking, Retry-After header support
hhund Nov 16, 2025
bc62512
operaton version upgrade 1.0.0-rc-2 -> 1.0.0
hhund Nov 16, 2025
de89f52
removed not needed excludes
hhund Nov 16, 2025
ebbcdad
replaced occurrence of "camunda" with "engine" where possible
hhund Nov 17, 2025
dd3f656
code refactored, new sync and async methods to execute FHIR operations
hhund Nov 18, 2025
197c371
FHIR validator workaround for existing MII plugins
hhund Nov 18, 2025
607df7f
refactored code to reuse ScheduledExecutorService across clients
hhund Nov 18, 2025
c0af7b9
improved scheduler thread naming via custom ThreadFactory
hhund Nov 18, 2025
fb19375
Merge remote-tracking branch 'origin/develop_2' into
hhund Nov 18, 2025
600b2f4
renamed constant: EXPONENTIAL_BACKOFF -> TRUNCATED_EXPONENTIAL_BACKOFF
hhund Nov 18, 2025
a53c6b9
maven plugin and dependency version upgrades
hhund Nov 18, 2025
3e5f69c
refactored deprecated code
hhund Nov 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@

import ca.uhn.fhir.context.FhirContext;
import dev.dsf.bpe.v2.config.ProxyConfig;
import dev.dsf.bpe.v2.service.ClientConfigProvider;
import dev.dsf.bpe.v2.service.CompressionService;
import dev.dsf.bpe.v2.service.CryptoService;
import dev.dsf.bpe.v2.service.DataLogger;
import dev.dsf.bpe.v2.service.DsfClientProvider;
import dev.dsf.bpe.v2.service.EndpointProvider;
import dev.dsf.bpe.v2.service.FhirClientConfigProvider;
import dev.dsf.bpe.v2.service.FhirClientProvider;
import dev.dsf.bpe.v2.service.MailService;
import dev.dsf.bpe.v2.service.MimeTypeService;
Expand Down Expand Up @@ -63,12 +63,12 @@ public ProcessPluginApi get()
{
return new ProcessPluginApiImpl(processPluginDefinition, fromParent(ProxyConfig.class),
fromParent(EndpointProvider.class), fromParent(FhirContext.class), fromParent(DsfClientProvider.class),
fromParent(FhirClientProvider.class), fromParent(FhirClientConfigProvider.class),
fromParent(FhirClientProvider.class), fromParent(ClientConfigProvider.class),
fromParent(OidcClientProvider.class), fromParent(MailService.class), fromParent(MimeTypeService.class),
fromParent(ObjectMapper.class), fromParent(OrganizationProvider.class),
fromParent(ProcessAuthorizationHelper.class), fromParent(QuestionnaireResponseHelper.class),
fromParent(ReadAccessHelper.class), fromParent(TaskHelper.class), fromParent(CompressionService.class),
fromParent(CryptoService.class), fromParent(TargetProvider.class), fromParent(DataLogger.class),
fromParent(ValidationServiceProvider.class));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@

import ca.uhn.fhir.context.FhirContext;
import dev.dsf.bpe.v2.config.ProxyConfig;
import dev.dsf.bpe.v2.service.ClientConfigProvider;
import dev.dsf.bpe.v2.service.CompressionService;
import dev.dsf.bpe.v2.service.CryptoService;
import dev.dsf.bpe.v2.service.DataLogger;
import dev.dsf.bpe.v2.service.DsfClientProvider;
import dev.dsf.bpe.v2.service.EndpointProvider;
import dev.dsf.bpe.v2.service.FhirClientConfigProvider;
import dev.dsf.bpe.v2.service.FhirClientProvider;
import dev.dsf.bpe.v2.service.MailService;
import dev.dsf.bpe.v2.service.MimeTypeService;
Expand All @@ -49,7 +49,7 @@ public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
private final FhirContext fhirContext;
private final DsfClientProvider dsfClientProvider;
private final FhirClientProvider fhirClientProvider;
private final FhirClientConfigProvider fhirClientConfigProvider;
private final ClientConfigProvider fhirClientConfigProvider;
private final OidcClientProvider oidcClientProvider;
private final MailService mailService;
private final MimeTypeService mimeTypeService;
Expand All @@ -67,7 +67,7 @@ public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean

public ProcessPluginApiImpl(ProcessPluginDefinition processPluginDefinition, ProxyConfig proxyConfig,
EndpointProvider endpointProvider, FhirContext fhirContext, DsfClientProvider dsfClientProvider,
FhirClientProvider fhirClientProvider, FhirClientConfigProvider fhirClientConfigProvider,
FhirClientProvider fhirClientProvider, ClientConfigProvider fhirClientConfigProvider,
OidcClientProvider oidcClientProvider, MailService mailService, MimeTypeService mimeTypeService,
ObjectMapper objectMapper, OrganizationProvider organizationProvider,
ProcessAuthorizationHelper processAuthorizationHelper,
Expand Down Expand Up @@ -161,7 +161,7 @@ public FhirClientProvider getFhirClientProvider()
}

@Override
public FhirClientConfigProvider getFhirClientConfigProvider()
public ClientConfigProvider getFhirClientConfigProvider()
{
return fhirClientConfigProvider;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,20 @@ public abstract class AbstractDsfClientJerseyWithRetry

protected final DsfClientJersey delegate;
private final int nTimes;
private final Duration delay;
private final DelayStrategy delayStrategy;

protected AbstractDsfClientJerseyWithRetry(DsfClientJersey delegate, int nTimes, Duration delay)
protected AbstractDsfClientJerseyWithRetry(DsfClientJersey delegate, int nTimes, DelayStrategy delayStrategy)
{
this.delegate = delegate;
this.nTimes = nTimes;
this.delay = delay;
this.delayStrategy = delayStrategy;
}

protected final <R> R retry(Supplier<R> supplier)
{
RuntimeException caughtException = null;
Duration delay = delayStrategy.getFirstDelay();

for (int tryNumber = 0; tryNumber <= nTimes || nTimes == RetryClient.RETRY_FOREVER; tryNumber++)
{
try
Expand All @@ -63,8 +65,11 @@ else if (nTimes != RetryClient.RETRY_FOREVER)
{
if (tryNumber < nTimes || nTimes == RetryClient.RETRY_FOREVER)
{
logger.warn("Caught {} - {}; trying again in {}s{}", e.getClass(), e.getMessage(),
delay.toSeconds(),
if (tryNumber > 0)
delay = delayStrategy.getNextDelay(delay);

logger.warn("Caught {} - {}; trying again in {}{}", e.getClass(), e.getMessage(),
delay.toString(),
nTimes == RetryClient.RETRY_FOREVER ? " (retry " + (tryNumber + 1) + ")" : "");

try
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,24 @@
package dev.dsf.bpe.v2.client.dsf;

import java.io.InputStream;
import java.time.Duration;
import java.util.List;
import java.util.Map;

import org.hl7.fhir.r4.model.Binary;
import org.hl7.fhir.r4.model.Bundle;
import org.hl7.fhir.r4.model.CapabilityStatement;
import org.hl7.fhir.r4.model.IdType;
import org.hl7.fhir.r4.model.Parameters;
import org.hl7.fhir.r4.model.Resource;
import org.hl7.fhir.r4.model.StructureDefinition;

import jakarta.ws.rs.core.MediaType;

class BasicDsfClientWithRetryImpl extends AbstractDsfClientJerseyWithRetry implements BasicDsfClient
{
BasicDsfClientWithRetryImpl(DsfClientJersey delegate, int nTimes, Duration delay)
BasicDsfClientWithRetryImpl(DsfClientJersey delegate, int nTimes, DelayStrategy delayStrategy)
{
super(delegate, nTimes, delay);
super(delegate, nTimes, delayStrategy);
}

@Override
Expand Down Expand Up @@ -218,4 +218,31 @@ public Bundle history(Class<? extends Resource> resourceType, String id, int pag
{
return retry(() -> delegate.history(resourceType, id, page, count));
}

@Override
public <R extends Resource> R operation(String operationName, Parameters parameters, Class<R> returnType)
{
return retry(() -> delegate.operation(operationName, parameters, returnType));
}

@Override
public <R extends Resource, T extends Resource> R operation(Class<T> resourceType, String operationName,
Parameters parameters, Class<R> returnType)
{
return retry(() -> delegate.operation(resourceType, operationName, parameters, returnType));
}

@Override
public <R extends Resource, T extends Resource> R operation(Class<T> resourceType, String id, String operationName,
Parameters parameters, Class<R> returnType)
{
return retry(() -> delegate.operation(resourceType, id, operationName, parameters, returnType));
}

@Override
public <R extends Resource, T extends Resource> R operation(Class<T> resourceType, String id, String version,
String operationName, Parameters parameters, Class<R> returnType)
{
return retry(() -> delegate.operation(resourceType, id, version, operationName, parameters, returnType));
}
}
Loading
Loading