diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/ProcessPluginApiImpl.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/ProcessPluginApiImpl.java
index c4ca16ff6..8503b13e9 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/ProcessPluginApiImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/ProcessPluginApiImpl.java
@@ -18,7 +18,6 @@
import java.util.Objects;
import org.operaton.bpm.engine.delegate.DelegateExecution;
-import org.springframework.beans.factory.InitializingBean;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -35,7 +34,7 @@
import dev.dsf.fhir.authorization.process.ProcessAuthorizationHelper;
import dev.dsf.fhir.authorization.read.ReadAccessHelper;
-public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
+public class ProcessPluginApiImpl implements ProcessPluginApi
{
private final ProxyConfig proxyConfig;
private final EndpointProvider endpointProvider;
@@ -49,6 +48,30 @@ public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
private final ReadAccessHelper readAccessHelper;
private final TaskHelper taskHelper;
+ /**
+ * @param proxyConfig
+ * not null
+ * @param endpointProvider
+ * not null
+ * @param fhirContext
+ * not null
+ * @param fhirWebserviceClientProvider
+ * not null
+ * @param mailService
+ * not null
+ * @param objectMapper
+ * not null
+ * @param organizationProvider
+ * not null
+ * @param processAuthorizationHelper
+ * not null
+ * @param questionnaireResponseHelper
+ * not null
+ * @param readAccessHelper
+ * not null
+ * @param taskHelper
+ * not null
+ */
public ProcessPluginApiImpl(ProxyConfig proxyConfig, EndpointProvider endpointProvider, FhirContext fhirContext,
FhirWebserviceClientProvider fhirWebserviceClientProvider, MailService mailService,
ObjectMapper objectMapper, OrganizationProvider organizationProvider,
@@ -56,33 +79,19 @@ public ProcessPluginApiImpl(ProxyConfig proxyConfig, EndpointProvider endpointPr
QuestionnaireResponseHelper questionnaireResponseHelper, ReadAccessHelper readAccessHelper,
TaskHelper taskHelper)
{
- this.proxyConfig = proxyConfig;
- this.endpointProvider = endpointProvider;
- this.fhirContext = fhirContext;
- this.fhirWebserviceClientProvider = fhirWebserviceClientProvider;
- this.mailService = mailService;
- this.objectMapper = objectMapper;
- this.organizationProvider = organizationProvider;
- this.processAuthorizationHelper = processAuthorizationHelper;
+ this.proxyConfig = Objects.requireNonNull(proxyConfig, "proxyConfig");
+ this.endpointProvider = Objects.requireNonNull(endpointProvider, "endpointProvider");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.fhirWebserviceClientProvider = Objects.requireNonNull(fhirWebserviceClientProvider,
+ "fhirWebserviceClientProvider");
+ this.mailService = Objects.requireNonNull(mailService, "mailService");
+ this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper");
+ this.organizationProvider = Objects.requireNonNull(organizationProvider, "organizationProvider");
+ this.processAuthorizationHelper = Objects.requireNonNull(processAuthorizationHelper,
+ "processAuthorizationHelper");
this.questionnaireResponseHelper = questionnaireResponseHelper;
- this.readAccessHelper = readAccessHelper;
- this.taskHelper = taskHelper;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(proxyConfig, "proxyConfig");
- Objects.requireNonNull(endpointProvider, "endpointProvider");
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(fhirWebserviceClientProvider, "fhirWebserviceClientProvider");
- Objects.requireNonNull(mailService, "mailService");
- Objects.requireNonNull(objectMapper, "objectMapper");
- Objects.requireNonNull(organizationProvider, "organizationProvider");
- Objects.requireNonNull(processAuthorizationHelper, "processAuthorizationHelper");
- Objects.requireNonNull(questionnaireResponseHelper, "questionnaireResponseHelper");
- Objects.requireNonNull(readAccessHelper, "readAccessHelper");
- Objects.requireNonNull(taskHelper, "taskHelper");
+ this.readAccessHelper = Objects.requireNonNull(readAccessHelper, "readAccessHelper");
+ this.taskHelper = Objects.requireNonNull(taskHelper, "taskHelper");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/AbstractListener.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/AbstractListener.java
index 79b6070e7..e6338ded9 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/AbstractListener.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/AbstractListener.java
@@ -28,24 +28,22 @@
import org.hl7.fhir.r4.model.Task.ParameterComponent;
import org.operaton.bpm.engine.delegate.DelegateExecution;
import org.operaton.bpm.engine.delegate.ExecutionListener;
-import org.springframework.beans.factory.InitializingBean;
-public abstract class AbstractListener implements ExecutionListener, InitializingBean
+public abstract class AbstractListener implements ExecutionListener
{
private final String serverBaseUrl;
private final Function variablesFactory;
+ /**
+ * @param serverBaseUrl
+ * not null
+ * @param variablesFactory
+ * not null
+ */
public AbstractListener(String serverBaseUrl, Function variablesFactory)
{
- this.serverBaseUrl = serverBaseUrl;
- this.variablesFactory = variablesFactory;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
- Objects.requireNonNull(variablesFactory, "variablesFactory");
+ this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
+ this.variablesFactory = Objects.requireNonNull(variablesFactory, "variablesFactory");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/EndListener.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/EndListener.java
index 418d5b0d4..70c1af2c3 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/EndListener.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/EndListener.java
@@ -35,20 +35,21 @@ public class EndListener extends AbstractListener implements ExecutionListener
private final FhirWebserviceClientProvider fhirWebserviceClientProvider;
+ /**
+ * @param serverBaseUrl
+ * not null
+ * @param variablesFactory
+ * not null
+ * @param fhirWebserviceClientProvider
+ * not null
+ */
public EndListener(String serverBaseUrl, Function variablesFactory,
FhirWebserviceClientProvider fhirWebserviceClientProvider)
{
super(serverBaseUrl, variablesFactory);
- this.fhirWebserviceClientProvider = fhirWebserviceClientProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(fhirWebserviceClientProvider, "fhirWebserviceClientProvider");
+ this.fhirWebserviceClientProvider = Objects.requireNonNull(fhirWebserviceClientProvider,
+ "fhirWebserviceClientProvider");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/AbstractResourceProvider.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/AbstractResourceProvider.java
index 1b4ae1dd3..9f978a2dd 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/AbstractResourceProvider.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/AbstractResourceProvider.java
@@ -30,24 +30,22 @@
import org.hl7.fhir.r4.model.Coding;
import org.hl7.fhir.r4.model.Identifier;
import org.hl7.fhir.r4.model.Resource;
-import org.springframework.beans.factory.InitializingBean;
-public abstract class AbstractResourceProvider implements InitializingBean
+public abstract class AbstractResourceProvider
{
protected final FhirWebserviceClientProvider clientProvider;
protected final String localEndpointAddress;
+ /**
+ * @param clientProvider
+ * not null
+ * @param localEndpointAddress
+ * not null
+ */
public AbstractResourceProvider(FhirWebserviceClientProvider clientProvider, String localEndpointAddress)
{
- this.clientProvider = clientProvider;
- this.localEndpointAddress = localEndpointAddress;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(clientProvider, "clientProvider");
- Objects.requireNonNull(localEndpointAddress, "localEndpointAddress");
+ this.clientProvider = Objects.requireNonNull(clientProvider, "clientProvider");
+ this.localEndpointAddress = Objects.requireNonNull(localEndpointAddress, "localEndpointAddress");
}
protected final String toSearchParameter(Identifier identifier)
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/FhirWebserviceClientProviderImpl.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/FhirWebserviceClientProviderImpl.java
index 9ffaad377..ccb7f85f4 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/FhirWebserviceClientProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/FhirWebserviceClientProviderImpl.java
@@ -21,8 +21,6 @@
import java.util.Map;
import java.util.Objects;
-import org.springframework.beans.factory.InitializingBean;
-
import ca.uhn.fhir.context.FhirContext;
import dev.dsf.bpe.api.config.BpeProxyConfig;
import dev.dsf.bpe.api.service.BuildInfoProvider;
@@ -30,7 +28,7 @@
import dev.dsf.fhir.client.FhirWebserviceClientJersey;
import dev.dsf.fhir.service.ReferenceCleaner;
-public class FhirWebserviceClientProviderImpl implements FhirWebserviceClientProvider, InitializingBean
+public class FhirWebserviceClientProviderImpl implements FhirWebserviceClientProvider
{
private static final String USER_AGENT_VALUE = "DSF/";
@@ -55,47 +53,58 @@ public class FhirWebserviceClientProviderImpl implements FhirWebserviceClientPro
private final BpeProxyConfig proxyConfig;
private final BuildInfoProvider buildInfoProvider;
+ /**
+ * @param fhirContext
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param baseUrlLocal
+ * not null
+ * @param readTimeoutLocal
+ * not null, not negative, 0 represents infinity
+ * @param connectTimeoutLocal
+ * not null, not negative, 0 represents infinity
+ * @param logRequestsAndResponsesLocal
+ * @param trustStore
+ * not null
+ * @param keyStore
+ * not null
+ * @param keyStorePassword
+ * not null
+ * @param readTimeoutRemote
+ * not null, not negative, 0 represents infinity
+ * @param connectTimeoutRemote
+ * not null, not negative, 0 represents infinity
+ * @param logRequestsAndResponsesRemote
+ * @param proxyConfig
+ * not null
+ * @param buildInfoProvider
+ * not null
+ */
public FhirWebserviceClientProviderImpl(FhirContext fhirContext, ReferenceCleaner referenceCleaner,
String baseUrlLocal, Duration readTimeoutLocal, Duration connectTimeoutLocal,
boolean logRequestsAndResponsesLocal, KeyStore trustStore, KeyStore keyStore, char[] keyStorePassword,
Duration readTimeoutRemote, Duration connectTimeoutRemote, boolean logRequestsAndResponsesRemote,
BpeProxyConfig proxyConfig, BuildInfoProvider buildInfoProvider)
{
- this.fhirContext = fhirContext;
- this.referenceCleaner = referenceCleaner;
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
- this.baseUrlLocal = baseUrlLocal;
- this.readTimeoutLocal = readTimeoutLocal;
- this.connectTimeoutLocal = connectTimeoutLocal;
+ this.baseUrlLocal = Objects.requireNonNull(baseUrlLocal, "baseUrlLocal");
+ this.readTimeoutLocal = Objects.requireNonNull(readTimeoutLocal, "readTimeoutLocal");
+ this.connectTimeoutLocal = Objects.requireNonNull(connectTimeoutLocal, "connectTimeoutLocal");
this.logRequestsAndResponsesLocal = logRequestsAndResponsesLocal;
- this.trustStore = trustStore;
- this.keyStore = keyStore;
- this.keyStorePassword = keyStorePassword;
+ this.trustStore = Objects.requireNonNull(trustStore, "trustStore");
+ this.keyStore = Objects.requireNonNull(keyStore, "keyStore");
+ this.keyStorePassword = Objects.requireNonNull(keyStorePassword, "keyStorePassword");
- this.readTimeoutRemote = readTimeoutRemote;
- this.connectTimeoutRemote = connectTimeoutRemote;
+ this.readTimeoutRemote = Objects.requireNonNull(readTimeoutRemote, "readTimeoutRemote");
+ this.connectTimeoutRemote = Objects.requireNonNull(connectTimeoutRemote, "connectTimeoutRemote");
this.logRequestsAndResponsesRemote = logRequestsAndResponsesRemote;
- this.proxyConfig = proxyConfig;
- this.buildInfoProvider = buildInfoProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(referenceCleaner, "referenceCleaner");
- Objects.requireNonNull(baseUrlLocal, "baseUrlLocal");
- Objects.requireNonNull(readTimeoutLocal, "readTimeoutLocal");
- Objects.requireNonNull(connectTimeoutLocal, "connectTimeoutLocal");
- Objects.requireNonNull(trustStore, "trustStore");
- Objects.requireNonNull(keyStore, "keyStore");
- Objects.requireNonNull(keyStorePassword, "keyStorePassword");
- Objects.requireNonNull(readTimeoutRemote, "readTimeoutRemote");
- Objects.requireNonNull(connectTimeoutRemote, "connectTimeoutRemote");
- Objects.requireNonNull(proxyConfig, "proxyConfig");
- Objects.requireNonNull(buildInfoProvider, "buildInfoReader");
+ this.proxyConfig = Objects.requireNonNull(proxyConfig, "proxyConfig");
+ this.buildInfoProvider = Objects.requireNonNull(buildInfoProvider, "buildInfoProvider");
}
public String getLocalBaseUrl()
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/MailServiceImpl.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/MailServiceImpl.java
index a38c366ef..aa7bb54e1 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/MailServiceImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/service/MailServiceImpl.java
@@ -21,23 +21,19 @@
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
-import org.springframework.beans.factory.InitializingBean;
-
import dev.dsf.bpe.api.service.BpeMailService;
-public class MailServiceImpl implements MailService, InitializingBean
+public class MailServiceImpl implements MailService
{
private final BpeMailService delegate;
+ /**
+ * @param delegate
+ * not null
+ */
public MailServiceImpl(BpeMailService delegate)
{
- this.delegate = delegate;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(delegate, "delegate");
+ this.delegate = Objects.requireNonNull(delegate, "delegate");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/FhirResourceSerializer.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/FhirResourceSerializer.java
index 8aa5246a7..928c5543d 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/FhirResourceSerializer.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/FhirResourceSerializer.java
@@ -25,30 +25,27 @@
import org.operaton.bpm.engine.variable.impl.value.UntypedValueImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.parser.DataFormatException;
import ca.uhn.fhir.parser.IParser;
import dev.dsf.bpe.v1.variables.FhirResourceValues.FhirResourceValue;
-public class FhirResourceSerializer extends PrimitiveValueSerializer implements InitializingBean
+public class FhirResourceSerializer extends PrimitiveValueSerializer
{
private static final Logger logger = LoggerFactory.getLogger(FhirResourceSerializer.class);
private final FhirContext fhirContext;
+ /**
+ * @param fhirContext
+ * not null
+ */
public FhirResourceSerializer(FhirContext fhirContext)
{
super(FhirResourceValues.VALUE_TYPE);
- this.fhirContext = fhirContext;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(fhirContext, "fhirContext");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/FhirResourcesListSerializer.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/FhirResourcesListSerializer.java
index b7e8a2927..289496c0d 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/FhirResourcesListSerializer.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/FhirResourcesListSerializer.java
@@ -22,28 +22,24 @@
import org.operaton.bpm.engine.impl.variable.serializer.PrimitiveValueSerializer;
import org.operaton.bpm.engine.impl.variable.serializer.ValueFields;
import org.operaton.bpm.engine.variable.impl.value.UntypedValueImpl;
-import org.springframework.beans.factory.InitializingBean;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.dsf.bpe.v1.variables.FhirResourcesListValues.FhirResourcesListValue;
public class FhirResourcesListSerializer extends PrimitiveValueSerializer
- implements InitializingBean
{
private final ObjectMapper objectMapper;
+ /**
+ * @param objectMapper
+ * not null
+ */
public FhirResourcesListSerializer(ObjectMapper objectMapper)
{
super(FhirResourcesListValues.VALUE_TYPE);
- this.objectMapper = objectMapper;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(objectMapper, "objectMapper");
+ this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/TargetSerializer.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/TargetSerializer.java
index 9fad84ed2..ff204263c 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/TargetSerializer.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/TargetSerializer.java
@@ -21,28 +21,25 @@
import org.operaton.bpm.engine.impl.variable.serializer.PrimitiveValueSerializer;
import org.operaton.bpm.engine.impl.variable.serializer.ValueFields;
import org.operaton.bpm.engine.variable.impl.value.UntypedValueImpl;
-import org.springframework.beans.factory.InitializingBean;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.dsf.bpe.v1.variables.TargetValues.TargetValue;
-public class TargetSerializer extends PrimitiveValueSerializer implements InitializingBean
+public class TargetSerializer extends PrimitiveValueSerializer
{
private final ObjectMapper objectMapper;
+ /**
+ * @param objectMapper
+ * not null
+ */
public TargetSerializer(ObjectMapper objectMapper)
{
super(TargetValues.VALUE_TYPE);
- this.objectMapper = objectMapper;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(objectMapper, "objectMapper");
+ this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/TargetsSerializer.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/TargetsSerializer.java
index ccd88dfc0..69099d34e 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/TargetsSerializer.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/TargetsSerializer.java
@@ -21,28 +21,25 @@
import org.operaton.bpm.engine.impl.variable.serializer.PrimitiveValueSerializer;
import org.operaton.bpm.engine.impl.variable.serializer.ValueFields;
import org.operaton.bpm.engine.variable.impl.value.UntypedValueImpl;
-import org.springframework.beans.factory.InitializingBean;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.dsf.bpe.v1.variables.TargetsValues.TargetsValue;
-public class TargetsSerializer extends PrimitiveValueSerializer implements InitializingBean
+public class TargetsSerializer extends PrimitiveValueSerializer
{
private final ObjectMapper objectMapper;
+ /**
+ * @param objectMapper
+ * not null
+ */
public TargetsSerializer(ObjectMapper objectMapper)
{
super(TargetsValues.VALUE_TYPE);
- this.objectMapper = objectMapper;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(objectMapper, "objectMapper");
+ this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java
index 135bff724..be9437587 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java
@@ -52,6 +52,20 @@ public class AbstractJerseyClient
private final Client client;
private final String baseUrl;
+ /**
+ * @param baseUrl
+ * not null
+ * @param trustStore
+ * may be null
+ * @param keyStore
+ * may be null
+ * @param keyStorePassword
+ * may be null
+ * @param objectMapper
+ * may be null
+ * @param componentsToRegister
+ * may be null
+ */
public AbstractJerseyClient(String baseUrl, KeyStore trustStore, KeyStore keyStore, char[] keyStorePassword,
ObjectMapper objectMapper, Collection> componentsToRegister)
{
@@ -59,6 +73,33 @@ public AbstractJerseyClient(String baseUrl, KeyStore trustStore, KeyStore keySto
Duration.ZERO, Duration.ZERO, false, null);
}
+ /**
+ * @param baseUrl
+ * not null
+ * @param trustStore
+ * may be null
+ * @param keyStore
+ * may be null
+ * @param keyStorePassword
+ * may be null
+ * @param objectMapper
+ * may be null
+ * @param componentsToRegister
+ * may be null
+ * @param proxySchemeHostPort
+ * may be null
+ * @param proxyUserName
+ * may be null
+ * @param proxyPassword
+ * may be null
+ * @param connectTimeout
+ * not null, not negative, 0 represents infinity
+ * @param readTimeout
+ * not null, not negative, 0 represents infinity
+ * @param logRequestsAndResponses
+ * @param userAgentValue
+ * may be null
+ */
public AbstractJerseyClient(String baseUrl, KeyStore trustStore, KeyStore keyStore, char[] keyStorePassword,
ObjectMapper objectMapper, Collection> componentsToRegister, String proxySchemeHostPort,
String proxyUserName, char[] proxyPassword, Duration connectTimeout, Duration readTimeout,
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/client/FhirWebserviceClientJersey.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/client/FhirWebserviceClientJersey.java
index f25ede027..3e814928a 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/client/FhirWebserviceClientJersey.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/client/FhirWebserviceClientJersey.java
@@ -89,6 +89,35 @@ private static Class> getFhirClass(ResourceType type)
private final PreferReturnMinimalWithRetry preferReturnMinimal;
private final PreferReturnOutcomeWithRetry preferReturnOutcome;
+ /**
+ * @param baseUrl
+ * not null
+ * @param trustStore
+ * may be null
+ * @param keyStore
+ * may be null
+ * @param keyStorePassword
+ * may be null
+ * @param objectMapper
+ * may be null
+ * @param proxySchemeHostPort
+ * may be null
+ * @param proxyUserName
+ * may be null
+ * @param proxyPassword
+ * may be null
+ * @param connectTimeout
+ * not null, not negative, 0 represents infinity
+ * @param readTimeout
+ * not null, not negative, 0 represents infinity
+ * @param logRequestsAndResponses
+ * @param userAgentValue
+ * may be null
+ * @param fhirContext
+ * not null
+ * @param referenceCleaner
+ * not null
+ */
public FhirWebserviceClientJersey(String baseUrl, KeyStore trustStore, KeyStore keyStore, char[] keyStorePassword,
ObjectMapper objectMapper, String proxySchemeHostPort, String proxyUserName, char[] proxyPassword,
Duration connectTimeout, Duration readTimeout, boolean logRequestsAndResponses, String userAgentValue,
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/service/ReferenceCleanerImpl.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/service/ReferenceCleanerImpl.java
index 40592c058..2206ff6f1 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/service/ReferenceCleanerImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/fhir/service/ReferenceCleanerImpl.java
@@ -25,23 +25,20 @@
import org.hl7.fhir.r4.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
-public class ReferenceCleanerImpl implements ReferenceCleaner, InitializingBean
+public class ReferenceCleanerImpl implements ReferenceCleaner
{
private static final Logger logger = LoggerFactory.getLogger(ReferenceCleanerImpl.class);
private final ReferenceExtractor referenceExtractor;
+ /**
+ * @param referenceExtractor
+ * not null
+ */
public ReferenceCleanerImpl(ReferenceExtractor referenceExtractor)
{
- this.referenceExtractor = referenceExtractor;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(referenceExtractor, "referenceExtractor");
+ this.referenceExtractor = Objects.requireNonNull(referenceExtractor, "referenceExtractor");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/AbstractServiceDelegate.java b/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/AbstractServiceDelegate.java
index 14945f276..5e9105feb 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/AbstractServiceDelegate.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/AbstractServiceDelegate.java
@@ -28,7 +28,6 @@
import org.operaton.bpm.engine.delegate.JavaDelegate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -50,7 +49,7 @@
*
* @see ProcessPluginDefinition#getSpringConfigurations()
*/
-public abstract class AbstractServiceDelegate implements JavaDelegate, InitializingBean
+public abstract class AbstractServiceDelegate implements JavaDelegate
{
private static final Logger logger = LoggerFactory.getLogger(AbstractServiceDelegate.class);
@@ -62,13 +61,7 @@ public abstract class AbstractServiceDelegate implements JavaDelegate, Initializ
*/
public AbstractServiceDelegate(ProcessPluginApi api)
{
- this.api = api;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(api, "api");
+ this.api = Objects.requireNonNull(api, "api");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/AbstractTaskMessageSend.java b/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/AbstractTaskMessageSend.java
index dfe03d0e3..c0122ae00 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/AbstractTaskMessageSend.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/AbstractTaskMessageSend.java
@@ -40,7 +40,6 @@
import org.operaton.bpm.model.bpmn.instance.SendTask;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -75,7 +74,7 @@
*
* @see ProcessPluginDefinition#getSpringConfigurations()
*/
-public abstract class AbstractTaskMessageSend implements JavaDelegate, InitializingBean
+public abstract class AbstractTaskMessageSend implements JavaDelegate
{
private static final Logger logger = LoggerFactory.getLogger(AbstractTaskMessageSend.class);
@@ -92,13 +91,7 @@ public abstract class AbstractTaskMessageSend implements JavaDelegate, Initializ
*/
public AbstractTaskMessageSend(ProcessPluginApi api)
{
- this.api = api;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(api, "api");
+ this.api = Objects.requireNonNull(api, "api");
}
/**
diff --git a/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/DefaultUserTaskListener.java b/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/DefaultUserTaskListener.java
index 04b9c7e49..c30e08a20 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/DefaultUserTaskListener.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1-operaton/src/main/java/dev/dsf/bpe/v1/activity/DefaultUserTaskListener.java
@@ -37,7 +37,6 @@
import org.operaton.bpm.engine.delegate.TaskListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import dev.dsf.bpe.v1.ProcessPluginApi;
@@ -56,7 +55,7 @@
* {@link QuestionnaireResponse}, extend this class, register it as a prototype {@link Bean} and specify the class name
* as a task listener with event type 'create' in the BPMN.
*/
-public class DefaultUserTaskListener implements TaskListener, InitializingBean
+public class DefaultUserTaskListener implements TaskListener
{
private static final Logger logger = LoggerFactory.getLogger(DefaultUserTaskListener.class);
@@ -68,13 +67,7 @@ public class DefaultUserTaskListener implements TaskListener, InitializingBean
*/
public DefaultUserTaskListener(ProcessPluginApi api)
{
- this.api = api;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(api, "api");
+ this.api = Objects.requireNonNull(api, "api");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/AbstractServiceDelegate.java b/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/AbstractServiceDelegate.java
index 125d8c95c..1f481519d 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/AbstractServiceDelegate.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/AbstractServiceDelegate.java
@@ -28,7 +28,6 @@
import org.hl7.fhir.r4.model.Task.TaskStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -50,7 +49,7 @@
*
* @see ProcessPluginDefinition#getSpringConfigurations()
*/
-public abstract class AbstractServiceDelegate implements JavaDelegate, InitializingBean
+public abstract class AbstractServiceDelegate implements JavaDelegate
{
private static final Logger logger = LoggerFactory.getLogger(AbstractServiceDelegate.class);
@@ -62,13 +61,7 @@ public abstract class AbstractServiceDelegate implements JavaDelegate, Initializ
*/
public AbstractServiceDelegate(ProcessPluginApi api)
{
- this.api = api;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(api, "api");
+ this.api = Objects.requireNonNull(api, "api");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/AbstractTaskMessageSend.java b/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/AbstractTaskMessageSend.java
index 7d562b8d9..8dad87b42 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/AbstractTaskMessageSend.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/AbstractTaskMessageSend.java
@@ -40,7 +40,6 @@
import org.hl7.fhir.r4.model.Task.TaskStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -75,7 +74,7 @@
*
* @see ProcessPluginDefinition#getSpringConfigurations()
*/
-public abstract class AbstractTaskMessageSend implements JavaDelegate, InitializingBean
+public abstract class AbstractTaskMessageSend implements JavaDelegate
{
private static final Logger logger = LoggerFactory.getLogger(AbstractTaskMessageSend.class);
@@ -92,13 +91,7 @@ public abstract class AbstractTaskMessageSend implements JavaDelegate, Initializ
*/
public AbstractTaskMessageSend(ProcessPluginApi api)
{
- this.api = api;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(api, "api");
+ this.api = Objects.requireNonNull(api, "api");
}
/**
diff --git a/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/DefaultUserTaskListener.java b/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/DefaultUserTaskListener.java
index 738e29b97..eadda10d2 100644
--- a/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/DefaultUserTaskListener.java
+++ b/dsf-bpe/dsf-bpe-process-api-v1/src/main/java/dev/dsf/bpe/v1/activity/DefaultUserTaskListener.java
@@ -37,7 +37,6 @@
import org.hl7.fhir.r4.model.Type;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import dev.dsf.bpe.v1.ProcessPluginApi;
@@ -56,7 +55,7 @@
* {@link QuestionnaireResponse}, extend this class, register it as a prototype {@link Bean} and specify the class name
* as a task listener with event type 'create' in the BPMN.
*/
-public class DefaultUserTaskListener implements TaskListener, InitializingBean
+public class DefaultUserTaskListener implements TaskListener
{
private static final Logger logger = LoggerFactory.getLogger(DefaultUserTaskListener.class);
@@ -68,13 +67,7 @@ public class DefaultUserTaskListener implements TaskListener, InitializingBean
*/
public DefaultUserTaskListener(ProcessPluginApi api)
{
- this.api = api;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(api, "api");
+ this.api = Objects.requireNonNull(api, "api");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/ProcessPluginApiImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/ProcessPluginApiImpl.java
index 62d20f43a..0d8971682 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/ProcessPluginApiImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/ProcessPluginApiImpl.java
@@ -17,8 +17,6 @@
import java.util.Objects;
-import org.springframework.beans.factory.InitializingBean;
-
import com.fasterxml.jackson.databind.ObjectMapper;
import ca.uhn.fhir.context.FhirContext;
@@ -41,7 +39,7 @@
import dev.dsf.bpe.v2.service.ValidationServiceProvider;
import dev.dsf.bpe.v2.service.process.ProcessAuthorizationHelper;
-public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
+public class ProcessPluginApiImpl implements ProcessPluginApi
{
private final ProcessPluginDefinition processPluginDefinition;
private final ProxyConfig proxyConfig;
@@ -65,6 +63,50 @@ public class ProcessPluginApiImpl implements ProcessPluginApi, InitializingBean
private final DataLogger dataLogger;
private final ValidationServiceProvider validationServiceProvider;
+ /**
+ * @param processPluginDefinition
+ * not null
+ * @param proxyConfig
+ * not null
+ * @param endpointProvider
+ * not null
+ * @param fhirContext
+ * not null
+ * @param dsfClientProvider
+ * not null
+ * @param fhirClientProvider
+ * not null
+ * @param fhirClientConfigProvider
+ * not null
+ * @param oidcClientProvider
+ * not null
+ * @param mailService
+ * not null
+ * @param mimeTypeService
+ * not null
+ * @param objectMapper
+ * not null
+ * @param organizationProvider
+ * not null
+ * @param processAuthorizationHelper
+ * not null
+ * @param questionnaireResponseHelper
+ * not null
+ * @param readAccessHelper
+ * not null
+ * @param taskHelper
+ * not null
+ * @param compressionService
+ * not null
+ * @param cryptoService
+ * not null
+ * @param targetProvider
+ * not null
+ * @param dataLogger
+ * not null
+ * @param validationServiceProvider
+ * not nullO
+ */
public ProcessPluginApiImpl(ProcessPluginDefinition processPluginDefinition, ProxyConfig proxyConfig,
EndpointProvider endpointProvider, FhirContext fhirContext, DsfClientProvider dsfClientProvider,
FhirClientProvider fhirClientProvider, ClientConfigProvider fhirClientConfigProvider,
@@ -75,53 +117,28 @@ public ProcessPluginApiImpl(ProcessPluginDefinition processPluginDefinition, Pro
TaskHelper taskHelper, CompressionService compressionService, CryptoService cryptoService,
TargetProvider targetProvider, DataLogger dataLogger, ValidationServiceProvider validationServiceProvider)
{
- this.processPluginDefinition = processPluginDefinition;
- this.proxyConfig = proxyConfig;
- this.endpointProvider = endpointProvider;
- this.fhirContext = fhirContext;
- this.dsfClientProvider = dsfClientProvider;
- this.fhirClientProvider = fhirClientProvider;
- this.fhirClientConfigProvider = fhirClientConfigProvider;
- this.oidcClientProvider = oidcClientProvider;
- this.mailService = mailService;
- this.mimeTypeService = mimeTypeService;
- this.objectMapper = objectMapper;
- this.organizationProvider = organizationProvider;
- this.processAuthorizationHelper = processAuthorizationHelper;
+ this.processPluginDefinition = Objects.requireNonNull(processPluginDefinition, "processPluginDefinition");
+ this.proxyConfig = Objects.requireNonNull(proxyConfig, "proxyConfig");
+ this.endpointProvider = Objects.requireNonNull(endpointProvider, "endpointProvider");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.dsfClientProvider = Objects.requireNonNull(dsfClientProvider, "dsfClientProvider");
+ this.fhirClientProvider = Objects.requireNonNull(fhirClientProvider, "fhirClientProvider");
+ this.fhirClientConfigProvider = Objects.requireNonNull(fhirClientConfigProvider, "fhirClientConfigProvider");
+ this.oidcClientProvider = Objects.requireNonNull(oidcClientProvider, "oidcClientProvider");
+ this.mailService = Objects.requireNonNull(mailService, "mailService");
+ this.mimeTypeService = Objects.requireNonNull(mimeTypeService, "mimeTypeService");
+ this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper");
+ this.organizationProvider = Objects.requireNonNull(organizationProvider, "organizationProvider");
+ this.processAuthorizationHelper = Objects.requireNonNull(processAuthorizationHelper,
+ "processAuthorizationHelper");
this.questionnaireResponseHelper = questionnaireResponseHelper;
- this.readAccessHelper = readAccessHelper;
- this.taskHelper = taskHelper;
- this.compressionService = compressionService;
- this.cryptoService = cryptoService;
- this.targetProvider = targetProvider;
- this.dataLogger = dataLogger;
- this.validationServiceProvider = validationServiceProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(processPluginDefinition, "processPluginDefinition");
- Objects.requireNonNull(proxyConfig, "proxyConfig");
- Objects.requireNonNull(endpointProvider, "endpointProvider");
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(dsfClientProvider, "dsfClientProvider");
- Objects.requireNonNull(fhirClientProvider, "fhirClientProvider");
- Objects.requireNonNull(fhirClientConfigProvider, "fhirClientConfigProvider");
- Objects.requireNonNull(oidcClientProvider, "oidcClientProvider");
- Objects.requireNonNull(mailService, "mailService");
- Objects.requireNonNull(mimeTypeService, "mimeTypeService");
- Objects.requireNonNull(objectMapper, "objectMapper");
- Objects.requireNonNull(organizationProvider, "organizationProvider");
- Objects.requireNonNull(processAuthorizationHelper, "processAuthorizationHelper");
- Objects.requireNonNull(questionnaireResponseHelper, "questionnaireResponseHelper");
- Objects.requireNonNull(readAccessHelper, "readAccessHelper");
- Objects.requireNonNull(taskHelper, "taskHelper");
- Objects.requireNonNull(compressionService, "compressionService");
- Objects.requireNonNull(cryptoService, "cryptoService");
- Objects.requireNonNull(targetProvider, "targetProvider");
- Objects.requireNonNull(dataLogger, "dataLogger");
- Objects.requireNonNull(validationServiceProvider, "validationServiceProvider");
+ this.readAccessHelper = Objects.requireNonNull(readAccessHelper, "readAccessHelper");
+ this.taskHelper = Objects.requireNonNull(taskHelper, "taskHelper");
+ this.compressionService = Objects.requireNonNull(compressionService, "compressionService");
+ this.cryptoService = Objects.requireNonNull(cryptoService, "cryptoService");
+ this.targetProvider = Objects.requireNonNull(targetProvider, "targetProvider");
+ this.dataLogger = Objects.requireNonNull(dataLogger, "dataLogger");
+ this.validationServiceProvider = Objects.requireNonNull(validationServiceProvider, "validationServiceProvider");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/ReferenceCleanerImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/ReferenceCleanerImpl.java
index 524487d0f..feae4b43a 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/ReferenceCleanerImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/client/dsf/ReferenceCleanerImpl.java
@@ -25,23 +25,20 @@
import org.hl7.fhir.r4.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
-public class ReferenceCleanerImpl implements ReferenceCleaner, InitializingBean
+public class ReferenceCleanerImpl implements ReferenceCleaner
{
private static final Logger logger = LoggerFactory.getLogger(ReferenceCleanerImpl.class);
private final ReferenceExtractor referenceExtractor;
+ /**
+ * @param referenceExtractor
+ * not null
+ */
public ReferenceCleanerImpl(ReferenceExtractor referenceExtractor)
{
- this.referenceExtractor = referenceExtractor;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(referenceExtractor, "referenceExtractor");
+ this.referenceExtractor = Objects.requireNonNull(referenceExtractor, "referenceExtractor");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/AbstractListener.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/AbstractListener.java
index 0db72fcce..137a266a6 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/AbstractListener.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/AbstractListener.java
@@ -28,24 +28,22 @@
import org.hl7.fhir.r4.model.Task.ParameterComponent;
import org.operaton.bpm.engine.delegate.DelegateExecution;
import org.operaton.bpm.engine.delegate.ExecutionListener;
-import org.springframework.beans.factory.InitializingBean;
-public abstract class AbstractListener implements ExecutionListener, InitializingBean
+public abstract class AbstractListener implements ExecutionListener
{
private final String serverBaseUrl;
private final Function variablesFactory;
+ /**
+ * @param serverBaseUrl
+ * not null
+ * @param variablesFactory
+ * not null
+ */
public AbstractListener(String serverBaseUrl, Function variablesFactory)
{
- this.serverBaseUrl = serverBaseUrl;
- this.variablesFactory = variablesFactory;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
- Objects.requireNonNull(variablesFactory, "variablesFactory");
+ this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
+ this.variablesFactory = Objects.requireNonNull(variablesFactory, "variablesFactory");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/EndListener.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/EndListener.java
index 87039edc7..6c341d1bc 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/EndListener.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/listener/EndListener.java
@@ -35,20 +35,20 @@ public class EndListener extends AbstractListener implements ExecutionListener
private final DsfClientProvider dsfClientProvider;
+ /**
+ * @param serverBaseUrl
+ * not null
+ * @param variablesFactory
+ * not null
+ * @param dsfClientProvider
+ * not null
+ */
public EndListener(String serverBaseUrl, Function variablesFactory,
DsfClientProvider dsfClientProvider)
{
super(serverBaseUrl, variablesFactory);
- this.dsfClientProvider = dsfClientProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(dsfClientProvider, "dsfClientProvider");
+ this.dsfClientProvider = Objects.requireNonNull(dsfClientProvider, "dsfClientProvider");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/AbstractResourceProvider.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/AbstractResourceProvider.java
index 9de0fc429..6868a99a5 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/AbstractResourceProvider.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/AbstractResourceProvider.java
@@ -33,26 +33,24 @@
import org.hl7.fhir.r4.model.Coding;
import org.hl7.fhir.r4.model.Identifier;
import org.hl7.fhir.r4.model.Resource;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.bpe.v2.client.dsf.DsfClient;
-public abstract class AbstractResourceProvider implements InitializingBean
+public abstract class AbstractResourceProvider
{
protected final Supplier localDsfClient;
protected final String localEndpointAddress;
+ /**
+ * @param localDsfClient
+ * not null
+ * @param localEndpointAddress
+ * not null
+ */
public AbstractResourceProvider(Supplier localDsfClient, String localEndpointAddress)
{
- this.localDsfClient = localDsfClient;
- this.localEndpointAddress = localEndpointAddress;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(localDsfClient, "localDsfClient");
- Objects.requireNonNull(localEndpointAddress, "localEndpointAddress");
+ this.localDsfClient = Objects.requireNonNull(localDsfClient, "localDsfClient");
+ this.localEndpointAddress = Objects.requireNonNull(localEndpointAddress, "localEndpointAddress");
}
protected final String toSearchParameter(Identifier identifier)
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/ClientConfigProviderImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/ClientConfigProviderImpl.java
index 7a35c7dee..f735a5a08 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/ClientConfigProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/ClientConfigProviderImpl.java
@@ -34,32 +34,30 @@
import javax.net.ssl.SSLContext;
-import org.springframework.beans.factory.InitializingBean;
-
import de.hsheilbronn.mi.utils.crypto.context.SSLContextFactory;
import dev.dsf.bpe.v2.client.fhir.ClientConfig;
import dev.dsf.bpe.v2.client.fhir.ClientConfigs;
-public class ClientConfigProviderImpl implements ClientConfigProvider, InitializingBean
+public class ClientConfigProviderImpl implements ClientConfigProvider
{
private final Map clientConfigsByFhirServerId = new HashMap<>();
private final KeyStore defaultTrustStore;
+ /**
+ * @param defaultTrustStore
+ * not null
+ * @param clientConfigs
+ * may be null
+ */
public ClientConfigProviderImpl(KeyStore defaultTrustStore, ClientConfigs clientConfigs)
{
- this.defaultTrustStore = defaultTrustStore;
+ this.defaultTrustStore = Objects.requireNonNull(defaultTrustStore, "defaultTrustStore");
if (clientConfigs != null)
clientConfigsByFhirServerId.putAll(clientConfigs.getConfigs().stream()
.collect(Collectors.toMap(ClientConfig::getFhirServerId, Function.identity())));
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(defaultTrustStore, "defaultTrustStore");
- }
-
@Override
public SSLContext createDefaultSslContext()
{
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/DsfClientProviderImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/DsfClientProviderImpl.java
index a22df0f38..89b0f0669 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/DsfClientProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/DsfClientProviderImpl.java
@@ -26,7 +26,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import dev.dsf.bpe.api.config.BpeProxyConfig;
@@ -37,7 +36,7 @@
import dev.dsf.bpe.v2.client.dsf.ReferenceCleaner;
import dev.dsf.bpe.v2.client.fhir.ClientConfig;
-public class DsfClientProviderImpl implements DsfClientProvider, InitializingBean, DisposableBean
+public class DsfClientProviderImpl implements DsfClientProvider, DisposableBean
{
private static final Logger logger = LoggerFactory.getLogger(DsfClientProviderImpl.class);
@@ -54,29 +53,33 @@ public class DsfClientProviderImpl implements DsfClientProvider, InitializingBea
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(8,
r -> new Thread(r, "dsf-client-async-scheduler"));
+ /**
+ * @param fhirContext
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param dsfClientConfig
+ * not null
+ * @param proxyConfig
+ * not null
+ * @param oidcClientProvider
+ * not null
+ * @param userAgent
+ * not null
+ * @param configProvider
+ * not null
+ */
public DsfClientProviderImpl(FhirContext fhirContext, ReferenceCleaner referenceCleaner,
DsfClientConfig dsfClientConfig, BpeProxyConfig proxyConfig, OidcClientProvider oidcClientProvider,
String userAgent, ClientConfigProvider configProvider)
{
- this.fhirContext = fhirContext;
- this.referenceCleaner = referenceCleaner;
- this.dsfClientConfig = dsfClientConfig;
- this.proxyConfig = proxyConfig;
- this.oidcClientProvider = oidcClientProvider;
- this.userAgent = userAgent;
- this.configProvider = configProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(referenceCleaner, "referenceCleaner");
- Objects.requireNonNull(dsfClientConfig, "dsfClientConfig");
- Objects.requireNonNull(proxyConfig, "proxyConfig");
- Objects.requireNonNull(oidcClientProvider, "oidcClientProvider");
- Objects.requireNonNull(userAgent, "userAgent");
- Objects.requireNonNull(configProvider, "configProvider");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
+ this.dsfClientConfig = Objects.requireNonNull(dsfClientConfig, "dsfClientConfig");
+ this.proxyConfig = Objects.requireNonNull(proxyConfig, "proxyConfig");
+ this.oidcClientProvider = Objects.requireNonNull(oidcClientProvider, "oidcClientProvider");
+ this.userAgent = Objects.requireNonNull(userAgent, "userAgent");
+ this.configProvider = Objects.requireNonNull(configProvider, "configProvider");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/FhirClientProviderImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/FhirClientProviderImpl.java
index 4573134bf..e5b0e1767 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/FhirClientProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/FhirClientProviderImpl.java
@@ -20,18 +20,14 @@
import java.util.Objects;
import java.util.Optional;
-import org.springframework.beans.factory.InitializingBean;
-
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.rest.client.api.IGenericClient;
import dev.dsf.bpe.v2.client.fhir.ClientConfig;
import dev.dsf.bpe.v2.client.fhir.FhirClientFactory;
-import dev.dsf.bpe.v2.config.ProxyConfig;
-public class FhirClientProviderImpl implements FhirClientProvider, InitializingBean
+public class FhirClientProviderImpl implements FhirClientProvider
{
private final FhirContext fhirContext;
- private final ProxyConfig proxyConfig;
private final OidcClientProvider oidcClientProvider;
private final String userAgent;
private final ClientConfigProvider configProvider;
@@ -41,8 +37,6 @@ public class FhirClientProviderImpl implements FhirClientProvider, InitializingB
/**
* @param fhirContext
* not null
- * @param proxyConfig
- * not null
* @param oidcClientProvider
* not null
* @param userAgent
@@ -50,24 +44,13 @@ public class FhirClientProviderImpl implements FhirClientProvider, InitializingB
* @param configProvider
* not null
*/
- public FhirClientProviderImpl(FhirContext fhirContext, ProxyConfig proxyConfig,
- OidcClientProvider oidcClientProvider, String userAgent, ClientConfigProvider configProvider)
- {
- this.fhirContext = fhirContext;
- this.proxyConfig = proxyConfig;
- this.oidcClientProvider = oidcClientProvider;
- this.userAgent = userAgent;
- this.configProvider = configProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
+ public FhirClientProviderImpl(FhirContext fhirContext, OidcClientProvider oidcClientProvider, String userAgent,
+ ClientConfigProvider configProvider)
{
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(proxyConfig, "proxyConfig");
- Objects.requireNonNull(oidcClientProvider, "oidcClientProvider");
- Objects.requireNonNull(userAgent, "userAgent");
- Objects.requireNonNull(configProvider, "configProvider");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.oidcClientProvider = Objects.requireNonNull(oidcClientProvider, "oidcClientProvider");
+ this.userAgent = Objects.requireNonNull(userAgent, "userAgent");
+ this.configProvider = Objects.requireNonNull(configProvider, "configProvider");
}
private Optional doGetById(ClientConfig clientConfig)
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/MailServiceDelegate.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/MailServiceDelegate.java
index 35cbfc83b..85befc0c9 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/MailServiceDelegate.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/MailServiceDelegate.java
@@ -21,23 +21,19 @@
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
-import org.springframework.beans.factory.InitializingBean;
-
import dev.dsf.bpe.api.service.BpeMailService;
-public class MailServiceDelegate implements MailService, InitializingBean
+public class MailServiceDelegate implements MailService
{
private final BpeMailService delegate;
+ /**
+ * @param delegate
+ * not null
+ */
public MailServiceDelegate(BpeMailService delegate)
{
- this.delegate = delegate;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(delegate, "delegate");
+ this.delegate = Objects.requireNonNull(delegate, "delegate");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/MimeTypeServiceImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/MimeTypeServiceImpl.java
index de32b3e31..0d799f37c 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/MimeTypeServiceImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/MimeTypeServiceImpl.java
@@ -23,21 +23,18 @@
import org.apache.tika.io.TikaInputStream;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.mime.MediaType;
-import org.springframework.beans.factory.InitializingBean;
-public class MimeTypeServiceImpl implements MimeTypeService, InitializingBean
+public class MimeTypeServiceImpl implements MimeTypeService
{
private final Detector detector;
+ /**
+ * @param detector
+ * not null
+ */
public MimeTypeServiceImpl(Detector detector)
{
- this.detector = detector;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(detector, "detector");
+ this.detector = Objects.requireNonNull(detector, "detector");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/ValidationServiceProviderImpl.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/ValidationServiceProviderImpl.java
index a00b23a1c..c69bfc0ab 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/ValidationServiceProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/service/ValidationServiceProviderImpl.java
@@ -24,30 +24,28 @@
import org.hl7.fhir.r4.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.validation.ValidationResult;
import dev.dsf.bpe.v2.service.validation.FhirPackageIdentifier;
import dev.dsf.bpe.v2.service.validation.ValidationService;
-public class ValidationServiceProviderImpl implements ValidationServiceProvider, InitializingBean
+public class ValidationServiceProviderImpl implements ValidationServiceProvider
{
private static final Logger logger = LoggerFactory.getLogger(ValidationServiceProviderImpl.class);
private final boolean enabled;
private final FhirContext fhirContext;
+ /**
+ * @param enabled
+ * @param fhirContext
+ * not null
+ */
public ValidationServiceProviderImpl(boolean enabled, FhirContext fhirContext)
{
this.enabled = enabled;
- this.fhirContext = fhirContext;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(fhirContext, "fhirContext");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/spring/ApiServiceConfig.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/spring/ApiServiceConfig.java
index 113633a14..6adbfa62b 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/spring/ApiServiceConfig.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/spring/ApiServiceConfig.java
@@ -169,8 +169,8 @@ public DsfClientProvider dsfClientProvider()
@Bean
public FhirClientProvider fhirClientProvider()
{
- return new FhirClientProviderImpl(fhirContext(), proxyConfigDelegate(), oidcClientProvider(),
- buildInfoProvider.getUserAgentValue(), fhirClientConfigProvider());
+ return new FhirClientProviderImpl(fhirContext(), oidcClientProvider(), buildInfoProvider.getUserAgentValue(),
+ fhirClientConfigProvider());
}
@Bean
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/FhirResourceSerializer.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/FhirResourceSerializer.java
index cd69c3851..5b5013051 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/FhirResourceSerializer.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/FhirResourceSerializer.java
@@ -28,29 +28,26 @@
import org.operaton.bpm.engine.variable.impl.value.UntypedValueImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.parser.IParser;
import dev.dsf.bpe.v2.variables.FhirResourceValues.FhirResourceValue;
-public class FhirResourceSerializer extends PrimitiveValueSerializer implements InitializingBean
+public class FhirResourceSerializer extends PrimitiveValueSerializer
{
private static final Logger logger = LoggerFactory.getLogger(FhirResourceSerializer.class);
private final FhirContext fhirContext;
+ /**
+ * @param fhirContext
+ * not null
+ */
public FhirResourceSerializer(FhirContext fhirContext)
{
super(FhirResourceValues.VALUE_TYPE);
- this.fhirContext = fhirContext;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(fhirContext, "fhirContext");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/FhirResourcesListSerializer.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/FhirResourcesListSerializer.java
index d991b03f9..04ab804f0 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/FhirResourcesListSerializer.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/FhirResourcesListSerializer.java
@@ -22,28 +22,24 @@
import org.operaton.bpm.engine.impl.variable.serializer.PrimitiveValueSerializer;
import org.operaton.bpm.engine.impl.variable.serializer.ValueFields;
import org.operaton.bpm.engine.variable.impl.value.UntypedValueImpl;
-import org.springframework.beans.factory.InitializingBean;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.dsf.bpe.v2.variables.FhirResourcesListValues.FhirResourcesListValue;
public class FhirResourcesListSerializer extends PrimitiveValueSerializer
- implements InitializingBean
{
private final ObjectMapper objectMapper;
+ /**
+ * @param objectMapper
+ * not null
+ */
public FhirResourcesListSerializer(ObjectMapper objectMapper)
{
super(FhirResourcesListValues.VALUE_TYPE);
- this.objectMapper = objectMapper;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(objectMapper, "objectMapper");
+ this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/TargetSerializer.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/TargetSerializer.java
index 3f1e3103a..0d8bba982 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/TargetSerializer.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/TargetSerializer.java
@@ -21,28 +21,25 @@
import org.operaton.bpm.engine.impl.variable.serializer.PrimitiveValueSerializer;
import org.operaton.bpm.engine.impl.variable.serializer.ValueFields;
import org.operaton.bpm.engine.variable.impl.value.UntypedValueImpl;
-import org.springframework.beans.factory.InitializingBean;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.dsf.bpe.v2.variables.TargetValues.TargetValue;
-public class TargetSerializer extends PrimitiveValueSerializer implements InitializingBean
+public class TargetSerializer extends PrimitiveValueSerializer
{
private final ObjectMapper objectMapper;
+ /**
+ * @param objectMapper
+ * not null
+ */
public TargetSerializer(ObjectMapper objectMapper)
{
super(TargetValues.VALUE_TYPE);
- this.objectMapper = objectMapper;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(objectMapper, "objectMapper");
+ this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/TargetsSerializer.java b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/TargetsSerializer.java
index b00dee3b4..852498fec 100644
--- a/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/TargetsSerializer.java
+++ b/dsf-bpe/dsf-bpe-process-api-v2-impl/src/main/java/dev/dsf/bpe/v2/variables/TargetsSerializer.java
@@ -21,28 +21,25 @@
import org.operaton.bpm.engine.impl.variable.serializer.PrimitiveValueSerializer;
import org.operaton.bpm.engine.impl.variable.serializer.ValueFields;
import org.operaton.bpm.engine.variable.impl.value.UntypedValueImpl;
-import org.springframework.beans.factory.InitializingBean;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import dev.dsf.bpe.v2.variables.TargetsValues.TargetsValue;
-public class TargetsSerializer extends PrimitiveValueSerializer implements InitializingBean
+public class TargetsSerializer extends PrimitiveValueSerializer
{
private final ObjectMapper objectMapper;
+ /**
+ * @param objectMapper
+ * not null
+ */
public TargetsSerializer(ObjectMapper objectMapper)
{
super(TargetsValues.VALUE_TYPE);
- this.objectMapper = objectMapper;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(objectMapper, "objectMapper");
+ this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/plugin/AbstractProcessPluginFactory.java b/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/plugin/AbstractProcessPluginFactory.java
index 4d6ffadca..a36d0ffaa 100644
--- a/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/plugin/AbstractProcessPluginFactory.java
+++ b/dsf-bpe/dsf-bpe-process-api/src/main/java/dev/dsf/bpe/api/plugin/AbstractProcessPluginFactory.java
@@ -28,11 +28,10 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
-public abstract class AbstractProcessPluginFactory implements ProcessPluginFactory, InitializingBean
+public abstract class AbstractProcessPluginFactory implements ProcessPluginFactory
{
private static final Logger logger = LoggerFactory.getLogger(AbstractProcessPluginFactory.class);
@@ -47,26 +46,30 @@ public abstract class AbstractProcessPluginFactory implements ProcessPluginFacto
protected final String serverBaseUrl;
private final Class> processPluginDefinitionType;
+ /**
+ * @param apiVersion
+ * @param apiClassLoader
+ * not null
+ * @param apiApplicationContext
+ * not null
+ * @param environment
+ * not null
+ * @param serverBaseUrl
+ * not null
+ * @param processPluginDefinitionType
+ * not null
+ */
public AbstractProcessPluginFactory(int apiVersion, ClassLoader apiClassLoader,
ApplicationContext apiApplicationContext, ConfigurableEnvironment environment, String serverBaseUrl,
Class> processPluginDefinitionType)
{
this.apiVersion = apiVersion;
- this.apiClassLoader = apiClassLoader;
- this.apiApplicationContext = apiApplicationContext;
- this.environment = environment;
- this.serverBaseUrl = serverBaseUrl;
- this.processPluginDefinitionType = processPluginDefinitionType;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(apiClassLoader, "apiClassLoader");
- Objects.requireNonNull(apiApplicationContext, "apiApplicationContext");
- Objects.requireNonNull(environment, "environment");
- Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
- Objects.requireNonNull(processPluginDefinitionType, "processPluginDefinitionType");
+ this.apiClassLoader = Objects.requireNonNull(apiClassLoader, "apiClassLoader");
+ this.apiApplicationContext = Objects.requireNonNull(apiApplicationContext, "apiApplicationContext");
+ this.environment = Objects.requireNonNull(environment, "environment");
+ this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
+ this.processPluginDefinitionType = Objects.requireNonNull(processPluginDefinitionType,
+ "processPluginDefinitionType");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/authentication/IdentityProviderImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/authentication/IdentityProviderImpl.java
index 6ec39be4a..1d9a5e80a 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/authentication/IdentityProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/authentication/IdentityProviderImpl.java
@@ -24,7 +24,6 @@
import org.hl7.fhir.r4.model.Practitioner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.bpe.service.LocalOrganizationAndEndpointProvider;
import dev.dsf.common.auth.conf.AbstractIdentityProvider;
@@ -34,27 +33,25 @@
import dev.dsf.common.auth.conf.RoleConfig;
import dev.dsf.common.auth.conf.X509CertificateWrapper;
-public class IdentityProviderImpl extends AbstractIdentityProvider
- implements IdentityProvider, InitializingBean
+public class IdentityProviderImpl extends AbstractIdentityProvider implements IdentityProvider
{
private static final Logger logger = LoggerFactory.getLogger(IdentityProviderImpl.class);
private final LocalOrganizationAndEndpointProvider organizationAndEndpointProvider;
+ /**
+ * @param roleConfig
+ * not null
+ * @param organizationAndEndpointProvider
+ * not null
+ */
public IdentityProviderImpl(RoleConfig roleConfig,
LocalOrganizationAndEndpointProvider organizationAndEndpointProvider)
{
super(roleConfig);
- this.organizationAndEndpointProvider = organizationAndEndpointProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(organizationAndEndpointProvider, "organizationAndEndpointProvider");
+ this.organizationAndEndpointProvider = Objects.requireNonNull(organizationAndEndpointProvider,
+ "organizationAndEndpointProvider");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/ClientProviderImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/ClientProviderImpl.java
index 75b61900c..2e2ef4e64 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/ClientProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/dsf/ClientProviderImpl.java
@@ -24,14 +24,13 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import dev.dsf.common.config.ProxyConfig;
import dev.dsf.fhir.client.WebsocketClient;
import dev.dsf.fhir.client.WebsocketClientTyrus;
-public class ClientProviderImpl implements ClientProvider, InitializingBean
+public class ClientProviderImpl implements ClientProvider
{
private static final Logger logger = LoggerFactory.getLogger(ClientProviderImpl.class);
@@ -53,6 +52,35 @@ public class ClientProviderImpl implements ClientProvider, InitializingBean
private final KeyStore webserviceKeyStore;
private final char[] webserviceKeyStorePassword;
+ /**
+ * @param fhirContext
+ * not null
+ * @param baseUrl
+ * not null
+ * @param readTimeout
+ * not null
+ * @param connectTimeout
+ * not null
+ * @param logRequestsAndResponses
+ * @param webserviceTrustStore
+ * not null
+ * @param webserviceKeyStore
+ * not null
+ * @param webserviceKeyStorePassword
+ * not null
+ * @param websocketUrl
+ * not null
+ * @param websocketTrustStore
+ * not null
+ * @param websocketKeyStore
+ * not null
+ * @param websocketKeyStorePassword
+ * not null
+ * @param proxyConfig
+ * not null
+ * @param userAgent
+ * not null
+ */
public ClientProviderImpl(FhirContext fhirContext, String baseUrl, Duration readTimeout, Duration connectTimeout,
boolean logRequestsAndResponses, KeyStore webserviceTrustStore, KeyStore webserviceKeyStore,
char[] webserviceKeyStorePassword, String websocketUrl, KeyStore websocketTrustStore,
@@ -65,18 +93,15 @@ public ClientProviderImpl(FhirContext fhirContext, String baseUrl, Duration read
Objects.requireNonNull(webserviceTrustStore, "webserviceTrustStore");
Objects.requireNonNull(webserviceKeyStore, "webserviceKeyStore");
Objects.requireNonNull(webserviceKeyStorePassword, "webserviceKeyStorePassword");
- Objects.requireNonNull(proxyConfig, "proxyConfig");
- Objects.requireNonNull(userAgent, "userAgent");
this.baseUrl = baseUrl;
- this.websocketUrl = websocketUrl;
- this.websocketTrustStore = websocketTrustStore;
- this.websocketKeyStore = websocketKeyStore;
- this.websocketKeyStorePassword = websocketKeyStorePassword;
-
- this.proxyConfig = proxyConfig;
- this.userAgent = userAgent;
+ this.websocketUrl = Objects.requireNonNull(websocketUrl, "websocketUrl");
+ this.websocketTrustStore = Objects.requireNonNull(websocketTrustStore, "websocketTrustStore");
+ this.websocketKeyStore = Objects.requireNonNull(websocketKeyStore, "websocketKeyStore");
+ this.websocketKeyStorePassword = Objects.requireNonNull(websocketKeyStorePassword, "websocketKeyStorePassword");
+ this.proxyConfig = Objects.requireNonNull(proxyConfig, "proxyConfig");
+ this.userAgent = Objects.requireNonNull(userAgent, "userAgent");
String proxyUrl = proxyConfig.isEnabled(baseUrl) ? proxyConfig.getUrl() : null;
String proxyUsername = proxyConfig.isEnabled(baseUrl) ? proxyConfig.getUsername() : null;
@@ -91,15 +116,6 @@ public ClientProviderImpl(FhirContext fhirContext, String baseUrl, Duration read
this.webserviceKeyStorePassword = webserviceKeyStorePassword;
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(websocketUrl, "websocketUrl");
- Objects.requireNonNull(websocketTrustStore, "websocketTrustStore");
- Objects.requireNonNull(websocketKeyStore, "websocketKeyStore");
- Objects.requireNonNull(websocketKeyStorePassword, "websocketKeyStorePassword");
- }
-
public String getBaseUrl()
{
return baseUrl;
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/oidc/OidcClientJersey.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/oidc/OidcClientJersey.java
index 7f96d9c16..918cb70e3 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/oidc/OidcClientJersey.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/oidc/OidcClientJersey.java
@@ -95,9 +95,9 @@ public class OidcClientJersey extends BaseOidcClientJersey
* @param userAgentValue
* may be null
* @param connectTimeout
- * not null
+ * not null, not negative, 0 represents infinity
* @param readTimeout
- * not null
+ * not null, not negative, 0 represents infinity
* @param logRequestsAndResponses
* @param notBeforeIssuedAtExpiresAtLeewaySeconds
* not null
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/oidc/OidcClientProviderImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/oidc/OidcClientProviderImpl.java
index 64e0ef210..c51cdc72f 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/oidc/OidcClientProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/client/oidc/OidcClientProviderImpl.java
@@ -20,14 +20,12 @@
import java.util.List;
import java.util.Objects;
-import org.springframework.beans.factory.InitializingBean;
-
import dev.dsf.bpe.api.client.oidc.OidcClient;
import dev.dsf.bpe.api.config.FhirClientConfig.OidcAuthentication;
import dev.dsf.bpe.api.service.BpeOidcClientProvider;
import dev.dsf.common.config.ProxyConfig;
-public class OidcClientProviderImpl implements BpeOidcClientProvider, InitializingBean
+public class OidcClientProviderImpl implements BpeOidcClientProvider
{
private final ProxyConfig proxyConfig;
private final String defaultDiscoveryPath;
@@ -43,51 +41,65 @@ public class OidcClientProviderImpl implements BpeOidcClientProvider, Initializi
private final Duration notBeforeIssuedAtExpiresAtLeeway;
private final boolean defaultVerifyAuthorizedParty;
+ /**
+ * @param proxyConfig
+ * not null
+ * @param defaultDiscoveryPath
+ * not null
+ * @param defaultConnectTimeout
+ * not null, not negative, 0 represents infinity
+ * @param defaultReadTimeout
+ * not null, not negative, 0 represents infinity
+ * @param defaultTrustedStore
+ * not null
+ * @param defaultEnableDebugLogging
+ * @param userAgent
+ * not null
+ * @param cacheEnabled
+ * @param cacheTimeoutConfigurationResource
+ * not null, not negative
+ * @param cacheTimeoutJwksResource
+ * not null, not negative
+ * @param cacheTimeoutAccessTokenBeforeExpiration
+ * not null, not negative
+ * @param notBeforeIssuedAtExpiresAtLeeway
+ * not null, not negative
+ * @param defaultVerifyAuthorizedParty
+ */
public OidcClientProviderImpl(ProxyConfig proxyConfig, String defaultDiscoveryPath, Duration defaultConnectTimeout,
Duration defaultReadTimeout, KeyStore defaultTrustedStore, boolean defaultEnableDebugLogging,
String userAgent, boolean cacheEnabled, Duration cacheTimeoutConfigurationResource,
Duration cacheTimeoutJwksResource, Duration cacheTimeoutAccessTokenBeforeExpiration,
Duration notBeforeIssuedAtExpiresAtLeeway, boolean defaultVerifyAuthorizedParty)
{
- this.proxyConfig = proxyConfig;
- this.defaultDiscoveryPath = defaultDiscoveryPath;
- this.defaultConnectTimeout = defaultConnectTimeout;
- this.defaultReadTimeout = defaultReadTimeout;
- this.defaultTrustedStore = defaultTrustedStore;
+ this.proxyConfig = Objects.requireNonNull(proxyConfig, "proxyConfig");
+ this.defaultDiscoveryPath = Objects.requireNonNull(defaultDiscoveryPath, "defaultDiscoveryPath");
+ this.defaultConnectTimeout = Objects.requireNonNull(defaultConnectTimeout, "defaultConnectTimeout");
+ if (defaultConnectTimeout.isNegative())
+ throw new IllegalArgumentException("defaultConnectTimeout negative");
+ this.defaultReadTimeout = Objects.requireNonNull(defaultReadTimeout, "defaultReadTimeout");
+ if (defaultReadTimeout.isNegative())
+ throw new IllegalArgumentException("defaultReadTimeout negative");
+ this.defaultTrustedStore = Objects.requireNonNull(defaultTrustedStore, "defaultTrustedStore");
this.defaultEnableDebugLogging = defaultEnableDebugLogging;
- this.userAgent = userAgent;
+ this.userAgent = Objects.requireNonNull(userAgent, "userAgent");
this.cacheEnabled = cacheEnabled;
- this.cacheTimeoutConfigurationResource = cacheTimeoutConfigurationResource;
- this.cacheTimeoutJwksResource = cacheTimeoutJwksResource;
- this.cacheTimeoutAccessTokenBeforeExpiration = cacheTimeoutAccessTokenBeforeExpiration;
- this.notBeforeIssuedAtExpiresAtLeeway = notBeforeIssuedAtExpiresAtLeeway;
- this.defaultVerifyAuthorizedParty = defaultVerifyAuthorizedParty;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(proxyConfig, "proxyConfig");
- Objects.requireNonNull(defaultConnectTimeout, "defaultConnectTimeout");
- Objects.requireNonNull(defaultReadTimeout, "defaultReadTimeout");
- Objects.requireNonNull(defaultTrustedStore, "defaultTrustedStore");
- Objects.requireNonNull(userAgent, "userAgent");
-
- Objects.requireNonNull(cacheTimeoutConfigurationResource, "cacheTimeoutConfigurationResource");
+ this.cacheTimeoutConfigurationResource = Objects.requireNonNull(cacheTimeoutConfigurationResource,
+ "cacheTimeoutConfigurationResource");
if (cacheTimeoutConfigurationResource.isNegative())
throw new IllegalArgumentException("cacheTimeoutConfigurationResource negative");
-
- Objects.requireNonNull(cacheTimeoutJwksResource, "cacheTimeoutJwksResource");
+ this.cacheTimeoutJwksResource = Objects.requireNonNull(cacheTimeoutJwksResource, "cacheTimeoutJwksResource");
if (cacheTimeoutJwksResource.isNegative())
throw new IllegalArgumentException("cacheTimeoutJwksResource negative");
-
- Objects.requireNonNull(cacheTimeoutAccessTokenBeforeExpiration, "cacheTimeoutAccessTokenBeforeExpiration");
+ this.cacheTimeoutAccessTokenBeforeExpiration = Objects.requireNonNull(cacheTimeoutAccessTokenBeforeExpiration,
+ "cacheTimeoutAccessTokenBeforeExpiration");
if (cacheTimeoutAccessTokenBeforeExpiration.isNegative())
throw new IllegalArgumentException("cacheTimeoutAccessTokenBeforeExpiration negative");
-
- Objects.requireNonNull(notBeforeIssuedAtExpiresAtLeeway, "notBeforeIssuedAtExpiresAtLeeway");
+ this.notBeforeIssuedAtExpiresAtLeeway = Objects.requireNonNull(notBeforeIssuedAtExpiresAtLeeway,
+ "notBeforeIssuedAtExpiresAtLeeway");
if (notBeforeIssuedAtExpiresAtLeeway.isNegative())
throw new IllegalArgumentException("notBeforeIssuedAtExpiresAtLeeway negative");
+ this.defaultVerifyAuthorizedParty = defaultVerifyAuthorizedParty;
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/config/FhirClientConfigYamlReaderImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/config/FhirClientConfigYamlReaderImpl.java
index ee612acc4..bdeaa3966 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/config/FhirClientConfigYamlReaderImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/config/FhirClientConfigYamlReaderImpl.java
@@ -28,8 +28,6 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import org.springframework.beans.factory.InitializingBean;
-
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
@@ -48,7 +46,7 @@
import dev.dsf.bpe.config.FhirClientConfigYaml.CertificateAuth;
import dev.dsf.bpe.config.FhirClientConfigYaml.OidcAuth;
-public class FhirClientConfigYamlReaderImpl implements InitializingBean, FhirClientConfigYamlReader
+public class FhirClientConfigYamlReaderImpl implements FhirClientConfigYamlReader
{
@FunctionalInterface
private static interface SupplierWithIOException
@@ -82,30 +80,36 @@ public IOException getCause()
private final String defaultOidcDiscoveryPath;
private final boolean defaultOidcVerifyAuthorizedParty;
+ /**
+ * @param defaultTestConnectionOnStartup
+ * not null
+ * @param defaultEnableDebugLogging
+ * not null
+ * @param defaultConnectTimeout
+ * not null
+ * @param defaultReadTimeout
+ * not null
+ * @param defaultTrustStore
+ * not null
+ * @param defaultOidcDiscoveryPath
+ * not null
+ * @param defaultOidcVerifyAuthorizedParty
+ */
public FhirClientConfigYamlReaderImpl(boolean defaultTestConnectionOnStartup, boolean defaultEnableDebugLogging,
Duration defaultConnectTimeout, Duration defaultReadTimeout, KeyStore defaultTrustStore,
String defaultOidcDiscoveryPath, boolean defaultOidcVerifyAuthorizedParty)
{
this.defaultTestConnectionOnStartup = defaultTestConnectionOnStartup;
this.defaultEnableDebugLogging = defaultEnableDebugLogging;
- this.defaultConnectTimeout = defaultConnectTimeout;
- this.defaultReadTimeout = defaultReadTimeout;
- this.defaultTrustStore = defaultTrustStore;
- this.defaultOidcDiscoveryPath = defaultOidcDiscoveryPath != null && !defaultOidcDiscoveryPath.startsWith("/")
- ? ("/" + defaultOidcDiscoveryPath)
+ this.defaultConnectTimeout = Objects.requireNonNull(defaultConnectTimeout, "defaultConnectTimeout");
+ this.defaultReadTimeout = Objects.requireNonNull(defaultReadTimeout, "defaultReadTimeout");
+ this.defaultTrustStore = Objects.requireNonNull(defaultTrustStore, "defaultTrustStore");
+ Objects.requireNonNull(defaultOidcDiscoveryPath, "defaultOidcDiscoveryPath");
+ this.defaultOidcDiscoveryPath = !defaultOidcDiscoveryPath.startsWith("/") ? ("/" + defaultOidcDiscoveryPath)
: defaultOidcDiscoveryPath;
this.defaultOidcVerifyAuthorizedParty = defaultOidcVerifyAuthorizedParty;
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(defaultConnectTimeout, "defaultConnectTimeout");
- Objects.requireNonNull(defaultReadTimeout, "defaultReadTimeout");
- Objects.requireNonNull(defaultTrustStore, "defaultTrustStore");
- Objects.requireNonNull(defaultOidcDiscoveryPath, "defaultOidcDiscoveryPath");
- }
-
@Override
public FhirClientConfigs readConfigs(String yaml) throws IOException, ConfigInvalidException
{
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/dao/AbstractDaoJdbc.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/dao/AbstractDaoJdbc.java
index 5a134bb4a..d8f7123d0 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/dao/AbstractDaoJdbc.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/dao/AbstractDaoJdbc.java
@@ -19,20 +19,16 @@
import javax.sql.DataSource;
-import org.springframework.beans.factory.InitializingBean;
-
-public abstract class AbstractDaoJdbc implements InitializingBean
+public abstract class AbstractDaoJdbc
{
protected final DataSource dataSource;
+ /**
+ * @param dataSource
+ * not null
+ */
public AbstractDaoJdbc(DataSource dataSource)
{
- this.dataSource = dataSource;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(dataSource, "dataSource");
+ this.dataSource = Objects.requireNonNull(dataSource, "dataSource");
}
}
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/dao/LastEventTimeDaoJdbc.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/dao/LastEventTimeDaoJdbc.java
index 36f003512..cb16197cc 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/dao/LastEventTimeDaoJdbc.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/dao/LastEventTimeDaoJdbc.java
@@ -27,25 +27,21 @@
import javax.sql.DataSource;
-import org.springframework.beans.factory.InitializingBean;
-
-public class LastEventTimeDaoJdbc extends AbstractDaoJdbc implements LastEventTimeDao, InitializingBean
+public class LastEventTimeDaoJdbc extends AbstractDaoJdbc implements LastEventTimeDao
{
private final String type;
+ /**
+ * @param dataSource
+ * not null
+ * @param type
+ * not null, not blank
+ */
public LastEventTimeDaoJdbc(DataSource dataSource, String type)
{
super(dataSource);
- this.type = type;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(type, "type");
+ this.type = Objects.requireNonNull(type, "type");
if (type.isBlank())
throw new IllegalArgumentException("type is blank");
}
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/engine/DelegateProviderImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/engine/DelegateProviderImpl.java
index 2609d7223..ace3e2754 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/engine/DelegateProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/engine/DelegateProviderImpl.java
@@ -44,38 +44,27 @@
import org.operaton.bpm.engine.impl.bpmn.parser.FieldDeclaration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.context.ApplicationContext;
import dev.dsf.bpe.api.Constants;
import dev.dsf.bpe.api.plugin.ProcessIdAndVersion;
import dev.dsf.bpe.api.plugin.ProcessPlugin;
import dev.dsf.bpe.client.dsf.WebserviceClient;
-public class DelegateProviderImpl implements DelegateProvider, InitializingBean
+public class DelegateProviderImpl implements DelegateProvider
{
private static final Logger logger = LoggerFactory.getLogger(DelegateProviderImpl.class);
- private final ClassLoader defaultClassLoader;
- private final ApplicationContext defaultApplicationContext;
private final WebserviceClient webserviceClient;
private final Map processPluginsByProcessIdAndVersion = new HashMap<>();
- public DelegateProviderImpl(ClassLoader mainClassLoader, ApplicationContext mainApplicationContext,
- WebserviceClient webserviceClient)
- {
- this.defaultClassLoader = mainClassLoader;
- this.defaultApplicationContext = mainApplicationContext;
- this.webserviceClient = webserviceClient;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
+ /**
+ * @param webserviceClient
+ * not null
+ */
+ public DelegateProviderImpl(WebserviceClient webserviceClient)
{
- Objects.requireNonNull(defaultClassLoader, "defaultClassLoader");
- Objects.requireNonNull(defaultApplicationContext, "defaultApplicationContext");
- Objects.requireNonNull(webserviceClient, "webserviceClient");
+ this.webserviceClient = Objects.requireNonNull(webserviceClient, "webserviceClient");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/health/WebsocketHealthCheck.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/health/WebsocketHealthCheck.java
new file mode 100644
index 000000000..955b0218c
--- /dev/null
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/health/WebsocketHealthCheck.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2018-2025 Heilbronn University of Applied Sciences
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dev.dsf.bpe.health;
+
+import java.util.Objects;
+
+import dev.dsf.bpe.subscription.LocalFhirConnector;
+import dev.dsf.common.status.health.HealthCheck;
+import dev.dsf.common.status.health.HealthStatus;
+
+public class WebsocketHealthCheck implements HealthCheck
+{
+ private final String component;
+ private final LocalFhirConnector connector;
+
+ /**
+ * @param component
+ * not null
+ * @param connector
+ * not null
+ */
+ public WebsocketHealthCheck(String component, LocalFhirConnector connector)
+ {
+ this.component = Objects.requireNonNull(component, "component");
+ this.connector = Objects.requireNonNull(connector, "connector");
+ }
+
+ @Override
+ public HealthStatus check()
+ {
+ boolean connected = connector.isConnected();
+
+ return new HealthStatus(component + " Websocket", connected, connected ? "Connected" : "Not connected");
+ }
+}
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/mail/SmtpMailService.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/mail/SmtpMailService.java
index 451a1fd53..5b82b424e 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/mail/SmtpMailService.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/mail/SmtpMailService.java
@@ -80,12 +80,11 @@
import org.bouncycastle.operator.OperatorCreationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import de.hsheilbronn.mi.utils.crypto.context.SSLContextFactory;
import dev.dsf.bpe.api.service.BpeMailService;
-public class SmtpMailService implements BpeMailService, InitializingBean
+public class SmtpMailService implements BpeMailService
{
private static final Logger logger = LoggerFactory.getLogger(SmtpMailService.class);
@@ -227,7 +226,7 @@ public SmtpMailService(String fromAddress, List toAddresses, String mail
/**
* @param fromAddress
- * not null
+ * not null, not blank
* @param toAddresses
* not null, at least one
* @param toAddressesCc
@@ -280,6 +279,11 @@ public SmtpMailService(String fromAddress, List toAddresses, List toInternetAddress(String fromAddress)
@@ -301,15 +305,6 @@ private Optional toInternetAddress(String fromAddress)
}
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- if (fromAddress == null)
- throw new IllegalArgumentException("no valid from address configured");
- if (toAddresses.length == 0)
- throw new IllegalArgumentException("no valid to addresses configured");
- }
-
private Session createSession(boolean useSmtps, String mailServerHostname, int mailServerPort,
String mailServerUsername, char[] mailServerPassword, KeyStore trustStore, KeyStore keyStore,
char[] keyStorePassword)
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/BpmnProcessStateChangeServiceImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/BpmnProcessStateChangeServiceImpl.java
index eea7327a9..19e4dc37a 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/BpmnProcessStateChangeServiceImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/BpmnProcessStateChangeServiceImpl.java
@@ -47,11 +47,21 @@ public class BpmnProcessStateChangeServiceImpl implements BpmnProcessStateChange
private final Set excluded = new HashSet<>();
private final Set retired = new HashSet<>();
+ /**
+ * @param repositoryService
+ * not null
+ * @param processStateDao
+ * not null
+ * @param excluded
+ * may be null
+ * @param retired
+ * may be null
+ */
public BpmnProcessStateChangeServiceImpl(RepositoryService repositoryService, ProcessStateDao processStateDao,
List excluded, List retired)
{
- this.repositoryService = repositoryService;
- this.processStateDao = processStateDao;
+ this.repositoryService = Objects.requireNonNull(repositoryService, "repositoryService");
+ this.processStateDao = Objects.requireNonNull(processStateDao, "processStateDao");
if (excluded != null)
this.excluded.addAll(excluded);
@@ -62,9 +72,6 @@ public BpmnProcessStateChangeServiceImpl(RepositoryService repositoryService, Pr
@Override
public void afterPropertiesSet() throws Exception
{
- Objects.requireNonNull(repositoryService, "repositoryService");
- Objects.requireNonNull(processStateDao, "processStateDao");
-
logger.info("Excluded processes: {}", excluded);
logger.info("Retired processes: {}", retired);
}
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/FhirResourceHandlerImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/FhirResourceHandlerImpl.java
index aa3fa4055..1b5d85308 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/FhirResourceHandlerImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/FhirResourceHandlerImpl.java
@@ -36,7 +36,6 @@
import org.hl7.fhir.r4.model.ResourceType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.parser.IParser;
@@ -46,7 +45,7 @@
import dev.dsf.bpe.client.dsf.WebserviceClient;
import dev.dsf.bpe.dao.ProcessPluginResourcesDao;
-public class FhirResourceHandlerImpl implements FhirResourceHandler, InitializingBean
+public class FhirResourceHandlerImpl implements FhirResourceHandler
{
private static final Logger logger = LoggerFactory.getLogger(FhirResourceHandlerImpl.class);
@@ -56,25 +55,28 @@ public class FhirResourceHandlerImpl implements FhirResourceHandler, Initializin
private final int fhirServerRequestMaxRetries;
private final Duration fhirServerRetryDelay;
+ /**
+ * @param localWebserviceClient
+ * not null
+ * @param dao
+ * not null
+ * @param fhirContext
+ * not null
+ * @param fhirServerRequestMaxRetries
+ * >= -1
+ * @param fhirServerRetryDelay
+ * not null
+ */
public FhirResourceHandlerImpl(WebserviceClient localWebserviceClient, ProcessPluginResourcesDao dao,
FhirContext fhirContext, int fhirServerRequestMaxRetries, Duration fhirServerRetryDelay)
{
- this.localWebserviceClient = localWebserviceClient;
- this.dao = dao;
- this.fhirContext = fhirContext;
- this.fhirServerRequestMaxRetries = fhirServerRequestMaxRetries;
- this.fhirServerRetryDelay = fhirServerRetryDelay;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(localWebserviceClient, "localWebserviceClient");
- Objects.requireNonNull(dao, "dao");
- Objects.requireNonNull(fhirContext, "fhirContext");
+ this.localWebserviceClient = Objects.requireNonNull(localWebserviceClient, "localWebserviceClient");
+ this.dao = Objects.requireNonNull(dao, "dao");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
if (fhirServerRequestMaxRetries < -1)
throw new IllegalArgumentException("fhirServerRequestMaxRetries < -1");
- Objects.requireNonNull(fhirServerRetryDelay, "fhirServerRetryDelay");
+ this.fhirServerRequestMaxRetries = fhirServerRequestMaxRetries;
+ this.fhirServerRetryDelay = Objects.requireNonNull(fhirServerRetryDelay, "fhirServerRetryDelay");
}
private PreferReturnMinimal minimalReturnRetryClient()
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginApiClassLoaderFactory.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginApiClassLoaderFactory.java
index 341fc2642..76c8e8fb1 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginApiClassLoaderFactory.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginApiClassLoaderFactory.java
@@ -35,9 +35,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
-public class ProcessPluginApiClassLoaderFactory implements InitializingBean
+public class ProcessPluginApiClassLoaderFactory
{
private static final Logger logger = LoggerFactory.getLogger(ProcessPluginApiClassLoaderFactory.class);
@@ -51,10 +50,20 @@ public class ProcessPluginApiClassLoaderFactory implements InitializingBean
private final Map resourcesWithPriority = new HashMap<>();
private final Map allowedBpeResources = new HashMap<>();
+ /**
+ * @param apiClassPathBaseDirectory
+ * not null
+ * @param allowedBpeClasses
+ * may be null
+ * @param resourcesWithPriority
+ * may be null
+ * @param allowedBpeResources
+ * may be null
+ */
public ProcessPluginApiClassLoaderFactory(Path apiClassPathBaseDirectory, Map allowedBpeClasses,
Map resourcesWithPriority, Map allowedBpeResources)
{
- this.apiClassPathBaseDirectory = apiClassPathBaseDirectory;
+ this.apiClassPathBaseDirectory = Objects.requireNonNull(apiClassPathBaseDirectory, "apiClassPathBaseDirectory");
if (allowedBpeClasses != null)
this.allowedBpeClasses.putAll(allowedBpeClasses);
@@ -64,13 +73,6 @@ public ProcessPluginApiClassLoaderFactory(Path apiClassPathBaseDirectory, Map getApiClassPath(int apiVersion)
{
Path apiClassPathDirectory = apiClassPathBaseDirectory.resolve("v" + apiVersion);
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginApiFactory.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginApiFactory.java
index 95b0b7ad9..036743827 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginApiFactory.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginApiFactory.java
@@ -24,7 +24,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
@@ -40,7 +39,7 @@
import dev.dsf.bpe.api.service.BpeOidcClientProvider;
import dev.dsf.bpe.api.service.BuildInfoProvider;
-public class ProcessPluginApiFactory implements InitializingBean
+public class ProcessPluginApiFactory
{
private static final Logger logger = LoggerFactory.getLogger(ProcessPluginApiFactory.class);
@@ -60,37 +59,44 @@ public class ProcessPluginApiFactory implements InitializingBean
private final ProcessPluginApiClassLoaderFactory classLoaderFactory;
private final String serverBaseUrl;
+ /**
+ * @param environment
+ * not null
+ * @param dsfClientConfig
+ * not null
+ * @param fhirClientConfigs
+ * not null
+ * @param bpeProxyConfig
+ * not null
+ * @param fhirValidationConfig
+ * not null
+ * @param buildInfoProvider
+ * not null
+ * @param bpeMailService
+ * not null
+ * @param bpeOidcClientProvider
+ * not null
+ * @param classLoaderFactory
+ * not null
+ * @param serverBaseUrl
+ * not null
+ */
public ProcessPluginApiFactory(ConfigurableEnvironment environment, DsfClientConfig dsfClientConfig,
FhirClientConfigs fhirClientConfigs, BpeProxyConfig bpeProxyConfig,
FhirValidationConfig fhirValidationConfig, BuildInfoProvider buildInfoProvider,
BpeMailService bpeMailService, BpeOidcClientProvider bpeOidcClientProvider,
ProcessPluginApiClassLoaderFactory classLoaderFactory, String serverBaseUrl)
{
- this.environment = environment;
- this.dsfClientConfig = dsfClientConfig;
- this.fhirClientConfigs = fhirClientConfigs;
- this.bpeProxyConfig = bpeProxyConfig;
- this.fhirValidationConfig = fhirValidationConfig;
- this.buildInfoProvider = buildInfoProvider;
- this.bpeMailService = bpeMailService;
- this.bpeOidcClientProvider = bpeOidcClientProvider;
- this.classLoaderFactory = classLoaderFactory;
- this.serverBaseUrl = serverBaseUrl;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(environment, "environment");
- Objects.requireNonNull(dsfClientConfig, "dsfClientConfig");
- Objects.requireNonNull(fhirClientConfigs, "fhirClientConfigs");
- Objects.requireNonNull(bpeProxyConfig, "bpeProxyConfig");
- Objects.requireNonNull(fhirValidationConfig, "fhirValidationConfig");
- Objects.requireNonNull(buildInfoProvider, "buildInfoProvider");
- Objects.requireNonNull(bpeMailService, "bpeMailService");
- Objects.requireNonNull(bpeOidcClientProvider, "bpeOidcClientProvider");
- Objects.requireNonNull(classLoaderFactory, "classLoaderFactory");
- Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
+ this.environment = Objects.requireNonNull(environment, "environment");
+ this.dsfClientConfig = Objects.requireNonNull(dsfClientConfig, "dsfClientConfig");
+ this.fhirClientConfigs = Objects.requireNonNull(fhirClientConfigs, "fhirClientConfigs");
+ this.bpeProxyConfig = Objects.requireNonNull(bpeProxyConfig, "bpeProxyConfig");
+ this.fhirValidationConfig = Objects.requireNonNull(fhirValidationConfig, "fhirValidationConfig");
+ this.buildInfoProvider = Objects.requireNonNull(buildInfoProvider, "buildInfoProvider");
+ this.bpeMailService = Objects.requireNonNull(bpeMailService, "bpeMailService");
+ this.bpeOidcClientProvider = Objects.requireNonNull(bpeOidcClientProvider, "bpeOidcClientProvider");
+ this.classLoaderFactory = Objects.requireNonNull(classLoaderFactory, "classLoaderFactory");
+ this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
}
public List initialize()
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginLoaderImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginLoaderImpl.java
index 1789a2daa..a090cf80e 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginLoaderImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginLoaderImpl.java
@@ -28,12 +28,11 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.bpe.api.plugin.ProcessPlugin;
import dev.dsf.bpe.api.plugin.ProcessPluginFactory;
-public class ProcessPluginLoaderImpl implements ProcessPluginLoader, InitializingBean
+public class ProcessPluginLoaderImpl implements ProcessPluginLoader
{
private static final Logger logger = LoggerFactory.getLogger(ProcessPluginLoaderImpl.class);
@@ -42,6 +41,14 @@ public class ProcessPluginLoaderImpl implements ProcessPluginLoader, Initializin
private final Path pluginDirectory;
private final List explodedPluginDirectories = new ArrayList<>();
+ /**
+ * @param processPluginFactories
+ * may be null
+ * @param pluginDirectory
+ * not null
+ * @param explodedPluginDirectories
+ * may be null
+ */
public ProcessPluginLoaderImpl(Collection extends ProcessPluginFactory> processPluginFactories,
Path pluginDirectory, Collection extends Path> explodedPluginDirectories)
{
@@ -51,17 +58,11 @@ public ProcessPluginLoaderImpl(Collection extends ProcessPluginFactory> proces
this.processPluginFactories.sort(Comparator.comparingInt(ProcessPluginFactory::getApiVersion).reversed());
}
- this.pluginDirectory = pluginDirectory;
+ this.pluginDirectory = Objects.requireNonNull(pluginDirectory, "pluginDirectory");
if (explodedPluginDirectories != null)
this.explodedPluginDirectories.addAll(explodedPluginDirectories);
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(pluginDirectory, "pluginDirectory");
- }
-
@Override
public List loadPlugins()
{
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginManagerImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginManagerImpl.java
index 2c67ac65b..2db4af328 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginManagerImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/plugin/ProcessPluginManagerImpl.java
@@ -39,7 +39,6 @@
import org.hl7.fhir.r4.model.Organization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.bpe.api.plugin.BpmnFileAndModel;
import dev.dsf.bpe.api.plugin.ProcessIdAndVersion;
@@ -48,7 +47,7 @@
import dev.dsf.bpe.client.dsf.WebserviceClient;
import dev.dsf.bpe.engine.ProcessPluginConsumer;
-public class ProcessPluginManagerImpl implements ProcessPluginManager, InitializingBean
+public class ProcessPluginManagerImpl implements ProcessPluginManager
{
private static final Logger logger = LoggerFactory.getLogger(ProcessPluginManagerImpl.class);
@@ -71,6 +70,24 @@ private static record ProcessByIdAndVersion(ProcessIdAndVersion idAndVersion, Pr
private Map pluginsByProcessIdAndVersion;
+ /**
+ * @param processPluginConsumers
+ * may be null
+ * @param processPluginLoader
+ * not null
+ * @param bpmnProcessStateChangeService
+ * not null
+ * @param fhirResourceHandler
+ * not null
+ * @param localEndpointAddress
+ * not null
+ * @param localWebserviceClient
+ * not null
+ * @param fhirServerRequestMaxRetries
+ * >= -1
+ * @param fhirServerRetryDelay
+ * not null
+ */
public ProcessPluginManagerImpl(List processPluginConsumers,
ProcessPluginLoader processPluginLoader, BpmnProcessStateChangeService bpmnProcessStateChangeService,
FhirResourceHandler fhirResourceHandler, String localEndpointAddress,
@@ -79,29 +96,17 @@ public ProcessPluginManagerImpl(List processPluginConsume
if (processPluginConsumers != null)
this.processPluginConsumers.addAll(processPluginConsumers);
- this.processPluginLoader = processPluginLoader;
- this.bpmnProcessStateChangeService = bpmnProcessStateChangeService;
- this.fhirResourceHandler = fhirResourceHandler;
-
- this.localEndpointAddress = localEndpointAddress;
- this.localWebserviceClient = localWebserviceClient;
- this.fhirServerRequestMaxRetries = fhirServerRequestMaxRetries;
- this.fhirServerRetryDelay = fhirServerRetryDelay;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(processPluginLoader, "processPluginLoader");
- Objects.requireNonNull(bpmnProcessStateChangeService, "bpmnProcessStateChangeService");
- Objects.requireNonNull(fhirResourceHandler, "fhirResourceHandler");
-
- Objects.requireNonNull(localEndpointAddress, "localEndpointAddress");
- Objects.requireNonNull(localWebserviceClient, "localWebserviceClient");
+ this.processPluginLoader = Objects.requireNonNull(processPluginLoader, "processPluginLoader");
+ this.bpmnProcessStateChangeService = Objects.requireNonNull(bpmnProcessStateChangeService,
+ "bpmnProcessStateChangeService");
+ this.fhirResourceHandler = Objects.requireNonNull(fhirResourceHandler, "fhirResourceHandler");
+ this.localEndpointAddress = Objects.requireNonNull(localEndpointAddress, "localEndpointAddress");
+ this.localWebserviceClient = Objects.requireNonNull(localWebserviceClient, "localWebserviceClient");
if (fhirServerRequestMaxRetries < -1)
throw new IllegalArgumentException("fhirServerRequestMaxRetries < -1");
- Objects.requireNonNull(fhirServerRetryDelay, "fhirServerRetryDelay");
+ this.fhirServerRequestMaxRetries = fhirServerRequestMaxRetries;
+ this.fhirServerRetryDelay = Objects.requireNonNull(fhirServerRetryDelay, "fhirServerRetryDelay");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/service/LocalOrganizationAndEndpointProviderImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/service/LocalOrganizationAndEndpointProviderImpl.java
index 51431819c..4e859ab94 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/service/LocalOrganizationAndEndpointProviderImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/service/LocalOrganizationAndEndpointProviderImpl.java
@@ -28,11 +28,10 @@
import org.hl7.fhir.r4.model.Organization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.bpe.client.dsf.ClientProvider;
-public class LocalOrganizationAndEndpointProviderImpl implements LocalOrganizationAndEndpointProvider, InitializingBean
+public class LocalOrganizationAndEndpointProviderImpl implements LocalOrganizationAndEndpointProvider
{
private static final Logger logger = LoggerFactory.getLogger(LocalOrganizationAndEndpointProviderImpl.class);
@@ -53,17 +52,9 @@ private record Entry(Optional organizationAndEndpoint,
public LocalOrganizationAndEndpointProviderImpl(TemporalAmount cacheTimeout, ClientProvider clientProvider,
String localEndpointAddress)
{
- this.cacheTimeout = cacheTimeout;
- this.clientProvider = clientProvider;
- this.localEndpointAddress = localEndpointAddress;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(cacheTimeout, "cacheTimeout");
- Objects.requireNonNull(clientProvider, "clientProvider");
- Objects.requireNonNull(localEndpointAddress, "localEndpointAddress");
+ this.cacheTimeout = Objects.requireNonNull(cacheTimeout, "cacheTimeout");
+ this.clientProvider = Objects.requireNonNull(clientProvider, "clientProvider");
+ this.localEndpointAddress = Objects.requireNonNull(localEndpointAddress, "localEndpointAddress");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/OperatonConfig.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/OperatonConfig.java
index 8df72c79c..337d32270 100755
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/OperatonConfig.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/OperatonConfig.java
@@ -28,7 +28,6 @@
import org.operaton.bpm.engine.spring.SpringProcessEngineConfiguration;
import org.postgresql.Driver;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@@ -51,9 +50,6 @@ public class OperatonConfig
@Autowired
private PropertiesConfig propertiesConfig;
- @Autowired
- private ApplicationContext applicationContext;
-
@Autowired
private List processPluginFactories;
@@ -151,8 +147,7 @@ public FallbackSerializerFactory fallbackSerializerFactory()
@Bean
public DelegateProvider delegateProvider()
{
- return new DelegateProviderImpl(ClassLoader.getSystemClassLoader(), applicationContext,
- dsfClientConfig.clientProvider().getWebserviceClient());
+ return new DelegateProviderImpl(dsfClientConfig.clientProvider().getWebserviceClient());
}
@Bean
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/PostStartupConfig.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/PostStartupConfig.java
index 319ff655d..d159b557f 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/PostStartupConfig.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/PostStartupConfig.java
@@ -43,12 +43,12 @@ public void onContextRefreshedEvent()
pluginConfig.processPluginManager().loadAndDeployPlugins();
logger.info("Deploying process plugins [Done]");
- logger.info("Starting process engine ...");
+ logger.info("Starting process engine JobExecutor ...");
operatonConfig.processEngineConfiguration().getJobExecutor().start();
- logger.info("Starting process engine [Done]");
+ logger.info("Starting process engine JobExecutor [Done]");
- fhirConfig.fhirConnectorTask().connect();
- fhirConfig.fhirConnectorQuestionnaireResponse().connect();
+ fhirConfig.taskFhirConnector().connect();
+ fhirConfig.questionnaireResponseFhirConnector().connect();
// websocket connect is an async operation
}
}
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/PropertiesConfig.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/PropertiesConfig.java
index 2336cb024..9f587ef5f 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/PropertiesConfig.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/PropertiesConfig.java
@@ -118,11 +118,11 @@ public class PropertiesConfig extends AbstractCertificateAndProxyConfig implemen
@Value("${dev.dsf.bpe.fhir.client.certificate.private.key.password:#{null}}")
private char[] dsfClientCertificatePrivateKeyFilePassword;
- @Documentation(description = "Timeout until a reading a resource from a remote DSF FHIR server is aborted", recommendation = "Change default value only if timeout exceptions occur")
+ @Documentation(description = "Timeout until a reading a resource from a remote DSF FHIR server is aborted, not negative, 0 represents infinity", recommendation = "Change default value only if timeout exceptions occur")
@Value("${dev.dsf.bpe.fhir.client.remote.timeout.read:PT60S}")
private String dsfClientReadTimeoutRemote;
- @Documentation(description = "Timeout until a connection is established with a remote DSF FHIR server", recommendation = "Change default value only if timeout exceptions occur")
+ @Documentation(description = "Timeout until a connection is established with a remote DSF FHIR server, not negative, 0 represents infinity", recommendation = "Change default value only if timeout exceptions occur")
@Value("${dev.dsf.bpe.fhir.client.remote.timeout.connect:PT5S}")
private String dsfClientConnectTimeoutRemote;
@@ -130,11 +130,11 @@ public class PropertiesConfig extends AbstractCertificateAndProxyConfig implemen
@Value("${dev.dsf.bpe.fhir.client.remote.verbose:false}")
private boolean dsfClientVerboseRemote;
- @Documentation(description = "Timeout until reading a resource from the local DSF FHIR server is aborted", recommendation = "Change default value only if timeout exceptions occur")
+ @Documentation(description = "Timeout until reading a resource from the local DSF FHIR server is aborted, not negative, 0 represents infinity", recommendation = "Change default value only if timeout exceptions occur")
@Value("${dev.dsf.bpe.fhir.client.local.timeout.read:PT60S}")
private String dsfClientReadTimeoutLocal;
- @Documentation(description = "Timeout until a connection is established with the local DSF FHIR server", recommendation = "Change default value only if timeout exceptions occur")
+ @Documentation(description = "Timeout until a connection is established with the local DSF FHIR server, not negative, 0 represents infinity", recommendation = "Change default value only if timeout exceptions occur")
@Value("${dev.dsf.bpe.fhir.client.local.timeout.connect:PT2S}")
private String dsfClientConnectTimeoutLocal;
@@ -162,11 +162,11 @@ public class PropertiesConfig extends AbstractCertificateAndProxyConfig implemen
@Value("${dev.dsf.bpe.fhir.client.connections.config.default.oidc.verify.authorized.party:true}")
private boolean fhirClientConnectionsConfigDefaultOidcVerifyAuthorizedParty;
- @Documentation(description = "FHIR server connections YAML: Default value for properties `connect-timeout` and `oidc-auth.connect-timeout`")
+ @Documentation(description = "FHIR server connections YAML: Default value for properties `connect-timeout` and `oidc-auth.connect-timeout`, not negative, 0 represents infinity")
@Value("${dev.dsf.bpe.fhir.client.connections.config.default.timeout.connect:PT2S}")
private String fhirClientConnectionsConfigDefaultConnectTimeout;
- @Documentation(description = "FHIR server connections YAML: Default value for properties `read-timeout` and `oidc-auth.read-timeout`")
+ @Documentation(description = "FHIR server connections YAML: Default value for properties `read-timeout` and `oidc-auth.read-timeout`, not negative, 0 represents infinity")
@Value("${dev.dsf.bpe.fhir.client.connections.config.default.timeout.read:PT10M}")
private String fhirClientConnectionsConfigDefaultReadTimeout;
@@ -182,38 +182,42 @@ public class PropertiesConfig extends AbstractCertificateAndProxyConfig implemen
@Value("${dev.dsf.bpe.fhir.client.connections.config.oidc.cache:true}")
private boolean fhirClientConnectionsConfigOidcClientCacheEnabled;
- @Documentation(description = "OIDC 'Client Credentials Grant' client cache timeout of the 'openid-configuration' discovery resource")
+ @Documentation(description = "OIDC 'Client Credentials Grant' client cache timeout of the 'openid-configuration' discovery resource, not negative")
@Value("${dev.dsf.bpe.fhir.client.connections.config.oidc.cache.timeout.configuration.resource:PT1H}")
private String fhirClientConnectionsConfigOidcClientCacheConfigurationResourceTimeout;
- @Documentation(description = "OIDC 'Client Credentials Grant' client cache timeout of the jwks resource")
+ @Documentation(description = "OIDC 'Client Credentials Grant' client cache timeout of the jwks resource, not negative")
@Value("${dev.dsf.bpe.fhir.client.connections.config.oidc.cache.timeout.jwks.resource:PT1H}")
private String fhirClientConnectionsConfigOidcClientCacheJwksResourceTimeout;
- @Documentation(description = "OIDC 'Client Credentials Grant' client cache timeout of access tokens before they expire, duration is subtracted from the expires at value of the access token")
+ @Documentation(description = "OIDC 'Client Credentials Grant' client cache timeout of access tokens before they expire, duration is subtracted from the expires at value of the access token, not negative")
@Value("${dev.dsf.bpe.fhir.client.connections.config.oidc.cache.timeout.access.token:PT10S}")
private String fhirClientConnectionsConfigOidcClientCacheAccessTokenBeforeExpirationTimeout;
- @Documentation(description = "OIDC 'Client Credentials Grant' client access token time validation leeway for 'Not Before', 'Issued At' and 'Expires At' values")
+ @Documentation(description = "OIDC 'Client Credentials Grant' client access token time validation leeway for 'Not Before', 'Issued At' and 'Expires At' values, not negative")
@Value("${dev.dsf.bpe.fhir.client.connections.config.oidc.time.validation.leeway:PT10S}")
private String fhirClientConnectionsConfigOidcClientNotBeforeIssuedAtExpiresAtLeeway;
@Documentation(description = "Subscription to receive notifications about task resources from the DSF FHIR server")
- @Value("${dev.dsf.bpe.fhir.task.subscription.search.parameter:?criteria:exact=Task%3Fstatus%3Drequested&status=active&type=websocket&payload=application/fhir%2Bjson}")
+ @Value("${dev.dsf.bpe.fhir.subscription.task.search.parameter:?criteria:exact=Task%3Fstatus%3Drequested&status=active&type=websocket&payload=application/fhir%2Bjson}")
private String taskSubscriptionSearchParameter;
@Documentation(description = "Subscription to receive notifications about questionnaire response resources from the DSF FHIR server")
- @Value("${dev.dsf.bpe.fhir.questionnaire.response.subscription.search.parameter:?criteria:exact=QuestionnaireResponse%3Fstatus%3Dcompleted&status=active&type=websocket&payload=application/fhir%2Bjson}")
+ @Value("${dev.dsf.bpe.fhir.subscription.questionnaireresponse.search.parameter:?criteria:exact=QuestionnaireResponse%3Fstatus%3Dcompleted&status=active&type=websocket&payload=application/fhir%2Bjson}")
private String questionnaireResponseSubscriptionSearchParameter;
@Documentation(description = "Number of retries until a websocket connection can be established with the DSF FHIR server, `-1` means infinite number of retries")
- @Value("${dev.dsf.bpe.fhir.task.subscription.retry.max:-1}")
+ @Value("${dev.dsf.bpe.fhir.subscription.retry.max:-1}")
private int websocketMaxRetries;
@Documentation(description = "Time between two retries to establish a websocket connection with the DSF FHIR server")
- @Value("${dev.dsf.bpe.fhir.task.subscription.retry.sleep:PT5S}")
+ @Value("${dev.dsf.bpe.fhir.subscription.retry.sleep:PT5S}")
private String websocketRetrySleep;
+ @Documentation(description = "Set to `false` to exclude WebSocket connection checks from the status webservice (e.g., Docker health checks)")
+ @Value("${dev.dsf.bpe.fhir.subscription.health.check:true}")
+ private boolean websocketHealthCheck;
+
@Documentation(description = "Directory containing the DSF BPE process plugins for deployment on startup of the DSF BPE server", recommendation = "Change only if you don't use the provided directory structure from the installation guide or made changes to tit")
@Value("${dev.dsf.bpe.process.plugin.directory:process}")
private String processPluginDirectory;
@@ -717,6 +721,11 @@ public Duration getWebsocketRetrySleepMillis()
return Duration.parse(websocketRetrySleep);
}
+ public boolean getWebsocketHealthCheck()
+ {
+ return websocketHealthCheck;
+ }
+
public int getWebsocketMaxRetries()
{
return websocketMaxRetries;
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/WebserviceConfig.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/WebserviceConfig.java
index ef0519239..7e192d690 100755
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/WebserviceConfig.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/WebserviceConfig.java
@@ -17,6 +17,7 @@
import java.nio.file.Files;
import java.nio.file.Paths;
+import java.util.List;
import org.operaton.bpm.engine.ProcessEngine;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +29,8 @@
import dev.dsf.bpe.webservice.ProcessService;
import dev.dsf.bpe.webservice.RootService;
import dev.dsf.common.auth.logout.LogoutService;
+import dev.dsf.common.db.health.DatabaseHealthCheck;
+import dev.dsf.common.status.health.HealthCheck;
import dev.dsf.common.status.webservice.StatusService;
import dev.dsf.common.ui.webservice.StaticResourcesService;
@@ -43,6 +46,9 @@ public class WebserviceConfig
@Autowired
private PropertiesConfig propertiesConfig;
+ @Autowired
+ private WebsocketConfig websocketConfig;
+
@Bean
public ThymeleafTemplateService thymeleafTemplateService()
{
@@ -83,6 +89,11 @@ public StaticResourcesService staticResourcesService()
@Bean
public StatusService statusService()
{
- return new StatusService(daoConfig.dataSource(), propertiesConfig.getJettyStatusConnectorPort());
+ List healthChecks = propertiesConfig.getWebsocketHealthCheck()
+ ? List.of(new DatabaseHealthCheck(daoConfig.dataSource()), websocketConfig.taskWebsocketHealthCheck(),
+ websocketConfig.questionnaireResponseWebsocketHealthCheck())
+ : List.of(new DatabaseHealthCheck(daoConfig.dataSource()));
+
+ return new StatusService(propertiesConfig.getJettyStatusConnectorPort(), healthChecks);
}
}
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/WebsocketConfig.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/WebsocketConfig.java
index c9f1b8c7e..db740602d 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/WebsocketConfig.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/WebsocketConfig.java
@@ -15,12 +15,23 @@
*/
package dev.dsf.bpe.spring.config;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
import org.hl7.fhir.r4.model.QuestionnaireResponse;
import org.hl7.fhir.r4.model.Task;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Scope;
+import dev.dsf.bpe.health.WebsocketHealthCheck;
import dev.dsf.bpe.subscription.ConcurrentSubscriptionHandlerFactory;
import dev.dsf.bpe.subscription.LocalFhirConnector;
import dev.dsf.bpe.subscription.LocalFhirConnectorImpl;
@@ -30,10 +41,13 @@
import dev.dsf.bpe.subscription.SubscriptionHandlerFactory;
import dev.dsf.bpe.subscription.TaskHandler;
import dev.dsf.bpe.subscription.TaskSubscriptionHandlerFactory;
+import dev.dsf.common.status.health.HealthCheck;
@Configuration
public class WebsocketConfig
{
+ private static final Logger logger = LoggerFactory.getLogger(WebsocketConfig.class);
+
@Autowired
private PropertiesConfig propertiesConfig;
@@ -52,6 +66,28 @@ public class WebsocketConfig
@Autowired
private PluginConfig pluginConfig;
+
+ @Bean
+ @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+ public ExecutorService resourceExecutor(String resource)
+ {
+ int corePoolSize = propertiesConfig.getProcessStartOrContinueThreads();
+
+ ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, corePoolSize, 30, TimeUnit.MINUTES,
+ new LinkedBlockingQueue<>(),
+ (_, _) -> logger.error("Unable to handle {} - execution rejected", resource));
+ executor.allowCoreThreadTimeOut(true);
+
+ return executor;
+ }
+
+ @Bean
+ @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+ public ExecutorService connectExecutor(String threadNamePrefix)
+ {
+ return Executors.newSingleThreadExecutor(r -> new Thread(r, threadNamePrefix + "-websocket-connector"));
+ }
+
@Bean
public ResourceHandler taskHandler()
{
@@ -64,17 +100,24 @@ public ResourceHandler taskHandler()
@Bean
public SubscriptionHandlerFactory taskSubscriptionHandlerFactory()
{
- return new ConcurrentSubscriptionHandlerFactory<>(propertiesConfig.getProcessStartOrContinueThreads(),
- new TaskSubscriptionHandlerFactory(taskHandler(), daoConfig.lastEventTimeDaoTask()));
+ return new ConcurrentSubscriptionHandlerFactory<>(
+ new TaskSubscriptionHandlerFactory(taskHandler(), daoConfig.lastEventTimeDaoTask()),
+ resourceExecutor("Task"));
}
@Bean
- public LocalFhirConnector fhirConnectorTask()
+ public LocalFhirConnector taskFhirConnector()
{
return new LocalFhirConnectorImpl<>(Task.class, dsfClientConfig.clientProvider(),
taskSubscriptionHandlerFactory(), fhirConfig.fhirContext(),
propertiesConfig.getTaskSubscriptionSearchParameter(), propertiesConfig.getWebsocketRetrySleepMillis(),
- propertiesConfig.getWebsocketMaxRetries());
+ propertiesConfig.getWebsocketMaxRetries(), connectExecutor("task"));
+ }
+
+ @Bean
+ public HealthCheck taskWebsocketHealthCheck()
+ {
+ return new WebsocketHealthCheck("Task", taskFhirConnector());
}
@Bean
@@ -89,17 +132,25 @@ public ResourceHandler questionnaireResponseHandler()
@Bean
public SubscriptionHandlerFactory questionnaireResponseSubscriptionHandlerFactory()
{
- return new ConcurrentSubscriptionHandlerFactory<>(propertiesConfig.getProcessStartOrContinueThreads(),
+ return new ConcurrentSubscriptionHandlerFactory<>(
new QuestionnaireResponseSubscriptionHandlerFactory(questionnaireResponseHandler(),
- daoConfig.lastEventTimeDaoQuestionnaireResponse()));
+ daoConfig.lastEventTimeDaoQuestionnaireResponse()),
+ resourceExecutor("QuestionnaireResponse"));
}
@Bean
- public LocalFhirConnector fhirConnectorQuestionnaireResponse()
+ public LocalFhirConnector questionnaireResponseFhirConnector()
{
return new LocalFhirConnectorImpl<>(QuestionnaireResponse.class, dsfClientConfig.clientProvider(),
questionnaireResponseSubscriptionHandlerFactory(), fhirConfig.fhirContext(),
propertiesConfig.getQuestionnaireResponseSubscriptionSearchParameter(),
- propertiesConfig.getWebsocketRetrySleepMillis(), propertiesConfig.getWebsocketMaxRetries());
+ propertiesConfig.getWebsocketRetrySleepMillis(), propertiesConfig.getWebsocketMaxRetries(),
+ connectExecutor("questionnaire-response"));
+ }
+
+ @Bean
+ public HealthCheck questionnaireResponseWebsocketHealthCheck()
+ {
+ return new WebsocketHealthCheck("QuestionnaireResponse", questionnaireResponseFhirConnector());
}
}
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/AbstractResourceHandler.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/AbstractResourceHandler.java
index d60e8ad39..be4294149 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/AbstractResourceHandler.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/AbstractResourceHandler.java
@@ -20,7 +20,6 @@
import org.operaton.bpm.engine.RepositoryService;
import org.operaton.bpm.engine.repository.ProcessDefinition;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.parser.IParser;
@@ -28,27 +27,27 @@
import dev.dsf.bpe.api.plugin.ProcessPlugin;
import dev.dsf.bpe.plugin.ProcessPluginManager;
-public abstract class AbstractResourceHandler implements InitializingBean
+public abstract class AbstractResourceHandler
{
protected final RepositoryService repositoryService;
private final ProcessPluginManager processPluginManager;
private final FhirContext fhirContext;
+ /**
+ * @param repositoryService
+ * not null
+ * @param processPluginManager
+ * not null
+ * @param fhirContext
+ * not null
+ */
public AbstractResourceHandler(RepositoryService repositoryService, ProcessPluginManager processPluginManager,
FhirContext fhirContext)
{
- this.repositoryService = repositoryService;
- this.processPluginManager = processPluginManager;
- this.fhirContext = fhirContext;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(repositoryService, "repositoryService");
- Objects.requireNonNull(processPluginManager, "processPluginManager");
- Objects.requireNonNull(fhirContext, "fhirContext");
+ this.repositoryService = Objects.requireNonNull(repositoryService, "repositoryService");
+ this.processPluginManager = Objects.requireNonNull(processPluginManager, "processPluginManager");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
}
protected final IParser newJsonParser()
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/ConcurrentSubscriptionHandlerFactory.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/ConcurrentSubscriptionHandlerFactory.java
index 21aeccbfd..e790f76cd 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/ConcurrentSubscriptionHandlerFactory.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/ConcurrentSubscriptionHandlerFactory.java
@@ -16,47 +16,31 @@
package dev.dsf.bpe.subscription;
import java.util.Objects;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.ExecutorService;
import org.hl7.fhir.r4.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.bpe.client.dsf.WebserviceClient;
-public class ConcurrentSubscriptionHandlerFactory
- implements SubscriptionHandlerFactory, InitializingBean
+public class ConcurrentSubscriptionHandlerFactory implements SubscriptionHandlerFactory
{
private static final Logger logger = LoggerFactory.getLogger(ConcurrentSubscriptionHandlerFactory.class);
private final SubscriptionHandlerFactory delegate;
- private final ThreadPoolExecutor executor;
+ private final ExecutorService executor;
/**
- * @param corePoolSize
- * > 0
* @param delegate
* not null
+ * @param executor
+ * not null
*/
- public ConcurrentSubscriptionHandlerFactory(int corePoolSize, SubscriptionHandlerFactory delegate)
- {
- if (corePoolSize <= 0)
- throw new IllegalArgumentException("corePoolSize <= 0");
-
- this.delegate = delegate;
-
- executor = new ThreadPoolExecutor(corePoolSize, corePoolSize, 30, TimeUnit.MINUTES, new LinkedBlockingQueue<>(),
- (_, _) -> logger.error("Unable to handle Task - execution rejected"));
- executor.allowCoreThreadTimeOut(true);
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
+ public ConcurrentSubscriptionHandlerFactory(SubscriptionHandlerFactory delegate, ExecutorService executor)
{
- Objects.requireNonNull(delegate, "delegate");
+ this.delegate = Objects.requireNonNull(delegate, "delegate");
+ this.executor = Objects.requireNonNull(executor, "executor");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/LocalFhirConnector.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/LocalFhirConnector.java
index 8834b685d..0bbc0cd7b 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/LocalFhirConnector.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/LocalFhirConnector.java
@@ -18,4 +18,6 @@
public interface LocalFhirConnector
{
void connect();
+
+ boolean isConnected();
}
\ No newline at end of file
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/LocalFhirConnectorImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/LocalFhirConnectorImpl.java
index 6ccd7f743..4bedfc60b 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/LocalFhirConnectorImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/LocalFhirConnectorImpl.java
@@ -20,7 +20,8 @@
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.Executors;
+import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Supplier;
import org.hl7.fhir.r4.model.Bundle;
@@ -28,7 +29,6 @@
import org.hl7.fhir.r4.model.Subscription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.web.util.UriComponents;
@@ -42,10 +42,14 @@
import dev.dsf.bpe.client.dsf.WebserviceClient;
import dev.dsf.fhir.client.WebsocketClient;
-public class LocalFhirConnectorImpl implements LocalFhirConnector, InitializingBean
+public class LocalFhirConnectorImpl implements LocalFhirConnector
{
private static final Logger logger = LoggerFactory.getLogger(LocalFhirConnectorImpl.class);
+ private final AtomicBoolean stopping = new AtomicBoolean();
+
+ private volatile WebsocketClient client;
+
private final Class resourceType;
private final String resourceName;
private final ClientProvider clientProvider;
@@ -54,23 +58,33 @@ public class LocalFhirConnectorImpl implements LocalFhirConn
private final Duration retrySleep;
private final int maxRetries;
private final Map> subscriptionSearchParameter;
+ private final Executor connectExecutor;
public LocalFhirConnectorImpl(Class resourceType, ClientProvider clientProvider,
SubscriptionHandlerFactory subscriptionHandlerFactory, FhirContext fhirContext,
- String subscriptionSearchParameter, Duration retrySleep, int maxRetries)
+ String subscriptionSearchParameter, Duration retrySleep, int maxRetries, Executor connectExecutor)
{
- this.resourceType = resourceType;
- this.resourceName = resourceType == null ? null : resourceType.getAnnotation(ResourceDef.class).name();
- this.clientProvider = clientProvider;
- this.subscriptionHandlerFactory = subscriptionHandlerFactory;
- this.fhirContext = fhirContext;
+ this.resourceType = Objects.requireNonNull(resourceType, "resourceType");
+ this.resourceName = resourceType.getAnnotation(ResourceDef.class).name();
+ this.clientProvider = Objects.requireNonNull(clientProvider, "clientProvider");
+ this.subscriptionHandlerFactory = Objects.requireNonNull(subscriptionHandlerFactory,
+ "subscriptionHandlerFactory");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
this.subscriptionSearchParameter = parse(subscriptionSearchParameter, null);
- this.retrySleep = retrySleep;
+ this.retrySleep = Objects.requireNonNull(retrySleep, "retrySleep");
this.maxRetries = maxRetries;
+
+ if (retrySleep.isNegative())
+ throw new IllegalArgumentException("retrySleepMillis negative");
+ // maxRetries < 0 => retry forever
+
+ this.connectExecutor = connectExecutor;
}
private Map> parse(String queryParameters, String expectedPath)
{
+ Objects.requireNonNull(queryParameters, "queryParameters");
+
if (expectedPath != null && !expectedPath.isBlank())
{
UriComponents components = UriComponentsBuilder.fromUriString(queryParameters).build();
@@ -88,27 +102,15 @@ private Map> parse(String queryParameters, String expectedP
}
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(resourceType, "resourceType");
- Objects.requireNonNull(clientProvider, "clientProvider");
- Objects.requireNonNull(subscriptionHandlerFactory, "subscriptionHandlerFactory");
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(subscriptionSearchParameter, "subscriptionSearchParameter");
-
- if (retrySleep.isNegative())
- throw new IllegalArgumentException("retrySleepMillis negative");
-
- // maxRetries < 0 => retry forever
- }
-
@Override
public void connect()
{
- logger.debug("Retrieving Subscription and connecting to websocket");
+ if (stopping.get())
+ return;
+
+ logger.debug("Retrieving subscription and connecting to websocket");
- CompletableFuture.supplyAsync(this::retrieveWebsocketSubscription, Executors.newSingleThreadExecutor())
+ CompletableFuture.supplyAsync(this::retrieveWebsocketSubscription, connectExecutor)
.thenApply(this::loadNewResources).thenAccept(this::connectWebsocket).exceptionally(this::onError);
}
@@ -252,8 +254,7 @@ private void connectWebsocket(Subscription subscription)
{
try
{
- WebsocketClient client = clientProvider.getWebsocketClient(this::connect,
- subscription.getIdElement().getIdPart());
+ client = clientProvider.getWebsocketClient(this::connect, subscription.getIdElement().getIdPart());
EventType eventType = toEventType(subscription.getChannel().getPayload());
if (EventType.PING.equals(eventType))
@@ -307,6 +308,8 @@ private EventType toEventType(String payload)
@EventListener({ ContextClosedEvent.class })
public void onContextClosedEvent()
{
+ stopping.set(true);
+
clientProvider.disconnectAll();
}
@@ -349,4 +352,10 @@ private Supplier configureParser(Supplier supplier)
return p;
};
}
+
+ @Override
+ public boolean isConnected()
+ {
+ return client != null && client.isConnected();
+ }
}
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/QuestionnaireResponseHandler.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/QuestionnaireResponseHandler.java
index fd6fd5a04..d896a1f02 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/QuestionnaireResponseHandler.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/QuestionnaireResponseHandler.java
@@ -30,7 +30,6 @@
import org.operaton.bpm.engine.variable.value.PrimitiveValue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import dev.dsf.bpe.api.Constants;
@@ -39,29 +38,32 @@
import dev.dsf.bpe.plugin.ProcessPluginManager;
public class QuestionnaireResponseHandler extends AbstractResourceHandler
- implements ResourceHandler, InitializingBean
+ implements ResourceHandler
{
private static final Logger logger = LoggerFactory.getLogger(QuestionnaireResponseHandler.class);
private final TaskService userTaskService;
private final WebserviceClient webserviceClient;
+ /**
+ * @param repositoryService
+ * not null
+ * @param processPluginManager
+ * not null
+ * @param fhirContext
+ * not null
+ * @param userTaskService
+ * not null
+ * @param webserviceClient
+ * not null
+ */
public QuestionnaireResponseHandler(RepositoryService repositoryService, ProcessPluginManager processPluginManager,
FhirContext fhirContext, TaskService userTaskService, WebserviceClient webserviceClient)
{
super(repositoryService, processPluginManager, fhirContext);
- this.userTaskService = userTaskService;
- this.webserviceClient = webserviceClient;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(userTaskService, "userTaskService");
- Objects.requireNonNull(webserviceClient, "webserviceClient");
+ this.userTaskService = Objects.requireNonNull(userTaskService, "userTaskService");
+ this.webserviceClient = Objects.requireNonNull(webserviceClient, "webserviceClient");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/QuestionnaireResponseSubscriptionHandlerFactory.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/QuestionnaireResponseSubscriptionHandlerFactory.java
index bec14474a..44a754b4d 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/QuestionnaireResponseSubscriptionHandlerFactory.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/QuestionnaireResponseSubscriptionHandlerFactory.java
@@ -18,29 +18,27 @@
import java.util.Objects;
import org.hl7.fhir.r4.model.QuestionnaireResponse;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.bpe.client.dsf.WebserviceClient;
import dev.dsf.bpe.dao.LastEventTimeDao;
public class QuestionnaireResponseSubscriptionHandlerFactory
- implements SubscriptionHandlerFactory, InitializingBean
+ implements SubscriptionHandlerFactory
{
private final ResourceHandler resourceHandler;
private final LastEventTimeDao lastEventTimeDao;
+ /**
+ * @param resourceHandler
+ * not null
+ * @param lastEventTimeDao
+ * not null
+ */
public QuestionnaireResponseSubscriptionHandlerFactory(ResourceHandler resourceHandler,
LastEventTimeDao lastEventTimeDao)
{
- this.resourceHandler = resourceHandler;
- this.lastEventTimeDao = lastEventTimeDao;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(resourceHandler, "resourceHandler");
- Objects.requireNonNull(lastEventTimeDao, "lastEventTimeDao");
+ this.resourceHandler = Objects.requireNonNull(resourceHandler, "resourceHandler");
+ this.lastEventTimeDao = Objects.requireNonNull(lastEventTimeDao, "lastEventTimeDao");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/TaskHandler.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/TaskHandler.java
index 01718752e..f9a006c86 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/TaskHandler.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/TaskHandler.java
@@ -47,7 +47,6 @@
import org.operaton.bpm.model.bpmn.instance.StartEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import dev.dsf.bpe.api.Constants;
@@ -55,7 +54,7 @@
import dev.dsf.bpe.client.dsf.WebserviceClient;
import dev.dsf.bpe.plugin.ProcessPluginManager;
-public class TaskHandler extends AbstractResourceHandler implements ResourceHandler, InitializingBean
+public class TaskHandler extends AbstractResourceHandler implements ResourceHandler
{
private static final Logger logger = LoggerFactory.getLogger(TaskHandler.class);
@@ -114,22 +113,25 @@ String getShortMessage()
private final RuntimeService runtimeService;
private final WebserviceClient webserviceClient;
+ /**
+ * @param repositoryService
+ * not null
+ * @param processPluginManager
+ * not null
+ * @param fhirContext
+ * not null
+ * @param runtimeService
+ * not null
+ * @param webserviceClient
+ * not null
+ */
public TaskHandler(RepositoryService repositoryService, ProcessPluginManager processPluginManager,
FhirContext fhirContext, RuntimeService runtimeService, WebserviceClient webserviceClient)
{
super(repositoryService, processPluginManager, fhirContext);
- this.runtimeService = runtimeService;
- this.webserviceClient = webserviceClient;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(runtimeService, "runtimeService");
- Objects.requireNonNull(webserviceClient, "webserviceClient");
+ this.runtimeService = Objects.requireNonNull(runtimeService, "runtimeService");
+ this.webserviceClient = Objects.requireNonNull(webserviceClient, "webserviceClient");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/TaskSubscriptionHandlerFactory.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/TaskSubscriptionHandlerFactory.java
index 7771c0b2b..bd4ed9122 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/TaskSubscriptionHandlerFactory.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/subscription/TaskSubscriptionHandlerFactory.java
@@ -18,27 +18,25 @@
import java.util.Objects;
import org.hl7.fhir.r4.model.Task;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.bpe.client.dsf.WebserviceClient;
import dev.dsf.bpe.dao.LastEventTimeDao;
-public class TaskSubscriptionHandlerFactory implements SubscriptionHandlerFactory, InitializingBean
+public class TaskSubscriptionHandlerFactory implements SubscriptionHandlerFactory
{
private final ResourceHandler resourceHandler;
private final LastEventTimeDao lastEventTimeDao;
+ /**
+ * @param resourceHandler
+ * not null
+ * @param lastEventTimeDao
+ * not null
+ */
public TaskSubscriptionHandlerFactory(ResourceHandler resourceHandler, LastEventTimeDao lastEventTimeDao)
{
- this.resourceHandler = resourceHandler;
- this.lastEventTimeDao = lastEventTimeDao;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(resourceHandler, "resourceHandler");
- Objects.requireNonNull(lastEventTimeDao, "lastEventTimeDao");
+ this.resourceHandler = Objects.requireNonNull(resourceHandler, "resourceHandler");
+ this.lastEventTimeDao = Objects.requireNonNull(lastEventTimeDao, "lastEventTimeDao");
}
@Override
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/ui/ThymeleafTemplateServiceImpl.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/ui/ThymeleafTemplateServiceImpl.java
index 251ec24f7..32a660693 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/ui/ThymeleafTemplateServiceImpl.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/ui/ThymeleafTemplateServiceImpl.java
@@ -19,7 +19,6 @@
import java.net.URI;
import java.util.Objects;
-import org.springframework.beans.factory.InitializingBean;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templatemode.TemplateMode;
@@ -28,7 +27,7 @@
import dev.dsf.common.ui.theme.Theme;
import jakarta.ws.rs.core.StreamingOutput;
-public class ThymeleafTemplateServiceImpl implements ThymeleafTemplateService, InitializingBean
+public class ThymeleafTemplateServiceImpl implements ThymeleafTemplateService
{
private final String serverBaseUrl;
private final Theme theme;
@@ -47,7 +46,7 @@ public class ThymeleafTemplateServiceImpl implements ThymeleafTemplateService, I
*/
public ThymeleafTemplateServiceImpl(String serverBaseUrl, Theme theme, boolean cacheEnabled, boolean modCssExists)
{
- this.serverBaseUrl = serverBaseUrl;
+ this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
this.theme = theme;
this.cacheEnabled = cacheEnabled;
this.modCssExists = modCssExists;
@@ -61,12 +60,6 @@ public ThymeleafTemplateServiceImpl(String serverBaseUrl, Theme theme, boolean c
templateEngine.setTemplateResolver(resolver);
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
- }
-
@Override
public StreamingOutput write(Context context, MainValues mainValues)
{
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/AbstractService.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/AbstractService.java
index 2a51bfd8f..d389e7a1a 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/AbstractService.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/AbstractService.java
@@ -19,7 +19,6 @@
import java.util.Objects;
import java.util.function.Consumer;
-import org.springframework.beans.factory.InitializingBean;
import org.thymeleaf.context.Context;
import dev.dsf.bpe.ui.ThymeleafTemplateService;
@@ -28,7 +27,7 @@
import jakarta.ws.rs.core.SecurityContext;
import jakarta.ws.rs.core.StreamingOutput;
-public abstract class AbstractService implements InitializingBean
+public abstract class AbstractService
{
@jakarta.ws.rs.core.Context
private volatile SecurityContext securityContext;
@@ -36,17 +35,16 @@ public abstract class AbstractService implements InitializingBean
private final ThymeleafTemplateService templateService;
private final String htmlFragment;
+ /**
+ * @param templateService
+ * not null
+ * @param htmlFragment
+ * not null
+ */
public AbstractService(ThymeleafTemplateService templateService, String htmlFragment)
{
- this.templateService = templateService;
- this.htmlFragment = htmlFragment;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(templateService, "templateService");
- Objects.requireNonNull(htmlFragment, "htmlFragment");
+ this.templateService = Objects.requireNonNull(templateService, "templateService");
+ this.htmlFragment = Objects.requireNonNull(htmlFragment, "htmlFragment");
}
protected StreamingOutput write(String title, String heading, Consumer setValues)
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/ProcessService.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/ProcessService.java
index 099c08bce..2d78d72c0 100755
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/ProcessService.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/ProcessService.java
@@ -35,7 +35,6 @@
import org.operaton.bpm.engine.repository.Deployment;
import org.operaton.bpm.engine.repository.ProcessDefinition;
import org.operaton.bpm.model.bpmn.BpmnModelInstance;
-import org.springframework.beans.factory.InitializingBean;
import org.thymeleaf.context.Context;
import dev.dsf.bpe.ui.ThymeleafTemplateService;
@@ -51,18 +50,24 @@
@RolesAllowed("ADMIN")
@Path(ProcessService.PATH)
-public class ProcessService extends AbstractService implements InitializingBean
+public class ProcessService extends AbstractService
{
public static final String PATH = "Process";
private final RepositoryService repositoryService;
private final TransformerFactory transformerFactory;
+ /**
+ * @param templateService
+ * not null
+ * @param repositoryService
+ * not null
+ */
public ProcessService(ThymeleafTemplateService templateService, RepositoryService repositoryService)
{
super(templateService, "Process");
- this.repositoryService = repositoryService;
+ this.repositoryService = Objects.requireNonNull(repositoryService, "repositoryService");
transformerFactory = TransformerFactory.newInstance();
transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
@@ -78,14 +83,6 @@ public ProcessService(ThymeleafTemplateService templateService, RepositoryServic
}
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(repositoryService, "repositoryService");
- }
-
@GET
@Path("/{key}")
@Produces({ MediaType.TEXT_HTML })
diff --git a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/RootService.java b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/RootService.java
index ebbbde152..12d31ff57 100644
--- a/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/RootService.java
+++ b/dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/webservice/RootService.java
@@ -26,7 +26,6 @@
import org.operaton.bpm.engine.repository.ProcessDefinition;
import org.operaton.bpm.engine.runtime.ActivityInstance;
import org.operaton.bpm.engine.runtime.ProcessInstance;
-import org.springframework.beans.factory.InitializingBean;
import org.thymeleaf.context.Context;
import dev.dsf.bpe.ui.ThymeleafTemplateService;
@@ -40,29 +39,28 @@
@RolesAllowed("ADMIN")
@Path(RootService.PATH)
-public class RootService extends AbstractService implements InitializingBean
+public class RootService extends AbstractService
{
public static final String PATH = "";
private final RepositoryService repositoryService;
private final RuntimeService runtimeService;
+ /**
+ * @param templateService
+ * not null
+ * @param repositoryService
+ * not null
+ * @param runtimeService
+ * not null
+ */
public RootService(ThymeleafTemplateService templateService, RepositoryService repositoryService,
RuntimeService runtimeService)
{
super(templateService, "root");
- this.repositoryService = repositoryService;
- this.runtimeService = runtimeService;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(repositoryService, "repositoryService");
- Objects.requireNonNull(runtimeService, "runtimeService");
+ this.repositoryService = Objects.requireNonNull(repositoryService, "repositoryService");
+ this.runtimeService = Objects.requireNonNull(runtimeService, "runtimeService");
}
@GET
diff --git a/dsf-bpe/dsf-bpe-test-plugin-v1/src/main/java/dev/dsf/bpe/test/service/AbstractTest.java b/dsf-bpe/dsf-bpe-test-plugin-v1/src/main/java/dev/dsf/bpe/test/service/AbstractTest.java
index 168c0c754..ec93a4741 100644
--- a/dsf-bpe/dsf-bpe-test-plugin-v1/src/main/java/dev/dsf/bpe/test/service/AbstractTest.java
+++ b/dsf-bpe/dsf-bpe-test-plugin-v1/src/main/java/dev/dsf/bpe/test/service/AbstractTest.java
@@ -28,6 +28,10 @@
public abstract class AbstractTest extends AbstractServiceDelegate
{
+ /**
+ * @param api
+ * not null
+ */
public AbstractTest(ProcessPluginApi api)
{
super(api);
diff --git a/dsf-bpe/dsf-bpe-test-plugin-v1/src/main/java/dev/dsf/bpe/test/service/EnvironmentVariableTest.java b/dsf-bpe/dsf-bpe-test-plugin-v1/src/main/java/dev/dsf/bpe/test/service/EnvironmentVariableTest.java
index 6a53cf675..350273162 100644
--- a/dsf-bpe/dsf-bpe-test-plugin-v1/src/main/java/dev/dsf/bpe/test/service/EnvironmentVariableTest.java
+++ b/dsf-bpe/dsf-bpe-test-plugin-v1/src/main/java/dev/dsf/bpe/test/service/EnvironmentVariableTest.java
@@ -20,33 +20,33 @@
import java.util.Objects;
-import org.springframework.beans.factory.InitializingBean;
-
import dev.dsf.bpe.test.PluginTest;
import dev.dsf.bpe.v1.ProcessPluginApi;
-public class EnvironmentVariableTest extends AbstractTest implements InitializingBean
+public class EnvironmentVariableTest extends AbstractTest
{
private final String envVariableMandatory;
private final String envVariableOptional;
private final String envVariableProxyUrl;
+ /**
+ * @param api
+ * not null
+ * @param envVariableMandatory
+ * not null
+ * @param envVariableOptional
+ * not null
+ * @param envVariableProxyUrl
+ * not null
+ */
public EnvironmentVariableTest(ProcessPluginApi api, String envVariableMandatory, String envVariableOptional,
String envVariableProxyUrl)
{
super(api);
- this.envVariableMandatory = envVariableMandatory;
- this.envVariableOptional = envVariableOptional;
- this.envVariableProxyUrl = envVariableProxyUrl;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(envVariableMandatory, "envVariableMandatory");
- Objects.requireNonNull(envVariableOptional, "envVariableOptional");
- Objects.requireNonNull(envVariableProxyUrl, "envVariableProxyUrl");
+ this.envVariableMandatory = Objects.requireNonNull(envVariableMandatory, "envVariableMandatory");
+ this.envVariableOptional = Objects.requireNonNull(envVariableOptional, "envVariableOptional");
+ this.envVariableProxyUrl = Objects.requireNonNull(envVariableProxyUrl, "envVariableProxyUrl");
}
@PluginTest
diff --git a/dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/service/EnvironmentVariableTest.java b/dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/service/EnvironmentVariableTest.java
index 3d1aa9b0c..8f4e2be36 100644
--- a/dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/service/EnvironmentVariableTest.java
+++ b/dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/service/EnvironmentVariableTest.java
@@ -20,8 +20,6 @@
import java.util.Objects;
-import org.springframework.beans.factory.InitializingBean;
-
import dev.dsf.bpe.test.AbstractTest;
import dev.dsf.bpe.test.PluginTest;
import dev.dsf.bpe.v2.ProcessPluginApi;
@@ -29,25 +27,25 @@
import dev.dsf.bpe.v2.error.ErrorBoundaryEvent;
import dev.dsf.bpe.v2.variables.Variables;
-public class EnvironmentVariableTest extends AbstractTest implements ServiceTask, InitializingBean
+public class EnvironmentVariableTest extends AbstractTest implements ServiceTask
{
private final String envVariableMandatory;
private final String envVariableOptional;
private final String envVariableProxyUrl;
+ /**
+ * @param envVariableMandatory
+ * not null
+ * @param envVariableOptional
+ * not null
+ * @param envVariableProxyUrl
+ * not null
+ */
public EnvironmentVariableTest(String envVariableMandatory, String envVariableOptional, String envVariableProxyUrl)
{
- this.envVariableMandatory = envVariableMandatory;
- this.envVariableOptional = envVariableOptional;
- this.envVariableProxyUrl = envVariableProxyUrl;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(envVariableMandatory, "envVariableMandatory");
- Objects.requireNonNull(envVariableOptional, "envVariableOptional");
- Objects.requireNonNull(envVariableProxyUrl, "envVariableProxyUrl");
+ this.envVariableMandatory = Objects.requireNonNull(envVariableMandatory, "envVariableMandatory");
+ this.envVariableOptional = Objects.requireNonNull(envVariableOptional, "envVariableOptional");
+ this.envVariableProxyUrl = Objects.requireNonNull(envVariableProxyUrl, "envVariableProxyUrl");
}
@Override
diff --git a/dsf-common/dsf-common-auth/src/main/java/dev/dsf/common/auth/conf/AbstractIdentityProvider.java b/dsf-common/dsf-common-auth/src/main/java/dev/dsf/common/auth/conf/AbstractIdentityProvider.java
index ec4098791..61c6b4f1e 100644
--- a/dsf-common/dsf-common-auth/src/main/java/dev/dsf/common/auth/conf/AbstractIdentityProvider.java
+++ b/dsf-common/dsf-common-auth/src/main/java/dev/dsf/common/auth/conf/AbstractIdentityProvider.java
@@ -44,12 +44,11 @@
import org.hl7.fhir.r4.model.Practitioner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.common.auth.DsfOpenIdCredentials;
import dev.dsf.common.auth.conf.RoleConfig.Mapping;
-public abstract class AbstractIdentityProvider implements IdentityProvider, InitializingBean
+public abstract class AbstractIdentityProvider implements IdentityProvider
{
private static final Logger logger = LoggerFactory.getLogger(AbstractIdentityProvider.class);
@@ -64,7 +63,7 @@ public abstract class AbstractIdentityProvider implements Ide
*/
public AbstractIdentityProvider(RoleConfig roleConfig)
{
- this.roleConfig = roleConfig;
+ this.roleConfig = Objects.requireNonNull(roleConfig, "roleConfig");
thumbprints = roleConfig.getEntries().stream().map(Mapping::getThumbprints).flatMap(List::stream).distinct()
.collect(Collectors.toUnmodifiableSet());
@@ -82,12 +81,6 @@ private String getHost(String serverBaseUrl)
}
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(roleConfig, "roleConfig");
- }
-
@Override
public final Identity getIdentity(DsfOpenIdCredentials credentials)
{
diff --git a/dsf-common/dsf-common-db/pom.xml b/dsf-common/dsf-common-db/pom.xml
index 1eba894af..ad4cbca23 100644
--- a/dsf-common/dsf-common-db/pom.xml
+++ b/dsf-common/dsf-common-db/pom.xml
@@ -33,6 +33,10 @@
DSF Common DB
+
+ dev.dsf
+ dsf-common-status
+
org.postgresql
postgresql
diff --git a/dsf-common/dsf-common-db/src/main/java/dev/dsf/common/db/health/DatabaseHealthCheck.java b/dsf-common/dsf-common-db/src/main/java/dev/dsf/common/db/health/DatabaseHealthCheck.java
new file mode 100644
index 000000000..b42ea5219
--- /dev/null
+++ b/dsf-common/dsf-common-db/src/main/java/dev/dsf/common/db/health/DatabaseHealthCheck.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2018-2025 Heilbronn University of Applied Sciences
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dev.dsf.common.db.health;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Objects;
+
+import javax.sql.DataSource;
+
+import dev.dsf.common.status.health.HealthCheck;
+import dev.dsf.common.status.health.HealthStatus;
+
+public class DatabaseHealthCheck implements HealthCheck
+{
+ private final DataSource dataSource;
+
+ /**
+ * @param dataSource
+ * not null
+ */
+ public DatabaseHealthCheck(DataSource dataSource)
+ {
+ this.dataSource = Objects.requireNonNull(dataSource, "dataSource");
+ }
+
+ @Override
+ public HealthStatus check()
+ {
+ try (Connection _ = dataSource.getConnection())
+ {
+ return new HealthStatus("Database", true, "Connection is healthy");
+ }
+ catch (SQLException e)
+ {
+ return new HealthStatus("Database", false, "Connection failed - " + e.getSQLState());
+ }
+ }
+}
diff --git a/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/jetty/JettyServer.java b/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/jetty/JettyServer.java
index 08e3375ad..e6d7975fb 100644
--- a/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/jetty/JettyServer.java
+++ b/dsf-common/dsf-common-jetty/src/main/java/dev/dsf/common/jetty/JettyServer.java
@@ -336,7 +336,7 @@ private ErrorHandler statusCodeOnlyErrorHandler()
protected void generateResponse(Request request, Response response, int code, String message,
Throwable cause, Callback callback) throws IOException
{
- logger.info("Error {}: {}", code, message);
+ logger.debug("Error respone status {}: {}", code, message);
callback.succeeded();
}
};
diff --git a/dsf-common/dsf-common-oidc/src/main/java/dev/dsf/common/oidc/BaseOidcClientJersey.java b/dsf-common/dsf-common-oidc/src/main/java/dev/dsf/common/oidc/BaseOidcClientJersey.java
index 05a199254..712812dbc 100644
--- a/dsf-common/dsf-common-oidc/src/main/java/dev/dsf/common/oidc/BaseOidcClientJersey.java
+++ b/dsf-common/dsf-common-oidc/src/main/java/dev/dsf/common/oidc/BaseOidcClientJersey.java
@@ -76,9 +76,9 @@ public class BaseOidcClientJersey implements BaseOidcClient
* @param userAgentValue
* may be null
* @param connectTimeout
- * not null
+ * not null, not negative, 0 represents infinity
* @param readTimeout
- * not null
+ * not null, not negative, 0 represents infinity
* @param logRequestsAndResponses
*/
public BaseOidcClientJersey(String baseUrl, String discoveryPath, KeyStore trustStore, KeyStore keyStore,
diff --git a/dsf-common/dsf-common-status/pom.xml b/dsf-common/dsf-common-status/pom.xml
index 01f3f0855..fb68bb973 100644
--- a/dsf-common/dsf-common-status/pom.xml
+++ b/dsf-common/dsf-common-status/pom.xml
@@ -47,29 +47,5 @@
jakarta.annotation-api
${jakarta.annotation.api.version}
-
- org.springframework
- spring-context
-
-
- commons-logging
- commons-logging
-
-
-
-
- org.apache.commons
- commons-dbcp2
-
-
- commons-logging
- commons-logging
-
-
-
-
- org.slf4j
- jcl-over-slf4j
-
\ No newline at end of file
diff --git a/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/health/HealthCheck.java b/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/health/HealthCheck.java
new file mode 100644
index 000000000..41b8022d3
--- /dev/null
+++ b/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/health/HealthCheck.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2018-2025 Heilbronn University of Applied Sciences
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dev.dsf.common.status.health;
+
+public interface HealthCheck
+{
+ HealthStatus check();
+}
diff --git a/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/health/HealthStatus.java b/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/health/HealthStatus.java
new file mode 100644
index 000000000..45fb42343
--- /dev/null
+++ b/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/health/HealthStatus.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2018-2025 Heilbronn University of Applied Sciences
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package dev.dsf.common.status.health;
+
+public record HealthStatus(String component, boolean ok, String message)
+{
+}
diff --git a/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/webservice/StatusService.java b/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/webservice/StatusService.java
index 37c3a3613..3158832fa 100644
--- a/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/webservice/StatusService.java
+++ b/dsf-common/dsf-common-status/src/main/java/dev/dsf/common/status/webservice/StatusService.java
@@ -15,16 +15,14 @@
*/
package dev.dsf.common.status.webservice;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.Objects;
-
-import javax.sql.DataSource;
+import java.util.List;
+import java.util.function.Predicate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
+import dev.dsf.common.status.health.HealthCheck;
+import dev.dsf.common.status.health.HealthStatus;
import jakarta.annotation.security.RolesAllowed;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.ws.rs.GET;
@@ -40,25 +38,19 @@
@Path(StatusService.PATH)
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@RolesAllowed("STATUS_PORT_ROLE")
-public class StatusService implements InitializingBean
+public class StatusService
{
public static final String PATH = "status";
private static final Logger logger = LoggerFactory.getLogger(StatusService.class);
- private final DataSource dataSource;
private final int statusConnectorPort;
+ private final List healthChecks;
- public StatusService(DataSource dataSource, int statusConnectorPort)
+ public StatusService(int statusConnectorPort, List healthChecks)
{
- this.dataSource = dataSource;
this.statusConnectorPort = statusConnectorPort;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(dataSource, "dataSource");
+ this.healthChecks = healthChecks == null ? List.of() : List.copyOf(healthChecks);
}
@GET
@@ -70,40 +62,14 @@ public Response status(@Context UriInfo uri, @Context HttpHeaders headers, @Cont
return Response.status(Status.UNAUTHORIZED).build();
}
- try (Connection _ = dataSource.getConnection())
- {
+ if (healthChecks.stream().map(HealthCheck::check).allMatch(HealthStatus::ok))
return Response.ok().build();
- }
- catch (SQLException e)
+ else
{
- String errorMessage = getErrorMessage(e);
+ healthChecks.stream().map(HealthCheck::check).filter(Predicate.not(HealthStatus::ok))
+ .forEach(s -> logger.debug("{}: {}", s.component(), s.message()));
- logger.debug("Error while accessing DB", e);
- logger.error("Error while accessing DB: {} - {}", e.getClass().getName(), errorMessage);
-
- return Response.serverError().build();
+ return Response.status(Status.SERVICE_UNAVAILABLE).build();
}
}
-
- private String getErrorMessage(Throwable e)
- {
- StringBuilder b = new StringBuilder();
-
- while (true)
- {
- b.append(e.getClass().getSimpleName());
- b.append(": ");
- b.append(e.getMessage());
-
- if (e.getCause() != null)
- {
- b.append(" -> ");
- e = e.getCause();
- }
- else
- break;
- }
-
- return b.toString();
- }
}
diff --git a/dsf-fhir/dsf-fhir-rest-adapter/src/main/java/dev/dsf/fhir/adapter/FhirAdapter.java b/dsf-fhir/dsf-fhir-rest-adapter/src/main/java/dev/dsf/fhir/adapter/FhirAdapter.java
index 93035d624..96228240c 100755
--- a/dsf-fhir/dsf-fhir-rest-adapter/src/main/java/dev/dsf/fhir/adapter/FhirAdapter.java
+++ b/dsf-fhir/dsf-fhir-rest-adapter/src/main/java/dev/dsf/fhir/adapter/FhirAdapter.java
@@ -64,10 +64,16 @@ public class FhirAdapter implements MessageBodyReader, MessageBody
private final FhirContext fhirContext;
private final ReferenceCleaner referenceCleaner;
+ /**
+ * @param fhirContext
+ * not null
+ * @param referenceCleaner
+ * not null
+ */
public FhirAdapter(FhirContext fhirContext, ReferenceCleaner referenceCleaner)
{
- this.fhirContext = fhirContext;
- this.referenceCleaner = referenceCleaner;
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
}
private IParser getParser(MediaType mediaType, Supplier parserFactor)
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ResourceOperationOutcome.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ResourceOperationOutcome.java
index 1407b904d..8f4cf5289 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ResourceOperationOutcome.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ResourceOperationOutcome.java
@@ -25,7 +25,6 @@
import org.hl7.fhir.r4.model.OperationOutcome;
import org.hl7.fhir.r4.model.Resource;
import org.hl7.fhir.r4.model.ResourceType;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.common.auth.conf.OrganizationIdentity;
import dev.dsf.common.auth.conf.PractitionerIdentity;
@@ -35,7 +34,7 @@
import dev.dsf.fhir.help.ExceptionHandler;
import dev.dsf.fhir.webservice.impl.RootServiceImpl;
-public class ResourceOperationOutcome extends AbstractThymeleafContext implements ThymeleafContext, InitializingBean
+public class ResourceOperationOutcome extends AbstractThymeleafContext implements ThymeleafContext
{
private record Element(String status, Boolean active, String type, String title, String subtitle, String unit,
String value, String link)
@@ -52,20 +51,20 @@ private record ByteSize(double value, String unit)
private final StatisticsDao statisticsDao;
private final ExceptionHandler exceptionHandler;
+ /**
+ * @param buildInfoReader
+ * not null
+ * @param statisticsDao
+ * not null
+ * @param exceptionHandler
+ * not null
+ */
public ResourceOperationOutcome(BuildInfoReader buildInfoReader, StatisticsDao statisticsDao,
ExceptionHandler exceptionHandler)
{
- this.buildInfoReader = buildInfoReader;
- this.statisticsDao = statisticsDao;
- this.exceptionHandler = exceptionHandler;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(buildInfoReader, "buildInfoReader");
- Objects.requireNonNull(statisticsDao, "statisticsDao");
- Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.buildInfoReader = Objects.requireNonNull(buildInfoReader, "buildInfoReader");
+ this.statisticsDao = Objects.requireNonNull(statisticsDao, "statisticsDao");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafAdapter.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafAdapter.java
index 94aeded9d..a7c78bb13 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafAdapter.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafAdapter.java
@@ -27,7 +27,6 @@
import org.hl7.fhir.r4.model.Bundle.BundleType;
import org.hl7.fhir.r4.model.Coding;
import org.hl7.fhir.r4.model.Resource;
-import org.springframework.beans.factory.InitializingBean;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.WebApplicationException;
@@ -41,7 +40,7 @@
@Provider
@Produces(MediaType.TEXT_HTML)
-public class ThymeleafAdapter implements MessageBodyWriter, InitializingBean
+public class ThymeleafAdapter implements MessageBodyWriter
{
@Context
private volatile UriInfo uriInfo;
@@ -51,15 +50,13 @@ public class ThymeleafAdapter implements MessageBodyWriter, Initializi
private final ThymeleafTemplateService thymeleafTemplateService;
+ /**
+ * @param thymeleafTemplateService
+ * not null
+ */
public ThymeleafAdapter(ThymeleafTemplateService thymeleafTemplateService)
{
- this.thymeleafTemplateService = thymeleafTemplateService;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(thymeleafTemplateService, "thymeleafTemplateService");
+ this.thymeleafTemplateService = Objects.requireNonNull(thymeleafTemplateService, "thymeleafTemplateService");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafTemplateServiceImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafTemplateServiceImpl.java
index c5dd2958b..fd7e8a521 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafTemplateServiceImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/adapter/ThymeleafTemplateServiceImpl.java
@@ -48,7 +48,6 @@
import org.hl7.fhir.r4.model.Bundle.BundleLinkComponent;
import org.hl7.fhir.r4.model.IdType;
import org.hl7.fhir.r4.model.Resource;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.web.util.HtmlUtils;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
@@ -66,7 +65,7 @@
import jakarta.ws.rs.core.SecurityContext;
import jakarta.ws.rs.core.UriInfo;
-public class ThymeleafTemplateServiceImpl implements ThymeleafTemplateService, InitializingBean
+public class ThymeleafTemplateServiceImpl implements ThymeleafTemplateService
{
private static final String RESOURCE_NAMES = "Account|ActivityDefinition|AdverseEvent|AllergyIntolerance|Appointment|AppointmentResponse|AuditEvent|Basic|Binary"
+ "|BiologicallyDerivedProduct|BodyStructure|Bundle|CapabilityStatement|CarePlan|CareTeam|CatalogEntry|ChargeItem|ChargeItemDefinition|Claim|ClaimResponse"
@@ -130,9 +129,9 @@ private static record Heading(String href, String title, String text)
public ThymeleafTemplateServiceImpl(String serverBaseUrl, Theme theme, FhirContext fhirContext,
List extends ThymeleafContext> contexts, boolean cacheEnabled, boolean modCssExists)
{
- this.serverBaseUrl = serverBaseUrl;
+ this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
this.theme = theme;
- this.fhirContext = fhirContext;
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
this.modCssExists = modCssExists;
contextsByResourceType = contexts == null ? Map.of()
@@ -160,14 +159,6 @@ public ThymeleafTemplateServiceImpl(String serverBaseUrl, Theme theme, FhirConte
}
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
- Objects.requireNonNull(fhirContext, "fhirContext");
- // theme may be null
- }
-
@Override
public void writeTo(Resource resource, Class> type, MediaType mediaType, UriInfo uriInfo,
SecurityContext securityContext, OutputStream outputStream) throws IOException
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/EndpointProviderImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/EndpointProviderImpl.java
index da5b9cff9..76e6afcbe 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/EndpointProviderImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/EndpointProviderImpl.java
@@ -24,30 +24,29 @@
import org.hl7.fhir.r4.model.Identifier;
import org.hl7.fhir.r4.model.Organization;
import org.hl7.fhir.r4.model.Reference;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.fhir.dao.EndpointDao;
import dev.dsf.fhir.help.ExceptionHandler;
-public class EndpointProviderImpl implements EndpointProvider, InitializingBean
+public class EndpointProviderImpl implements EndpointProvider
{
private final ExceptionHandler exceptionHandler;
private final EndpointDao dao;
private final String serverBaseUrl;
+ /**
+ * @param exceptionHandler
+ * not null
+ * @param dao
+ * not null
+ * @param serverBaseUrl
+ * not null
+ */
public EndpointProviderImpl(ExceptionHandler exceptionHandler, EndpointDao dao, String serverBaseUrl)
{
- this.exceptionHandler = exceptionHandler;
- this.dao = dao;
- this.serverBaseUrl = serverBaseUrl;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(exceptionHandler, "exceptionHandler");
- Objects.requireNonNull(dao, "dao");
- Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.dao = Objects.requireNonNull(dao, "dao");
+ this.serverBaseUrl = Objects.requireNonNull(serverBaseUrl, "serverBaseUrl");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/IdentityProviderImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/IdentityProviderImpl.java
index 7164c8a7a..be8a4b63c 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/IdentityProviderImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/IdentityProviderImpl.java
@@ -25,7 +25,6 @@
import org.hl7.fhir.r4.model.Practitioner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.common.auth.conf.AbstractIdentityProvider;
import dev.dsf.common.auth.conf.Identity;
@@ -35,8 +34,7 @@
import dev.dsf.common.auth.conf.RoleConfig;
import dev.dsf.common.auth.conf.X509CertificateWrapper;
-public class IdentityProviderImpl extends AbstractIdentityProvider
- implements IdentityProvider, InitializingBean
+public class IdentityProviderImpl extends AbstractIdentityProvider implements IdentityProvider
{
private static final Logger logger = LoggerFactory.getLogger(IdentityProviderImpl.class);
@@ -44,22 +42,25 @@ public class IdentityProviderImpl extends AbstractIdentityProvidernull
+ * @param organizationProvider
+ * not null
+ * @param endpointProvider
+ * not null
+ * @param localOrganizationIdentifierValue
+ * not null
+ */
public IdentityProviderImpl(RoleConfig roleConfig, OrganizationProvider organizationProvider,
EndpointProvider endpointProvider, String localOrganizationIdentifierValue)
{
super(roleConfig);
- this.organizationProvider = organizationProvider;
- this.endpointProvider = endpointProvider;
- this.localOrganizationIdentifierValue = localOrganizationIdentifierValue;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(organizationProvider, "organizationProvider");
- Objects.requireNonNull(endpointProvider, "endpointProvider");
- Objects.requireNonNull(localOrganizationIdentifierValue, "localOrganizationIdentifierValue");
+ this.organizationProvider = Objects.requireNonNull(organizationProvider, "organizationProvider");
+ this.endpointProvider = Objects.requireNonNull(endpointProvider, "endpointProvider");
+ this.localOrganizationIdentifierValue = Objects.requireNonNull(localOrganizationIdentifierValue,
+ "localOrganizationIdentifierValue");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/OrganizationProviderImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/OrganizationProviderImpl.java
index 27af9ad20..b709ad056 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/OrganizationProviderImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authentication/OrganizationProviderImpl.java
@@ -20,32 +20,33 @@
import java.util.Optional;
import org.hl7.fhir.r4.model.Organization;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.common.auth.conf.Identity;
import dev.dsf.common.auth.conf.OrganizationIdentityImpl;
import dev.dsf.fhir.dao.OrganizationDao;
import dev.dsf.fhir.help.ExceptionHandler;
-public class OrganizationProviderImpl implements OrganizationProvider, InitializingBean
+public class OrganizationProviderImpl implements OrganizationProvider
{
private final ExceptionHandler exceptionHandler;
private final OrganizationDao dao;
private final String localOrganizationIdentifierValue;
+ /**
+ * @param exceptionHandler
+ * not null
+ * @param dao
+ * not null
+ * @param localOrganizationIdentifierValue
+ * not null
+ */
public OrganizationProviderImpl(ExceptionHandler exceptionHandler, OrganizationDao dao,
String localOrganizationIdentifierValue)
{
- this.exceptionHandler = exceptionHandler;
- this.dao = dao;
- this.localOrganizationIdentifierValue = localOrganizationIdentifierValue;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(dao, "dao");
- Objects.requireNonNull(localOrganizationIdentifierValue, "localOrganizationIdentifierValue");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.dao = Objects.requireNonNull(dao, "dao");
+ this.localOrganizationIdentifierValue = Objects.requireNonNull(localOrganizationIdentifierValue,
+ "localOrganizationIdentifierValue");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/AbstractAuthorizationRule.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/AbstractAuthorizationRule.java
index 5abcebe1c..de438732b 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/AbstractAuthorizationRule.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/AbstractAuthorizationRule.java
@@ -32,7 +32,6 @@
import org.hl7.fhir.r4.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import dev.dsf.common.auth.conf.Identity;
@@ -56,7 +55,7 @@
import dev.dsf.fhir.service.ResourceReference.ReferenceType;
public abstract class AbstractAuthorizationRule>
- implements AuthorizationRule, InitializingBean
+ implements AuthorizationRule
{
private static final Logger logger = LoggerFactory.getLogger(AbstractAuthorizationRule.class);
@@ -79,17 +78,33 @@ public abstract class AbstractAuthorizationRulenull
+ * @param daoProvider
+ * not null
+ * @param serverBase
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param organizationProvider
+ * not null
+ * @param readAccessHelper
+ * not null
+ * @param parameterConverter
+ * not null
+ */
public AbstractAuthorizationRule(Class resourceType, DaoProvider daoProvider, String serverBase,
ReferenceResolver referenceResolver, OrganizationProvider organizationProvider,
ReadAccessHelper readAccessHelper, ParameterConverter parameterConverter)
{
- this.resourceType = resourceType;
- this.daoProvider = daoProvider;
- this.serverBase = serverBase;
- this.referenceResolver = referenceResolver;
- this.organizationProvider = organizationProvider;
- this.readAccessHelper = readAccessHelper;
- this.parameterConverter = parameterConverter;
+ this.resourceType = Objects.requireNonNull(resourceType, "resourceType");
+ this.daoProvider = Objects.requireNonNull(daoProvider, "daoProvider");
+ this.serverBase = Objects.requireNonNull(serverBase, "serverBase");
+ this.referenceResolver = Objects.requireNonNull(referenceResolver, "referenceResolver");
+ this.organizationProvider = Objects.requireNonNull(organizationProvider, "organizationProvider");
+ this.readAccessHelper = Objects.requireNonNull(readAccessHelper, "readAccessHelper");
+ this.parameterConverter = Objects.requireNonNull(parameterConverter, "parameterConverter");
createRole = FhirServerRoleImpl.create(resourceType);
readRole = FhirServerRoleImpl.read(resourceType);
@@ -101,18 +116,6 @@ public AbstractAuthorizationRule(Class resourceType, DaoProvider daoProvider,
websocketRole = FhirServerRoleImpl.websocket(resourceType);
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(resourceType, "resourceType");
- Objects.requireNonNull(daoProvider, "daoProvider");
- Objects.requireNonNull(serverBase, "serverBase");
- Objects.requireNonNull(referenceResolver, "referenceResolver");
- Objects.requireNonNull(organizationProvider, "organizationProvider");
- Objects.requireNonNull(readAccessHelper, "readAccessHelper");
- Objects.requireNonNull(parameterConverter, "parameterConverter");
- }
-
@Override
public Class getResourceType()
{
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/AbstractMetaTagAuthorizationRule.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/AbstractMetaTagAuthorizationRule.java
index 8ff61fbf0..49f2acf83 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/AbstractMetaTagAuthorizationRule.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/AbstractMetaTagAuthorizationRule.java
@@ -42,6 +42,22 @@ public abstract class AbstractMetaTagAuthorizationRulenull
+ * @param daoProvider
+ * not null
+ * @param serverBase
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param organizationProvider
+ * not null
+ * @param readAccessHelper
+ * not null
+ * @param parameterConverter
+ * not null
+ */
public AbstractMetaTagAuthorizationRule(Class resourceType, DaoProvider daoProvider, String serverBase,
ReferenceResolver referenceResolver, OrganizationProvider organizationProvider,
ReadAccessHelper readAccessHelper, ParameterConverter parameterConverter)
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/ActivityDefinitionAuthorizationRule.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/ActivityDefinitionAuthorizationRule.java
index cff828252..e4fac5da6 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/ActivityDefinitionAuthorizationRule.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/ActivityDefinitionAuthorizationRule.java
@@ -45,6 +45,22 @@ public class ActivityDefinitionAuthorizationRule
private final ProcessAuthorizationHelper processAuthorizationHelper;
+ /**
+ * @param daoProvider
+ * not null
+ * @param serverBase
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param organizationProvider
+ * not null
+ * @param readAccessHelper
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param processAuthorizationHelper
+ * not null
+ */
public ActivityDefinitionAuthorizationRule(DaoProvider daoProvider, String serverBase,
ReferenceResolver referenceResolver, OrganizationProvider organizationProvider,
ReadAccessHelper readAccessHelper, ParameterConverter parameterConverter,
@@ -53,15 +69,8 @@ public ActivityDefinitionAuthorizationRule(DaoProvider daoProvider, String serve
super(ActivityDefinition.class, daoProvider, serverBase, referenceResolver, organizationProvider,
readAccessHelper, parameterConverter);
- this.processAuthorizationHelper = processAuthorizationHelper;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(processAuthorizationHelper, "processAuthorizationHelper");
+ this.processAuthorizationHelper = Objects.requireNonNull(processAuthorizationHelper,
+ "processAuthorizationHelper");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/TaskAuthorizationRule.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/TaskAuthorizationRule.java
index 0b790a5df..9cb98d5c5 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/TaskAuthorizationRule.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/authorization/TaskAuthorizationRule.java
@@ -82,6 +82,26 @@ public class TaskAuthorizationRule extends AbstractAuthorizationRulenull
+ * @param serverBase
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param organizationProvider
+ * not null
+ * @param readAccessHelper
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param processAuthorizationHelper
+ * not null
+ * @param fhirContext
+ * not null
+ * @param endpointProvider
+ * not null
+ */
public TaskAuthorizationRule(DaoProvider daoProvider, String serverBase, ReferenceResolver referenceResolver,
OrganizationProvider organizationProvider, ReadAccessHelper readAccessHelper,
ParameterConverter parameterConverter, ProcessAuthorizationHelper processAuthorizationHelper,
@@ -90,19 +110,10 @@ public TaskAuthorizationRule(DaoProvider daoProvider, String serverBase, Referen
super(Task.class, daoProvider, serverBase, referenceResolver, organizationProvider, readAccessHelper,
parameterConverter);
- this.processAuthorizationHelper = processAuthorizationHelper;
- this.fhirContext = fhirContext;
- this.endpointProvider = endpointProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(processAuthorizationHelper, "processAuthorizationHelper");
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(endpointProvider, "endpointProvider");
+ this.processAuthorizationHelper = Objects.requireNonNull(processAuthorizationHelper,
+ "processAuthorizationHelper");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.endpointProvider = Objects.requireNonNull(endpointProvider, "endpointProvider");
}
private boolean isLocalOrganization(Organization organization)
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/client/ClientProviderImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/client/ClientProviderImpl.java
index 9708f10fd..071d8be8c 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/client/ClientProviderImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/client/ClientProviderImpl.java
@@ -22,7 +22,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import dev.dsf.common.buildinfo.BuildInfoReader;
@@ -31,7 +30,7 @@
import dev.dsf.fhir.help.ExceptionHandler;
import dev.dsf.fhir.service.ReferenceCleaner;
-public class ClientProviderImpl implements ClientProvider, InitializingBean
+public class ClientProviderImpl implements ClientProvider
{
private static final Logger logger = LoggerFactory.getLogger(ClientProviderImpl.class);
private static final String USER_AGENT_VALUE = "DSF/";
@@ -50,37 +49,53 @@ public class ClientProviderImpl implements ClientProvider, InitializingBean
private final ExceptionHandler exceptionHandler;
private final BuildInfoReader buildInfoReader;
+ /**
+ * @param webserviceTrustStore
+ * not null
+ * @param webserviceKeyStore
+ * not null
+ * @param webserviceKeyStorePassword
+ * not null
+ * @param remoteReadTimeout
+ * not null, not negative, 0 represents infinity
+ * @param remoteConnectTimeout
+ * not null, not negative, 0 represents infinity
+ * @param proxyConfig
+ * not null
+ * @param logRequests
+ * @param fhirContext
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param endpointDao
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param buildInfoReader
+ * not null
+ */
public ClientProviderImpl(KeyStore webserviceTrustStore, KeyStore webserviceKeyStore,
char[] webserviceKeyStorePassword, Duration remoteReadTimeout, Duration remoteConnectTimeout,
ProxyConfig proxyConfig, boolean logRequests, FhirContext fhirContext, ReferenceCleaner referenceCleaner,
EndpointDao endpointDao, ExceptionHandler exceptionHandler, BuildInfoReader buildInfoReader)
{
- this.webserviceTrustStore = webserviceTrustStore;
- this.webserviceKeyStore = webserviceKeyStore;
- this.webserviceKeyStorePassword = webserviceKeyStorePassword;
- this.remoteReadTimeout = remoteReadTimeout;
- this.remoteConnectTimeout = remoteConnectTimeout;
- this.proxyConfig = proxyConfig;
+ this.webserviceTrustStore = Objects.requireNonNull(webserviceTrustStore, "webserviceTrustStore");
+ this.webserviceKeyStore = Objects.requireNonNull(webserviceKeyStore, "webserviceKeyStore");
+ this.webserviceKeyStorePassword = Objects.requireNonNull(webserviceKeyStorePassword,
+ "webserviceKeyStorePassword");
+ this.remoteReadTimeout = Objects.requireNonNull(remoteReadTimeout, "remoteReadTimeout");
+ if (remoteReadTimeout.isNegative())
+ throw new IllegalArgumentException("remoteReadTimeout negative");
+ this.remoteConnectTimeout = Objects.requireNonNull(remoteConnectTimeout, "remoteConnectTimeout");
+ if (remoteConnectTimeout.isNegative())
+ throw new IllegalArgumentException("remoteConnectTimeout negative");
+ this.proxyConfig = Objects.requireNonNull(proxyConfig, "proxyConfig");
this.logRequests = logRequests;
- this.fhirContext = fhirContext;
- this.referenceCleaner = referenceCleaner;
- this.endpointDao = endpointDao;
- this.exceptionHandler = exceptionHandler;
- this.buildInfoReader = buildInfoReader;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(webserviceTrustStore, "webserviceTrustStore");
- Objects.requireNonNull(webserviceKeyStore, "webserviceKeyStore");
- Objects.requireNonNull(webserviceKeyStorePassword, "webserviceKeyStorePassword");
- Objects.requireNonNull(proxyConfig, "proxyConfig");
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(referenceCleaner, "referenceCleaner");
- Objects.requireNonNull(endpointDao, "endpointDao");
- Objects.requireNonNull(exceptionHandler, "exceptionHandler");
- Objects.requireNonNull(buildInfoReader, "buildInfoReader");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
+ this.endpointDao = Objects.requireNonNull(endpointDao, "endpointDao");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.buildInfoReader = Objects.requireNonNull(buildInfoReader, "buildInfoReader");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommand.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommand.java
index 440a28f36..465202aab 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommand.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommand.java
@@ -15,6 +15,8 @@
*/
package dev.dsf.fhir.dao.command;
+import java.util.Objects;
+
import org.hl7.fhir.r4.model.Bundle;
import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent;
import org.slf4j.Logger;
@@ -40,6 +42,22 @@ public abstract class AbstractCommand implements Command
protected final AuthorizationHelper authorizationHelper;
+ /**
+ * @param transactionPriority
+ * @param index
+ * @param identity
+ * not null
+ * @param returnType
+ * not null
+ * @param bundle
+ * not null
+ * @param entry
+ * not null
+ * @param serverBase
+ * not null
+ * @param authorizationHelper
+ * not null
+ */
public AbstractCommand(int transactionPriority, int index, Identity identity, PreferReturnType returnType,
Bundle bundle, BundleEntryComponent entry, String serverBase, AuthorizationHelper authorizationHelper)
{
@@ -47,13 +65,13 @@ public AbstractCommand(int transactionPriority, int index, Identity identity, Pr
this.index = index;
- this.identity = identity;
- this.returnType = returnType;
- this.bundle = bundle;
- this.entry = entry;
- this.serverBase = serverBase;
+ this.identity = Objects.requireNonNull(identity, "identity");
+ this.returnType = Objects.requireNonNull(returnType, "returnType");
+ this.bundle = Objects.requireNonNull(bundle, "bundle");
+ this.entry = Objects.requireNonNull(entry, "entry");
+ this.serverBase = Objects.requireNonNull(serverBase, "serverBase");
- this.authorizationHelper = authorizationHelper;
+ this.authorizationHelper = Objects.requireNonNull(authorizationHelper, "authorizationHelper");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommandList.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommandList.java
index 3bb4ea121..c87b984cf 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommandList.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommandList.java
@@ -143,13 +143,25 @@ private BundleEntryComponent toEntry(Exception exception,
protected final boolean hasModifyingCommands;
protected final boolean hasBinaryModifyingCommands;
+ /**
+ * @param dataSource
+ * not null
+ * @param permanentDeleteDataSource
+ * not null
+ * @param dbUsersGroup
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param commands
+ * may be null
+ */
protected AbstractCommandList(DataSource dataSource, DataSource permanentDeleteDataSource, String dbUsersGroup,
ExceptionHandler exceptionHandler, List extends Command> commands, Comparator sortOrder)
{
- this.dataSource = dataSource;
- this.permanentDeleteDataSource = permanentDeleteDataSource;
- this.dbUsersGroup = dbUsersGroup;
- this.exceptionHandler = exceptionHandler;
+ this.dataSource = Objects.requireNonNull(dataSource, "dataSource");
+ this.permanentDeleteDataSource = Objects.requireNonNull(permanentDeleteDataSource, "permanentDeleteDataSource");
+ this.dbUsersGroup = Objects.requireNonNull(dbUsersGroup, "dbUsersGroup");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
this.commands = commands == null ? List.of()
: commands.stream().sorted(sortOrder).map(CommandResult::new).toList();
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommandWithResource.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommandWithResource.java
index ff80a1aa8..121b405cf 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommandWithResource.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/AbstractCommandWithResource.java
@@ -15,6 +15,8 @@
*/
package dev.dsf.fhir.dao.command;
+import java.util.Objects;
+
import org.hl7.fhir.r4.model.Bundle;
import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent;
import org.hl7.fhir.r4.model.Resource;
@@ -39,6 +41,36 @@ public abstract class AbstractCommandWithResource referencesHelper;
+ /**
+ * @param transactionPriority
+ * @param index
+ * @param identity
+ * not null
+ * @param returnType
+ * not null
+ * @param bundle
+ * not null
+ * @param entry
+ * not null
+ * @param serverBase
+ * not null
+ * @param authorizationHelper
+ * not null
+ * @param resource
+ * not null
+ * @param dao
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param referenceExtractor
+ * not null
+ * @param referenceResolver
+ * not null
+ */
public AbstractCommandWithResource(int transactionPriority, int index, Identity identity,
PreferReturnType returnType, Bundle bundle, BundleEntryComponent entry, String serverBase,
AuthorizationHelper authorizationHelper, R resource, D dao, ExceptionHandler exceptionHandler,
@@ -47,11 +79,11 @@ public AbstractCommandWithResource(int transactionPriority, int index, Identity
{
super(transactionPriority, index, identity, returnType, bundle, entry, serverBase, authorizationHelper);
- this.resource = resource;
- this.dao = dao;
- this.exceptionHandler = exceptionHandler;
- this.parameterConverter = parameterConverter;
- this.validationRules = validationRules;
+ this.resource = Objects.requireNonNull(resource, "resource");
+ this.dao = Objects.requireNonNull(dao, "dao");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.parameterConverter = Objects.requireNonNull(parameterConverter, "parameterConverter");
+ this.validationRules = Objects.requireNonNull(validationRules, "validationRules");
referencesHelper = new ReferencesHelperImpl<>(index, resource, serverBase, referenceExtractor,
referenceResolver, responseGenerator);
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/BatchCommandList.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/BatchCommandList.java
index 657a8f441..522357dfc 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/BatchCommandList.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/BatchCommandList.java
@@ -21,6 +21,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.function.Predicate;
@@ -50,16 +51,36 @@ public class BatchCommandList extends AbstractCommandList implements CommandList
private final EventHandler eventHandler;
private final ResponseGenerator responseGenerator;
- public BatchCommandList(DataSource dataSource, DataSource permanentDeleteDataSource, String selectUpdateUser,
+ /**
+ * @param dataSource
+ * not null
+ * @param permanentDeleteDataSource
+ * not null
+ * @param dbUsersGroup
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param commands
+ * not null
+ * @param validationHelper
+ * not null
+ * @param snapshotGenerator
+ * not null
+ * @param eventHandler
+ * not null
+ * @param responseGenerator
+ * not null
+ */
+ public BatchCommandList(DataSource dataSource, DataSource permanentDeleteDataSource, String dbUsersGroup,
ExceptionHandler exceptionHandler, List extends Command> commands, ValidationHelper validationHelper,
SnapshotGenerator snapshotGenerator, EventHandler eventHandler, ResponseGenerator responseGenerator)
{
- super(dataSource, permanentDeleteDataSource, selectUpdateUser, exceptionHandler, commands, (_, _) -> 0);
+ super(dataSource, permanentDeleteDataSource, dbUsersGroup, exceptionHandler, commands, (_, _) -> 0);
- this.validationHelper = validationHelper;
- this.snapshotGenerator = snapshotGenerator;
- this.eventHandler = eventHandler;
- this.responseGenerator = responseGenerator;
+ this.validationHelper = Objects.requireNonNull(validationHelper, "validationHelper");
+ this.snapshotGenerator = Objects.requireNonNull(snapshotGenerator, "snapshotGenerator");
+ this.eventHandler = Objects.requireNonNull(eventHandler, "eventHandler");
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CommandFactoryImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CommandFactoryImpl.java
index bcefeadbe..7a76f6046 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CommandFactoryImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CommandFactoryImpl.java
@@ -31,7 +31,6 @@
import org.hl7.fhir.r4.model.StructureDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.common.auth.conf.Identity;
import dev.dsf.fhir.dao.ResourceDao;
@@ -52,7 +51,7 @@
import dev.dsf.fhir.validation.SnapshotGenerator;
import dev.dsf.fhir.validation.ValidationRules;
-public class CommandFactoryImpl implements InitializingBean, CommandFactory
+public class CommandFactoryImpl implements CommandFactory
{
private static final Logger logger = LoggerFactory.getLogger(CommandFactoryImpl.class);
@@ -77,6 +76,48 @@ public class CommandFactoryImpl implements InitializingBean, CommandFactory
private final DefaultProfileProvider defaultProfileProvider;
private final Function transactionResourcesFactory;
+ /**
+ * @param serverBase
+ * not null
+ * @param defaultPageCount
+ * >= 0
+ * @param dataSource
+ * not null
+ * @param permanentDeleteDataSource
+ * not null
+ * @param dbUsersGroup
+ * not null
+ * @param daoProvider
+ * not null
+ * @param referenceExtractor
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param eventHandler
+ * not null
+ * @param eventGenerator
+ * not null
+ * @param authorizationHelper
+ * not null
+ * @param validationHelper
+ * not null
+ * @param snapshotGenerator
+ * not null
+ * @param validationRules
+ * not null
+ * @param defaultProfileProvider
+ * not null
+ * @param transactionResourcesFactory
+ * not null
+ */
public CommandFactoryImpl(String serverBase, int defaultPageCount, DataSource dataSource,
DataSource permanentDeleteDataSource, String dbUsersGroup, DaoProvider daoProvider,
ReferenceExtractor referenceExtractor, ReferenceResolver referenceResolver,
@@ -87,49 +128,29 @@ public CommandFactoryImpl(String serverBase, int defaultPageCount, DataSource da
DefaultProfileProvider defaultProfileProvider,
Function transactionResourcesFactory)
{
- this.serverBase = serverBase;
+ this.serverBase = Objects.requireNonNull(serverBase, "serverBase");
+ if (defaultPageCount < 0)
+ throw new IllegalArgumentException("defaultPageCount < 0");
this.defaultPageCount = defaultPageCount;
- this.dataSource = dataSource;
- this.permanentDeleteDataSource = permanentDeleteDataSource;
- this.dbUsersGroup = dbUsersGroup;
- this.daoProvider = daoProvider;
- this.referenceExtractor = referenceExtractor;
- this.referenceResolver = referenceResolver;
- this.referenceCleaner = referenceCleaner;
- this.responseGenerator = responseGenerator;
- this.exceptionHandler = exceptionHandler;
- this.parameterConverter = parameterConverter;
- this.eventHandler = eventHandler;
- this.eventGenerator = eventGenerator;
+ this.dataSource = Objects.requireNonNull(dataSource, "dataSource");
+ this.permanentDeleteDataSource = Objects.requireNonNull(permanentDeleteDataSource, "permanentDeleteDataSource");
+ this.dbUsersGroup = Objects.requireNonNull(dbUsersGroup, "dbUsersGroup");
+ this.daoProvider = Objects.requireNonNull(daoProvider, "daoProvider");
+ this.referenceExtractor = Objects.requireNonNull(referenceExtractor, "referenceExtractor");
+ this.referenceResolver = Objects.requireNonNull(referenceResolver, "referenceResolver");
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.parameterConverter = Objects.requireNonNull(parameterConverter, "parameterConverter");
+ this.eventHandler = Objects.requireNonNull(eventHandler, "eventHandler");
+ this.eventGenerator = Objects.requireNonNull(eventGenerator, "eventGenerator");
this.authorizationHelper = authorizationHelper;
- this.validationHelper = validationHelper;
- this.snapshotGenerator = snapshotGenerator;
- this.validationRules = validationRules;
- this.defaultProfileProvider = defaultProfileProvider;
- this.transactionResourcesFactory = transactionResourcesFactory;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(serverBase, "serverBase");
- Objects.requireNonNull(dataSource, "dataSource");
- Objects.requireNonNull(permanentDeleteDataSource, "permanentDeleteDataSource");
-
- Objects.requireNonNull(daoProvider, "daoProvider");
- Objects.requireNonNull(referenceExtractor, "referenceExtractor");
- Objects.requireNonNull(referenceResolver, "referenceResolver");
- Objects.requireNonNull(referenceCleaner, "referenceCleaner");
- Objects.requireNonNull(responseGenerator, "responseGenerator");
- Objects.requireNonNull(exceptionHandler, "exceptionHandler");
- Objects.requireNonNull(parameterConverter, "parameterConverter");
- Objects.requireNonNull(eventHandler, "eventHandler");
- Objects.requireNonNull(eventGenerator, "eventGenerator");
- Objects.requireNonNull(authorizationHelper, "authorizationHelper");
- Objects.requireNonNull(validationHelper, "validationHelper");
- Objects.requireNonNull(snapshotGenerator, "snapshotGenerator");
- Objects.requireNonNull(validationRules, "validationRules");
- Objects.requireNonNull(transactionResourcesFactory, "transactionResourcesFactory");
+ this.validationHelper = Objects.requireNonNull(validationHelper, "validationHelper");
+ this.snapshotGenerator = Objects.requireNonNull(snapshotGenerator, "snapshotGenerator");
+ this.validationRules = Objects.requireNonNull(validationRules, "validationRules");
+ this.defaultProfileProvider = Objects.requireNonNull(defaultProfileProvider, "defaultProfileProvider");
+ this.transactionResourcesFactory = Objects.requireNonNull(transactionResourcesFactory,
+ "transactionResourcesFactory");
}
// head
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CreateCommand.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CreateCommand.java
index 1bcf6f20b..a37a097b5 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CreateCommand.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CreateCommand.java
@@ -21,6 +21,7 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -81,6 +82,41 @@ public class CreateCommand> extends
protected Response responseResult;
protected ValidationResult validationResult;
+ /**
+ * @param index
+ * @param identity
+ * @param returnType
+ * not null
+ * @param bundle
+ * not null
+ * @param entry
+ * not null
+ * @param serverBase
+ * not null
+ * @param authorizationHelper
+ * not null
+ * @param resource
+ * not null
+ * @param dao
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param referenceExtractor
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param eventGenerator
+ * not null
+ * @param defaultProfileProvider
+ * not null
+ * @param enableValidation
+ */
public CreateCommand(int index, Identity identity, PreferReturnType returnType, Bundle bundle,
BundleEntryComponent entry, String serverBase, AuthorizationHelper authorizationHelper, R resource, D dao,
ExceptionHandler exceptionHandler, ParameterConverter parameterConverter, ValidationRules validationRules,
@@ -92,11 +128,11 @@ public CreateCommand(int index, Identity identity, PreferReturnType returnType,
exceptionHandler, parameterConverter, validationRules, responseGenerator, referenceExtractor,
referenceResolver);
- this.responseGenerator = responseGenerator;
- this.referenceCleaner = referenceCleaner;
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
- this.eventGenerator = eventGenerator;
- this.defaultProfileProvider = defaultProfileProvider;
+ this.eventGenerator = Objects.requireNonNull(eventGenerator, "eventGenerator");
+ this.defaultProfileProvider = Objects.requireNonNull(defaultProfileProvider, "defaultProfileProvider");
this.enableValidation = enableValidation;
if (PreferReturnType.OPERATION_OUTCOME.equals(returnType) && !enableValidation)
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CreateStructureDefinitionCommand.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CreateStructureDefinitionCommand.java
index 028836787..f70f227b4 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CreateStructureDefinitionCommand.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/CreateStructureDefinitionCommand.java
@@ -56,6 +56,44 @@ public class CreateStructureDefinitionCommand extends CreateCommandnull
+ * @param returnType
+ * not null
+ * @param bundle
+ * not null
+ * @param entry
+ * not null
+ * @param serverBase
+ * not null
+ * @param authorizationHelper
+ * not null
+ * @param resource
+ * not null
+ * @param dao
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param referenceExtractor
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param eventGenerator
+ * not null
+ * @param defaultProfileProvider
+ * not null
+ * @param enableValidation
+ * @param snapshotDao
+ * not null
+ */
public CreateStructureDefinitionCommand(int index, Identity identity, PreferReturnType returnType, Bundle bundle,
BundleEntryComponent entry, String serverBase, AuthorizationHelper authorizationHelper,
StructureDefinition resource, StructureDefinitionDao dao, ExceptionHandler exceptionHandler,
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/DeleteCommand.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/DeleteCommand.java
index 5d3c344cb..c4482ce20 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/DeleteCommand.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/DeleteCommand.java
@@ -21,6 +21,7 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
@@ -70,6 +71,30 @@ public class DeleteCommand extends AbstractCommand implements ModifyingCommand
private Class extends Resource> resourceType;
private String id;
+ /**
+ * @param index
+ * @param identity
+ * @param returnType
+ * not null
+ * @param bundle
+ * not null
+ * @param entry
+ * not null
+ * @param serverBase
+ * not null
+ * @param authorizationHelper
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param daoProvider
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param eventGenerator
+ * not null
+ */
public DeleteCommand(int index, Identity identity, PreferReturnType returnType, Bundle bundle,
BundleEntryComponent entry, String serverBase, AuthorizationHelper authorizationHelper,
ResponseGenerator responseGenerator, DaoProvider daoProvider, ExceptionHandler exceptionHandler,
@@ -77,11 +102,11 @@ public DeleteCommand(int index, Identity identity, PreferReturnType returnType,
{
super(1, index, identity, returnType, bundle, entry, serverBase, authorizationHelper);
- this.responseGenerator = responseGenerator;
- this.daoProvider = daoProvider;
- this.exceptionHandler = exceptionHandler;
- this.parameterConverter = parameterConverter;
- this.eventGenerator = eventGenerator;
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
+ this.daoProvider = Objects.requireNonNull(daoProvider, "daoProvider");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.parameterConverter = Objects.requireNonNull(parameterConverter, "parameterConverter");
+ this.eventGenerator = Objects.requireNonNull(eventGenerator, "eventGenerator");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/DeleteStructureDefinitionCommand.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/DeleteStructureDefinitionCommand.java
index fd3e430d7..8519b28cc 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/DeleteStructureDefinitionCommand.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/DeleteStructureDefinitionCommand.java
@@ -41,6 +41,30 @@ public class DeleteStructureDefinitionCommand extends DeleteCommand
private final StructureDefinitionDao snapshotDao;
+ /**
+ * @param index
+ * @param identity
+ * @param returnType
+ * not null
+ * @param bundle
+ * not null
+ * @param entry
+ * not null
+ * @param serverBase
+ * not null
+ * @param authorizationHelper
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param daoProvider
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param eventGenerator
+ * not null
+ */
public DeleteStructureDefinitionCommand(int index, Identity identity, PreferReturnType returnType, Bundle bundle,
BundleEntryComponent entry, String serverBase, AuthorizationHelper authorizationHelper,
ResponseGenerator responseGenerator, DaoProvider daoProvider, ExceptionHandler exceptionHandler,
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/ReadCommand.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/ReadCommand.java
index 5a36b8386..7528fee4b 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/ReadCommand.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/ReadCommand.java
@@ -20,6 +20,7 @@
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
@@ -79,6 +80,34 @@ public class ReadCommand extends AbstractCommand implements Command
private Response responseResult;
private boolean search;
+ /**
+ * @param index
+ * @param identity
+ * @param returnType
+ * not null
+ * @param bundle
+ * not null
+ * @param entry
+ * not null
+ * @param serverBase
+ * not null
+ * @param authorizationHelper
+ * not null
+ * @param defaultPageCount
+ * >= 0
+ * @param daoProvider
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param handlingType
+ * not null
+ */
public ReadCommand(int index, Identity identity, PreferReturnType returnType, Bundle bundle,
BundleEntryComponent entry, String serverBase, AuthorizationHelper authorizationHelper,
int defaultPageCount, DaoProvider daoProvider, ParameterConverter parameterConverter,
@@ -87,14 +116,16 @@ public ReadCommand(int index, Identity identity, PreferReturnType returnType, Bu
{
super(5, index, identity, returnType, bundle, entry, serverBase, authorizationHelper);
+ if (defaultPageCount < 0)
+ throw new IllegalArgumentException("defaultPageCount < 0");
this.defaultPageCount = defaultPageCount;
- this.daoProvider = daoProvider;
- this.parameterConverter = parameterConverter;
- this.responseGenerator = responseGenerator;
- this.exceptionHandler = exceptionHandler;
- this.referenceCleaner = referenceCleaner;
- this.handlingType = handlingType;
+ this.daoProvider = Objects.requireNonNull(daoProvider, "daoProvider");
+ this.parameterConverter = Objects.requireNonNull(parameterConverter, "parameterConverter");
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
+ this.handlingType = Objects.requireNonNull(handlingType, "handlingType");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/ReferencesHelperImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/ReferencesHelperImpl.java
index ac9d0098c..1539ea9ae 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/ReferencesHelperImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/ReferencesHelperImpl.java
@@ -17,6 +17,7 @@
import java.sql.Connection;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
@@ -49,15 +50,28 @@ public final class ReferencesHelperImpl implements Reference
private final ReferenceResolver referenceResolver;
private final ResponseGenerator responseGenerator;
+ /**
+ * @param index
+ * @param resource
+ * not null
+ * @param serverBase
+ * not null
+ * @param referenceExtractor
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param responseGenerator
+ * not null
+ */
public ReferencesHelperImpl(int index, R resource, String serverBase, ReferenceExtractor referenceExtractor,
ReferenceResolver referenceResolver, ResponseGenerator responseGenerator)
{
this.index = index;
- this.resource = resource;
- this.serverBase = serverBase;
- this.referenceExtractor = referenceExtractor;
- this.referenceResolver = referenceResolver;
- this.responseGenerator = responseGenerator;
+ this.resource = Objects.requireNonNull(resource, "resource");
+ this.serverBase = Objects.requireNonNull(serverBase, "serverBase");
+ this.referenceExtractor = Objects.requireNonNull(referenceExtractor, "referenceExtractor");
+ this.referenceResolver = Objects.requireNonNull(referenceResolver, "referenceResolver");
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/TransactionCommandList.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/TransactionCommandList.java
index 1957b16bb..55acd7c29 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/TransactionCommandList.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/TransactionCommandList.java
@@ -21,6 +21,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.function.Function;
import javax.sql.DataSource;
@@ -50,6 +51,22 @@ public class TransactionCommandList extends AbstractCommandList implements Comma
private final Function transactionResourceFactory;
private final ResponseGenerator responseGenerator;
+ /**
+ * @param dataSource
+ * not null
+ * @param permanentDeleteDataSource
+ * not null
+ * @param dbUsersGroup
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param commands
+ * may be null
+ * @param transactionResourceFactory
+ * not null
+ * @param responseGenerator
+ * not null
+ */
public TransactionCommandList(DataSource dataSource, DataSource permanentDeleteDataSource, String dbUsersGroup,
ExceptionHandler exceptionHandler, List extends Command> commands,
Function transactionResourceFactory, ResponseGenerator responseGenerator)
@@ -57,8 +74,9 @@ public TransactionCommandList(DataSource dataSource, DataSource permanentDeleteD
super(dataSource, permanentDeleteDataSource, dbUsersGroup, exceptionHandler, commands,
Comparator.comparing(Command::getTransactionPriority).thenComparing(Command::getIndex));
- this.transactionResourceFactory = transactionResourceFactory;
- this.responseGenerator = responseGenerator;
+ this.transactionResourceFactory = Objects.requireNonNull(transactionResourceFactory,
+ "transactionResourceFactory");
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/UpdateCommand.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/UpdateCommand.java
index a75f1c9f9..ae5663986 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/UpdateCommand.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/UpdateCommand.java
@@ -83,6 +83,41 @@ public class UpdateCommand> extends
protected R updatedResource;
protected ValidationResult validationResult;
+ /**
+ * @param index
+ * @param identity
+ * @param returnType
+ * not null
+ * @param bundle
+ * not null
+ * @param entry
+ * not null
+ * @param serverBase
+ * not null
+ * @param authorizationHelper
+ * not null
+ * @param resource
+ * not null
+ * @param dao
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param referenceExtractor
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param eventGenerator
+ * not null
+ * @param defaultProfileProvider
+ * not null
+ * @param enableValidation
+ */
public UpdateCommand(int index, Identity identity, PreferReturnType returnType, Bundle bundle,
BundleEntryComponent entry, String serverBase, AuthorizationHelper authorizationHelper, R resource, D dao,
ExceptionHandler exceptionHandler, ParameterConverter parameterConverter, ValidationRules validationRules,
@@ -94,11 +129,11 @@ public UpdateCommand(int index, Identity identity, PreferReturnType returnType,
exceptionHandler, parameterConverter, validationRules, responseGenerator, referenceExtractor,
referenceResolver);
- this.responseGenerator = responseGenerator;
- this.referenceCleaner = referenceCleaner;
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
- this.eventGenerator = eventGenerator;
- this.defaultProfileProvider = defaultProfileProvider;
+ this.eventGenerator = Objects.requireNonNull(eventGenerator, "eventGenerator");
+ this.defaultProfileProvider = Objects.requireNonNull(defaultProfileProvider, "defaultProfileProvider");
this.enableValidation = enableValidation;
if (PreferReturnType.OPERATION_OUTCOME.equals(returnType) && !enableValidation)
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/UpdateStructureDefinitionCommand.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/UpdateStructureDefinitionCommand.java
index b2a9cb2b7..fad6d11c0 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/UpdateStructureDefinitionCommand.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/command/UpdateStructureDefinitionCommand.java
@@ -60,6 +60,43 @@ public class UpdateStructureDefinitionCommand extends UpdateCommandnull
+ * @param bundle
+ * not null
+ * @param entry
+ * not null
+ * @param serverBase
+ * not null
+ * @param authorizationHelper
+ * not null
+ * @param resource
+ * not null
+ * @param dao
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param referenceExtractor
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param eventGenerator
+ * not null
+ * @param defaultProfileProvider
+ * not null
+ * @param enableValidation
+ * @param snapshotDao
+ * not null
+ */
public UpdateStructureDefinitionCommand(int index, Identity identity, PreferReturnType returnType, Bundle bundle,
BundleEntryComponent entry, String serverBase, AuthorizationHelper authorizationHelper,
StructureDefinition resource, StructureDefinitionDao dao, ExceptionHandler exceptionHandler,
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractPreparedStatementFactory.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractPreparedStatementFactory.java
index d413b2e68..a94413e44 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractPreparedStatementFactory.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractPreparedStatementFactory.java
@@ -33,6 +33,22 @@ abstract class AbstractPreparedStatementFactory extends PgOb
private final String readByIdAndVersionSql;
private final String updateSql;
+ /**
+ * @param fhirContext
+ * not null
+ * @param objectMapper
+ * not null
+ * @param resourceType
+ * not null
+ * @param createSql
+ * not null
+ * @param readByIdSql
+ * not null
+ * @param readByIdAndVersionSql
+ * not null
+ * @param updateSql
+ * not null
+ */
protected AbstractPreparedStatementFactory(FhirContext fhirContext, ObjectMapper objectMapper,
Class resourceType, String createSql, String readByIdSql, String readByIdAndVersionSql, String updateSql)
{
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractResourceDaoJdbc.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractResourceDaoJdbc.java
index 8db9e7a7a..2038a6a45 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractResourceDaoJdbc.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/AbstractResourceDaoJdbc.java
@@ -40,7 +40,6 @@
import org.hl7.fhir.r4.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.JsonArray;
@@ -70,7 +69,7 @@
import dev.dsf.fhir.search.parameters.ResourceLastUpdated;
import dev.dsf.fhir.search.parameters.ResourceProfile;
-abstract class AbstractResourceDaoJdbc implements ResourceDao, InitializingBean
+abstract class AbstractResourceDaoJdbc implements ResourceDao
{
private static final Logger logger = LoggerFactory.getLogger(AbstractResourceDaoJdbc.class);
@@ -168,6 +167,30 @@ protected static SearchQueryParameterFactory factory(Str
return new SearchQueryParameterFactory<>(parameterName, supplier, nameModifiers, null, null);
}
+ /**
+ * @param dataSource
+ * not null
+ * @param permanentDeleteDataSource
+ * not null
+ * @param fhirContext
+ * not null
+ * @param objectMapper
+ * not null
+ * @param resourceType
+ * not null
+ * @param resourceTable
+ * not null, not blank
+ * @param resourceColumn
+ * not null, not blank
+ * @param resourceIdColumn
+ * not null, not blank
+ * @param userFilter
+ * not null
+ * @param searchParameterFactories
+ * may be null
+ * @param searchRevIncludeParameterFactories
+ * may be null
+ */
AbstractResourceDaoJdbc(DataSource dataSource, DataSource permanentDeleteDataSource, FhirContext fhirContext,
ObjectMapper objectMapper, Class resourceType, String resourceTable, String resourceColumn,
String resourceIdColumn, Function userFilter,
@@ -180,25 +203,47 @@ protected static SearchQueryParameterFactory factory(Str
userFilter, searchParameterFactories, searchRevIncludeParameterFactories);
}
+ /**
+ * @param dataSource
+ * not null
+ * @param permanentDeleteDataSource
+ * not null
+ * @param resourceType
+ * not null
+ * @param resourceTable
+ * not null
+ * @param resourceColumn
+ * not null
+ * @param resourceIdColumn
+ * not null
+ * @param preparedStatementFactory
+ * not null
+ * @param identityFilter
+ * not null
+ * @param searchParameterFactories
+ * may be null
+ * @param searchRevIncludeParameterFactories
+ * may be null
+ */
AbstractResourceDaoJdbc(DataSource dataSource, DataSource permanentDeleteDataSource, Class resourceType,
String resourceTable, String resourceColumn, String resourceIdColumn,
PreparedStatementFactory preparedStatementFactory,
- Function userFilter,
+ Function identityFilter,
List> searchParameterFactories,
List searchRevIncludeParameterFactories)
{
- this.dataSource = dataSource;
- this.permanentDeleteDataSource = permanentDeleteDataSource;
- this.resourceType = resourceType;
- resourceTypeName = Objects.requireNonNull(resourceType, "resourceType").getAnnotation(ResourceDef.class).name();
+ this.dataSource = Objects.requireNonNull(dataSource, "dataSource");
+ this.permanentDeleteDataSource = Objects.requireNonNull(permanentDeleteDataSource, "permanentDeleteDataSource");
+ this.resourceType = Objects.requireNonNull(resourceType, "resourceType");
+ resourceTypeName = resourceType.getAnnotation(ResourceDef.class).name();
- this.resourceTable = resourceTable;
- this.resourceColumn = resourceColumn;
- this.resourceIdColumn = resourceIdColumn;
+ this.resourceTable = Objects.requireNonNull(resourceTable, "resourceTable");
+ this.resourceColumn = Objects.requireNonNull(resourceColumn, "resourceColumn");
+ this.resourceIdColumn = Objects.requireNonNull(resourceIdColumn, "resourceIdColumn");
- this.preparedStatementFactory = preparedStatementFactory;
+ this.preparedStatementFactory = Objects.requireNonNull(preparedStatementFactory, "preparedStatementFactory");
- this.identityFilter = userFilter;
+ this.identityFilter = Objects.requireNonNull(identityFilter, "identityFilter");
if (searchParameterFactories != null)
this.searchParameterFactories.addAll(searchParameterFactories);
@@ -213,19 +258,6 @@ protected static SearchQueryParameterFactory factory(Str
() -> new ResourceProfile<>(resourceType, resourceColumn), ResourceProfile.getNameModifiers());
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(dataSource, "dataSource");
- Objects.requireNonNull(permanentDeleteDataSource, "permanentDeleteDataSource");
- Objects.requireNonNull(resourceType, "resourceType");
- Objects.requireNonNull(resourceTable, "resourceTable");
- Objects.requireNonNull(resourceColumn, "resourceColumn");
- Objects.requireNonNull(resourceIdColumn, "resourceIdColumn");
- Objects.requireNonNull(preparedStatementFactory, "preparedStatementFactory");
- Objects.requireNonNull(identityFilter, "userFilter");
- }
-
protected DataSource getDataSource()
{
return dataSource;
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/BinaryDaoJdbc.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/BinaryDaoJdbc.java
index a045d138f..06f277fc6 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/BinaryDaoJdbc.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/BinaryDaoJdbc.java
@@ -70,14 +70,6 @@ public BinaryDaoJdbc(DataSource dataSource, DataSource permanentDeleteDataSource
loUnlinker = Executors.newFixedThreadPool(1, r -> new Thread(r, "binaries-large-object-unlinker"));
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- executeLargeObjectUnlink();
- }
-
@Override
protected PreparedStatementFactoryBinary getPreparedStatementFactory()
{
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/HistoryDaoJdbc.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/HistoryDaoJdbc.java
index 9388874eb..37a4e2097 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/HistoryDaoJdbc.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/HistoryDaoJdbc.java
@@ -31,9 +31,7 @@
import org.hl7.fhir.r4.model.Binary;
import org.hl7.fhir.r4.model.Resource;
-import org.springframework.beans.factory.InitializingBean;
-import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import dev.dsf.fhir.dao.HistoryDao;
import dev.dsf.fhir.history.AtParameter;
@@ -44,29 +42,25 @@
import dev.dsf.fhir.search.PageAndCount;
import dev.dsf.fhir.search.SearchQueryParameter;
-public class HistoryDaoJdbc implements HistoryDao, InitializingBean
+public class HistoryDaoJdbc implements HistoryDao
{
private final DataSource dataSource;
- private final FhirContext fhirContext;
private final BinaryDaoJdbc binaryDao;
private final PgObjectFactory pgObjectFactory;
- public HistoryDaoJdbc(DataSource dataSource, FhirContext fhirContext, BinaryDaoJdbc binaryDao,
- PgObjectFactory pgObjectFactory)
+ /**
+ * @param dataSource
+ * not null
+ * @param binaryDao
+ * not null
+ * @param pgObjectFactory
+ * not null
+ */
+ public HistoryDaoJdbc(DataSource dataSource, BinaryDaoJdbc binaryDao, PgObjectFactory pgObjectFactory)
{
- this.dataSource = dataSource;
- this.fhirContext = fhirContext;
- this.binaryDao = binaryDao;
- this.pgObjectFactory = pgObjectFactory;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(dataSource, "dataSource");
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(binaryDao, "binaryDao");
- Objects.requireNonNull(pgObjectFactory, "pgObjectFactory");
+ this.dataSource = Objects.requireNonNull(dataSource, "dataSource");
+ this.binaryDao = Objects.requireNonNull(binaryDao, "binaryDao");
+ this.pgObjectFactory = Objects.requireNonNull(pgObjectFactory, "pgObjectFactory");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/LargeObjectManagerJdbc.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/LargeObjectManagerJdbc.java
index 465bebb08..14376510b 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/LargeObjectManagerJdbc.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/LargeObjectManagerJdbc.java
@@ -49,6 +49,14 @@ public class LargeObjectManagerJdbc implements LargeObjectManager
private final List createdOids = new ArrayList<>();
+ /**
+ * @param permanentDeleteDataSource
+ * not null
+ * @param dbUsersGroup
+ * not null
+ * @param connection
+ * not null
+ */
public LargeObjectManagerJdbc(DataSource permanentDeleteDataSource, String dbUsersGroup, Connection connection)
{
this.permanentDeleteDataSource = Objects.requireNonNull(permanentDeleteDataSource, "permanentDeleteDataSource");
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/PgObjectFactoryImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/PgObjectFactoryImpl.java
index cea7ed1c6..61b8c6b28 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/PgObjectFactoryImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/PgObjectFactoryImpl.java
@@ -21,7 +21,6 @@
import org.hl7.fhir.r4.model.Resource;
import org.postgresql.util.PGobject;
-import org.springframework.beans.factory.InitializingBean;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -30,22 +29,21 @@
import ca.uhn.fhir.parser.DataFormatException;
import ca.uhn.fhir.parser.IParser;
-public class PgObjectFactoryImpl implements PgObjectFactory, InitializingBean
+public class PgObjectFactoryImpl implements PgObjectFactory
{
private final FhirContext fhirContext;
private final ObjectMapper objectMapper;
+ /**
+ * @param fhirContext
+ * not null
+ * @param objectMapper
+ * not null
+ */
public PgObjectFactoryImpl(FhirContext fhirContext, ObjectMapper objectMapper)
{
- this.fhirContext = fhirContext;
- this.objectMapper = objectMapper;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(objectMapper, "objectMapper");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.objectMapper = Objects.requireNonNull(objectMapper, "objectMapper");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/PreparedStatementFactoryDefault.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/PreparedStatementFactoryDefault.java
index bce4a88b4..16f12a7ae 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/PreparedStatementFactoryDefault.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/PreparedStatementFactoryDefault.java
@@ -20,6 +20,7 @@
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.LocalDateTime;
+import java.util.Objects;
import java.util.UUID;
import org.hl7.fhir.r4.model.Resource;
@@ -30,9 +31,33 @@
class PreparedStatementFactoryDefault extends AbstractPreparedStatementFactory
{
+ /**
+ * @param fhirContext
+ * not null
+ * @param objectMapper
+ * not null
+ * @param resourceType
+ * not null
+ * @param resourceTable
+ * not null, not blank
+ * @param resourceIdColumn
+ * not null, not blank
+ * @param resourceColumn
+ * not null, not blank
+ */
PreparedStatementFactoryDefault(FhirContext fhirContext, ObjectMapper objectMapper, Class resourceType,
String resourceTable, String resourceIdColumn, String resourceColumn)
{
+ Objects.requireNonNull(resourceTable, "resourceTable");
+ if (resourceTable.isBlank())
+ throw new IllegalArgumentException("resourceTable blank");
+ Objects.requireNonNull(resourceIdColumn, "resourceIdColumn");
+ if (resourceIdColumn.isBlank())
+ throw new IllegalArgumentException("resourceIdColumn blank");
+ Objects.requireNonNull(resourceColumn, "resourceColumn");
+ if (resourceColumn.isBlank())
+ throw new IllegalArgumentException("resourceColumn blank");
+
super(fhirContext, objectMapper, resourceType, createSql(resourceTable, resourceIdColumn, resourceColumn),
readByIdSql(resourceTable, resourceIdColumn, resourceColumn),
readByIdAndVersionSql(resourceTable, resourceIdColumn, resourceColumn),
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/ReadAccessDaoJdbc.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/ReadAccessDaoJdbc.java
index d6f081b0e..1b52fa264 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/ReadAccessDaoJdbc.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/ReadAccessDaoJdbc.java
@@ -24,29 +24,13 @@
import java.util.Objects;
import java.util.UUID;
-import javax.sql.DataSource;
-
import org.postgresql.util.PGobject;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.parser.DataFormatException;
import dev.dsf.fhir.dao.ReadAccessDao;
-public class ReadAccessDaoJdbc implements ReadAccessDao, InitializingBean
+public class ReadAccessDaoJdbc implements ReadAccessDao
{
- private final DataSource dataSource;
-
- public ReadAccessDaoJdbc(DataSource dataSource)
- {
- this.dataSource = dataSource;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(dataSource, "dataSource");
- }
-
@Override
public List getAccessTypes(Connection connection, UUID resourceId, long version, boolean localIdentity,
UUID organizationId) throws SQLException
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/StatisticsDaoJdbc.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/StatisticsDaoJdbc.java
index 564f39435..3d929220c 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/StatisticsDaoJdbc.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/jdbc/StatisticsDaoJdbc.java
@@ -23,11 +23,9 @@
import javax.sql.DataSource;
-import org.springframework.beans.factory.InitializingBean;
-
import dev.dsf.fhir.dao.StatisticsDao;
-public class StatisticsDaoJdbc implements StatisticsDao, InitializingBean
+public class StatisticsDaoJdbc implements StatisticsDao
{
private static final String QUERY = """
SELECT
@@ -63,15 +61,13 @@ public class StatisticsDaoJdbc implements StatisticsDao, InitializingBean
private final DataSource dataSource;
+ /**
+ * @param dataSource
+ * not null
+ */
public StatisticsDaoJdbc(DataSource dataSource)
{
- this.dataSource = dataSource;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(dataSource, "dataSource");
+ this.dataSource = Objects.requireNonNull(dataSource, "dataSource");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/provider/DaoProviderImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/provider/DaoProviderImpl.java
index f4f2457c7..c3e125084 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/provider/DaoProviderImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/dao/provider/DaoProviderImpl.java
@@ -51,7 +51,6 @@
import org.hl7.fhir.r4.model.Subscription;
import org.hl7.fhir.r4.model.Task;
import org.hl7.fhir.r4.model.ValueSet;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import dev.dsf.fhir.dao.ActivityDefinitionDao;
@@ -83,7 +82,7 @@
import dev.dsf.fhir.dao.TaskDao;
import dev.dsf.fhir.dao.ValueSetDao;
-public class DaoProviderImpl implements DaoProvider, InitializingBean
+public class DaoProviderImpl implements DaoProvider
{
private final DataSource dataSource;
private final ActivityDefinitionDao activityDefinitionDao;
@@ -119,6 +118,66 @@ public class DaoProviderImpl implements DaoProvider, InitializingBean
private final Map, ResourceDao>> daosByResourceClass = new HashMap<>();
private final Map> daosByResourceTypeName = new HashMap<>();
+ /**
+ * @param dataSource
+ * not null
+ * @param activityDefinitionDao
+ * not null
+ * @param binaryDao
+ * not null
+ * @param bundleDao
+ * not null
+ * @param codeSystemDao
+ * not null
+ * @param documentReferenceDao
+ * not null
+ * @param endpointDao
+ * not null
+ * @param groupDao
+ * not null
+ * @param healthcareServiceDao
+ * not null
+ * @param libraryDao
+ * not null
+ * @param locationDao
+ * not null
+ * @param measureDao
+ * not null
+ * @param measureReportDao
+ * not null
+ * @param namingSystemDao
+ * not null
+ * @param organizationDao
+ * not null
+ * @param organizationAffiliationDao
+ * not null
+ * @param patientDao
+ * not null
+ * @param practitionerDao
+ * not null
+ * @param practitionerRoleDao
+ * not null
+ * @param provenanceDao
+ * not null
+ * @param questionnaireDao
+ * not null
+ * @param questionnaireResponseDao
+ * not null
+ * @param researchStudyDao
+ * not null
+ * @param structureDefinitionDao
+ * not null
+ * @param structureDefinitionSnapshotDao
+ * not null
+ * @param subscriptionDao
+ * not null
+ * @param taskDao
+ * not null
+ * @param valueSetDao
+ * not null
+ * @param readAccessDao
+ * not null
+ */
public DaoProviderImpl(DataSource dataSource, ActivityDefinitionDao activityDefinitionDao, BinaryDao binaryDao,
BundleDao bundleDao, CodeSystemDao codeSystemDao, DocumentReferenceDao documentReferenceDao,
EndpointDao endpointDao, GroupDao groupDao, HealthcareServiceDao healthcareServiceDao,
@@ -131,36 +190,38 @@ public DaoProviderImpl(DataSource dataSource, ActivityDefinitionDao activityDefi
StructureDefinitionDao structureDefinitionSnapshotDao, SubscriptionDao subscriptionDao, TaskDao taskDao,
ValueSetDao valueSetDao, ReadAccessDao readAccessDao)
{
- this.dataSource = dataSource;
- this.activityDefinitionDao = activityDefinitionDao;
- this.binaryDao = binaryDao;
- this.bundleDao = bundleDao;
- this.codeSystemDao = codeSystemDao;
- this.documentReferenceDao = documentReferenceDao;
- this.endpointDao = endpointDao;
- this.groupDao = groupDao;
- this.healthcareServiceDao = healthcareServiceDao;
- this.libraryDao = libraryDao;
- this.locationDao = locationDao;
- this.measureDao = measureDao;
- this.measureReportDao = measureReportDao;
- this.namingSystemDao = namingSystemDao;
- this.organizationDao = organizationDao;
- this.organizationAffiliationDao = organizationAffiliationDao;
- this.patientDao = patientDao;
- this.practitionerDao = practitionerDao;
- this.practitionerRoleDao = practitionerRoleDao;
- this.provenanceDao = provenanceDao;
- this.questionnaireDao = questionnaireDao;
- this.questionnaireResponseDao = questionnaireResponseDao;
- this.researchStudyDao = researchStudyDao;
- this.structureDefinitionDao = structureDefinitionDao;
- this.structureDefinitionSnapshotDao = structureDefinitionSnapshotDao;
- this.subscriptionDao = subscriptionDao;
- this.taskDao = taskDao;
- this.valueSetDao = valueSetDao;
-
- this.readAccessDao = readAccessDao;
+ this.dataSource = Objects.requireNonNull(dataSource, "dataSource");
+ this.activityDefinitionDao = Objects.requireNonNull(activityDefinitionDao, "activityDefinitionDao");
+ this.binaryDao = Objects.requireNonNull(binaryDao, "binaryDao");
+ this.bundleDao = Objects.requireNonNull(bundleDao, "bundleDao");
+ this.codeSystemDao = Objects.requireNonNull(codeSystemDao, "codeSystemDao");
+ this.documentReferenceDao = Objects.requireNonNull(documentReferenceDao, "documentReferenceDao");
+ this.endpointDao = Objects.requireNonNull(endpointDao, "endpointDao");
+ this.groupDao = Objects.requireNonNull(groupDao, "groupDao");
+ this.healthcareServiceDao = Objects.requireNonNull(healthcareServiceDao, "healthcareServiceDao");
+ this.libraryDao = Objects.requireNonNull(libraryDao, "libraryDao");
+ this.locationDao = Objects.requireNonNull(locationDao, "locationDao");
+ this.measureDao = Objects.requireNonNull(measureDao, "measureDao");
+ this.measureReportDao = Objects.requireNonNull(measureReportDao, "measureReportDao");
+ this.namingSystemDao = Objects.requireNonNull(namingSystemDao, "namingSystemDao");
+ this.organizationDao = Objects.requireNonNull(organizationDao, "organizationDao");
+ this.organizationAffiliationDao = Objects.requireNonNull(organizationAffiliationDao,
+ "organizationAffiliationDao");
+ this.patientDao = Objects.requireNonNull(patientDao, "patientDao");
+ this.practitionerDao = Objects.requireNonNull(practitionerDao, "practitionerDao");
+ this.practitionerRoleDao = Objects.requireNonNull(practitionerRoleDao, "practitionerRoleDao");
+ this.provenanceDao = Objects.requireNonNull(provenanceDao, "provenanceDao");
+ this.questionnaireDao = Objects.requireNonNull(questionnaireDao, "questionnaireDao");
+ this.questionnaireResponseDao = Objects.requireNonNull(questionnaireResponseDao, "questionnaireResponseDao");
+ this.researchStudyDao = Objects.requireNonNull(researchStudyDao, "researchStudyDao");
+ this.structureDefinitionDao = Objects.requireNonNull(structureDefinitionDao, "structureDefinitionDao");
+ this.structureDefinitionSnapshotDao = Objects.requireNonNull(structureDefinitionSnapshotDao,
+ "structureDefinitionSnapshotDao");
+ this.subscriptionDao = Objects.requireNonNull(subscriptionDao, "subscriptionDao");
+ this.taskDao = Objects.requireNonNull(taskDao, "taskDao");
+ this.valueSetDao = Objects.requireNonNull(valueSetDao, "valueSetDao");
+
+ this.readAccessDao = Objects.requireNonNull(readAccessDao, "readAccessDao");
daosByResourceClass.put(ActivityDefinition.class, activityDefinitionDao);
daosByResourceClass.put(Binary.class, binaryDao);
@@ -192,38 +253,6 @@ public DaoProviderImpl(DataSource dataSource, ActivityDefinitionDao activityDefi
daosByResourceClass.forEach((k, v) -> daosByResourceTypeName.put(k.getAnnotation(ResourceDef.class).name(), v));
}
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(activityDefinitionDao, "activityDefinitionDao");
- Objects.requireNonNull(binaryDao, "binaryDao");
- Objects.requireNonNull(bundleDao, "bundleDao");
- Objects.requireNonNull(codeSystemDao, "codeSystemDao");
- Objects.requireNonNull(documentReferenceDao, "documentReferenceDao");
- Objects.requireNonNull(endpointDao, "endpointDao");
- Objects.requireNonNull(groupDao, "groupDao");
- Objects.requireNonNull(healthcareServiceDao, "healthcareServiceDao");
- Objects.requireNonNull(libraryDao, "libraryDao");
- Objects.requireNonNull(locationDao, "locationDao");
- Objects.requireNonNull(measureDao, "measureDao");
- Objects.requireNonNull(measureReportDao, "measureReportDao");
- Objects.requireNonNull(namingSystemDao, "namingSystemDao");
- Objects.requireNonNull(organizationDao, "organizationDao");
- Objects.requireNonNull(organizationAffiliationDao, "organizationAffiliationDao");
- Objects.requireNonNull(patientDao, "patientDao");
- Objects.requireNonNull(practitionerDao, "practitionerDao");
- Objects.requireNonNull(practitionerRoleDao, "practitionerRoleDao");
- Objects.requireNonNull(provenanceDao, "provenanceDao");
- Objects.requireNonNull(questionnaireDao, "questionnaireDao");
- Objects.requireNonNull(questionnaireResponseDao, "questionnaireResponseDao");
- Objects.requireNonNull(researchStudyDao, "researchStudyDao");
- Objects.requireNonNull(structureDefinitionDao, "structureDefinitionDao");
- Objects.requireNonNull(structureDefinitionSnapshotDao, "structureDefinitionSnapshotDao");
- Objects.requireNonNull(subscriptionDao, "subscriptionDao");
- Objects.requireNonNull(taskDao, "taskDao");
- Objects.requireNonNull(valueSetDao, "valueSetDao");
- }
-
@Override
public Connection newReadOnlyAutoCommitTransaction() throws SQLException
{
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/exception/DataFormatExceptionHandler.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/exception/DataFormatExceptionHandler.java
index 61279bd56..04804d76e 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/exception/DataFormatExceptionHandler.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/exception/DataFormatExceptionHandler.java
@@ -22,7 +22,6 @@
import org.hl7.fhir.r4.model.OperationOutcome.IssueType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.parser.DataFormatException;
import dev.dsf.fhir.help.ResponseGenerator;
@@ -32,21 +31,19 @@
import jakarta.ws.rs.ext.Provider;
@Provider
-public class DataFormatExceptionHandler implements ExceptionMapper, InitializingBean
+public class DataFormatExceptionHandler implements ExceptionMapper
{
private static final Logger logger = LoggerFactory.getLogger(DataFormatExceptionHandler.class);
private final ResponseGenerator responseGenerator;
+ /**
+ * @param responseGenerator
+ * not null
+ */
public DataFormatExceptionHandler(ResponseGenerator responseGenerator)
{
- this.responseGenerator = responseGenerator;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(responseGenerator, "responseGenerator");
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/history/HistoryServiceImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/history/HistoryServiceImpl.java
index 82cbf894c..07e1df4ac 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/history/HistoryServiceImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/history/HistoryServiceImpl.java
@@ -23,7 +23,6 @@
import org.hl7.fhir.r4.model.Bundle;
import org.hl7.fhir.r4.model.Bundle.BundleEntryComponent;
import org.hl7.fhir.r4.model.Resource;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import dev.dsf.common.auth.conf.Identity;
@@ -47,7 +46,7 @@
import jakarta.ws.rs.core.UriBuilder;
import jakarta.ws.rs.core.UriInfo;
-public class HistoryServiceImpl implements HistoryService, InitializingBean
+public class HistoryServiceImpl implements HistoryService
{
private final String serverBase;
private final int defaultPageCount;
@@ -58,30 +57,38 @@ public class HistoryServiceImpl implements HistoryService, InitializingBean
private final HistoryDao historyDao;
private final HistoryIdentityFilterFactory historyUserFilterFactory;
+ /**
+ * @param serverBase
+ * not null
+ * @param defaultPageCount
+ * >= 0
+ * @param parameterConverter
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param historyDao
+ * not null
+ * @param historyUserFilterFactory
+ * not null
+ */
public HistoryServiceImpl(String serverBase, int defaultPageCount, ParameterConverter parameterConverter,
ExceptionHandler exceptionHandler, ResponseGenerator responseGenerator, ReferenceCleaner referenceCleaner,
HistoryDao historyDao, HistoryIdentityFilterFactory historyUserFilterFactory)
{
- this.serverBase = serverBase;
- this.defaultPageCount = defaultPageCount;
- this.parameterConverter = parameterConverter;
- this.exceptionHandler = exceptionHandler;
- this.responseGenerator = responseGenerator;
- this.referenceCleaner = referenceCleaner;
- this.historyDao = historyDao;
- this.historyUserFilterFactory = historyUserFilterFactory;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(serverBase, "serverBase");
- Objects.requireNonNull(parameterConverter, "parameterConverter");
- Objects.requireNonNull(exceptionHandler, "exceptionHandler");
- Objects.requireNonNull(responseGenerator, "responseGenerator");
- Objects.requireNonNull(referenceCleaner, "referenceCleaner");
- Objects.requireNonNull(historyDao, "historyDao");
- Objects.requireNonNull(historyUserFilterFactory, "historyUserFilterFactory");
+ this.serverBase = Objects.requireNonNull(serverBase, "serverBase");
+ if (defaultPageCount < 0)
+ throw new IllegalArgumentException("defaultPageCount < 0");
+ this.defaultPageCount = Objects.requireNonNull(defaultPageCount, "defaultPageCount");
+ this.parameterConverter = Objects.requireNonNull(parameterConverter, "parameterConverter");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
+ this.historyDao = Objects.requireNonNull(historyDao, "historyDao");
+ this.historyUserFilterFactory = Objects.requireNonNull(historyUserFilterFactory, "historyUserFilterFactory");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/search/PageAndCount.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/search/PageAndCount.java
index 6a2f79a5f..0f03b3597 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/search/PageAndCount.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/search/PageAndCount.java
@@ -17,6 +17,7 @@
import java.util.List;
import java.util.Map;
+import java.util.Objects;
public class PageAndCount
{
@@ -33,6 +34,13 @@ public static PageAndCount exists()
return EXISTS;
}
+ /**
+ * @param queryParameters
+ * not null
+ * @param defaultPageCount
+ * >= 0
+ * @return
+ */
public static PageAndCount from(Map> queryParameters, int defaultPageCount)
{
Integer page = getFirstInt(queryParameters, SearchQuery.PARAMETER_PAGE);
@@ -43,6 +51,9 @@ public static PageAndCount from(Map> queryParameters, int d
private static Integer getFirstInt(Map> queryParameters, String key)
{
+ Objects.requireNonNull(queryParameters, "queryParameters");
+ Objects.requireNonNull(key, "key");
+
List values = queryParameters.getOrDefault(key, List.of());
if (values.isEmpty())
return null;
@@ -75,12 +86,22 @@ public static PageAndCount from(int page, int count)
return new PageAndCount(page, count, count);
}
-
private final int page;
private final int count;
+ /**
+ * @param page
+ * may be null
+ * @param count
+ * may be null
+ * @param defaultPageCount
+ * >= 0
+ */
private PageAndCount(Integer page, Integer count, int defaultPageCount)
{
+ if (defaultPageCount < 0)
+ throw new IllegalArgumentException("defaultPageCount < 0");
+
int effectivePage = page == null ? 1 : page < 0 ? 0 : page;
int effectiveCount = count == null ? defaultPageCount : count < 0 ? 0 : count;
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/InitialDataLoaderImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/InitialDataLoaderImpl.java
index e51b68165..ed9a73382 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/InitialDataLoaderImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/InitialDataLoaderImpl.java
@@ -22,9 +22,7 @@
import org.hl7.fhir.r4.model.Organization;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
-import ca.uhn.fhir.context.FhirContext;
import dev.dsf.common.auth.conf.Identity;
import dev.dsf.common.auth.conf.OrganizationIdentityImpl;
import dev.dsf.fhir.authentication.FhirServerRoleImpl;
@@ -34,7 +32,7 @@
import dev.dsf.fhir.prefer.PreferHandlingType;
import dev.dsf.fhir.prefer.PreferReturnType;
-public class InitialDataLoaderImpl implements InitialDataLoader, InitializingBean
+public class InitialDataLoaderImpl implements InitialDataLoader
{
private static final Identity INITIAL_DATA_LOADER;
static
@@ -56,19 +54,14 @@ public boolean isNotExpired()
private static final Logger logger = LoggerFactory.getLogger(InitialDataLoaderImpl.class);
private final CommandFactory commandFactory;
- private final FhirContext fhirContext;
- public InitialDataLoaderImpl(CommandFactory commandFactory, FhirContext fhirContext)
+ /**
+ * @param commandFactory
+ * not null
+ */
+ public InitialDataLoaderImpl(CommandFactory commandFactory)
{
- this.commandFactory = commandFactory;
- this.fhirContext = fhirContext;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(commandFactory, "commandFactory");
- Objects.requireNonNull(fhirContext, "fhirContext");
+ this.commandFactory = Objects.requireNonNull(commandFactory, "commandFactory");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ReferenceResolverImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ReferenceResolverImpl.java
index e169bdd9b..7dab26181 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ReferenceResolverImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ReferenceResolverImpl.java
@@ -32,7 +32,6 @@
import org.hl7.fhir.r4.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.CollectionUtils;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
@@ -50,7 +49,7 @@
import dev.dsf.fhir.search.SearchQueryParameterError;
import dev.dsf.fhir.service.ResourceReference.ReferenceType;
-public class ReferenceResolverImpl implements ReferenceResolver, InitializingBean
+public class ReferenceResolverImpl implements ReferenceResolver
{
private static final Logger logger = LoggerFactory.getLogger(ReferenceResolverImpl.class);
@@ -64,26 +63,29 @@ public class ReferenceResolverImpl implements ReferenceResolver, InitializingBea
private final ClientProvider clientProvider;
private final ParameterConverter parameterConverter;
+ /**
+ * @param serverBase
+ * not null
+ * @param daoProvider
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param clientProvider
+ * not null
+ * @param parameterConverter
+ * not nullo
+ */
public ReferenceResolverImpl(String serverBase, DaoProvider daoProvider, ResponseGenerator responseGenerator,
ExceptionHandler exceptionHandler, ClientProvider clientProvider, ParameterConverter parameterConverter)
{
- this.serverBase = serverBase;
- this.daoProvider = daoProvider;
- this.responseGenerator = responseGenerator;
- this.exceptionHandler = exceptionHandler;
- this.clientProvider = clientProvider;
- this.parameterConverter = parameterConverter;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(serverBase, "serverBase");
- Objects.requireNonNull(daoProvider, "daoProvider");
- Objects.requireNonNull(responseGenerator, "responseGenerator");
- Objects.requireNonNull(exceptionHandler, "exceptionHandler");
- Objects.requireNonNull(clientProvider, "clientProvider");
- Objects.requireNonNull(parameterConverter, "parameterConverter");
+ this.serverBase = Objects.requireNonNull(serverBase, "serverBase");
+ this.daoProvider = Objects.requireNonNull(daoProvider, "daoProvider");
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.clientProvider = Objects.requireNonNull(clientProvider, "clientProvider");
+ this.parameterConverter = Objects.requireNonNull(parameterConverter, "parameterConverter");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ValidationSupportWithFetchFromDb.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ValidationSupportWithFetchFromDb.java
index abbd83deb..7cb4e9951 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ValidationSupportWithFetchFromDb.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ValidationSupportWithFetchFromDb.java
@@ -33,7 +33,6 @@
import org.hl7.fhir.r4.model.ValueSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.support.IValidationSupport;
@@ -44,7 +43,7 @@
import dev.dsf.fhir.dao.ValueSetDao;
import dev.dsf.fhir.function.SupplierWithSqlException;
-public class ValidationSupportWithFetchFromDb implements IValidationSupport, InitializingBean
+public class ValidationSupportWithFetchFromDb implements IValidationSupport
{
private static final Logger logger = LoggerFactory.getLogger(ValidationSupportWithFetchFromDb.class);
@@ -57,29 +56,35 @@ public class ValidationSupportWithFetchFromDb implements IValidationSupport, Ini
private final MeasureDao measureDao;
private final QuestionnaireDao questionnaireDao;
+ /**
+ * @param context
+ * not null
+ * @param structureDefinitionDao
+ * not null
+ * @param structureDefinitionSnapshotDao
+ * not null
+ * @param codeSystemDao
+ * not null
+ * @param valueSetDao
+ * not null
+ * @param measureDao
+ * not null
+ * @param questionnaireDao
+ * not null
+ */
public ValidationSupportWithFetchFromDb(FhirContext context, StructureDefinitionDao structureDefinitionDao,
StructureDefinitionDao structureDefinitionSnapshotDao, CodeSystemDao codeSystemDao, ValueSetDao valueSetDao,
MeasureDao measureDao, QuestionnaireDao questionnaireDao)
{
- this.context = context;
-
- this.structureDefinitionDao = structureDefinitionDao;
- this.structureDefinitionSnapshotDao = structureDefinitionSnapshotDao;
- this.codeSystemDao = codeSystemDao;
- this.valueSetDao = valueSetDao;
- this.measureDao = measureDao;
- this.questionnaireDao = questionnaireDao;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(structureDefinitionDao, "structureDefinitionDao");
- Objects.requireNonNull(structureDefinitionSnapshotDao, "structureDefinitionSnapshotDao");
- Objects.requireNonNull(codeSystemDao, "codeSystemDao");
- Objects.requireNonNull(valueSetDao, "valueSetDao");
- Objects.requireNonNull(measureDao, "measureDao");
- Objects.requireNonNull(questionnaireDao, "questionnaireDao");
+ this.context = Objects.requireNonNull(context, "context");
+
+ this.structureDefinitionDao = Objects.requireNonNull(structureDefinitionDao, "structureDefinitionDao");
+ this.structureDefinitionSnapshotDao = Objects.requireNonNull(structureDefinitionSnapshotDao,
+ "structureDefinitionSnapshotDao");
+ this.codeSystemDao = Objects.requireNonNull(codeSystemDao, "codeSystemDao");
+ this.valueSetDao = Objects.requireNonNull(valueSetDao, "valueSetDao");
+ this.measureDao = Objects.requireNonNull(measureDao, "measureDao");
+ this.questionnaireDao = Objects.requireNonNull(questionnaireDao, "questionnaireDao");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ValidationSupportWithFetchFromDbWithTransaction.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ValidationSupportWithFetchFromDbWithTransaction.java
index 8cfe29b93..e7763bc8b 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ValidationSupportWithFetchFromDbWithTransaction.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/ValidationSupportWithFetchFromDbWithTransaction.java
@@ -34,7 +34,6 @@
import org.hl7.fhir.r4.model.ValueSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.support.IValidationSupport;
@@ -45,7 +44,7 @@
import dev.dsf.fhir.dao.ValueSetDao;
import dev.dsf.fhir.function.SupplierWithSqlException;
-public class ValidationSupportWithFetchFromDbWithTransaction implements IValidationSupport, InitializingBean
+public class ValidationSupportWithFetchFromDbWithTransaction implements IValidationSupport
{
private static final Logger logger = LoggerFactory.getLogger(ValidationSupportWithFetchFromDbWithTransaction.class);
@@ -60,32 +59,40 @@ public class ValidationSupportWithFetchFromDbWithTransaction implements IValidat
private final Connection connection;
+ /**
+ * @param context
+ * not null
+ * @param structureDefinitionDao
+ * not null
+ * @param structureDefinitionSnapshotDao
+ * not null
+ * @param codeSystemDao
+ * not null
+ * @param valueSetDao
+ * not null
+ * @param measureDao
+ * not null
+ * @param questionnaireDao
+ * not null
+ * @param connection
+ * not null
+ */
public ValidationSupportWithFetchFromDbWithTransaction(FhirContext context,
StructureDefinitionDao structureDefinitionDao, StructureDefinitionDao structureDefinitionSnapshotDao,
CodeSystemDao codeSystemDao, ValueSetDao valueSetDao, MeasureDao measureDao,
QuestionnaireDao questionnaireDao, Connection connection)
{
- this.context = context;
+ this.context = Objects.requireNonNull(context, "context");
- this.structureDefinitionDao = structureDefinitionDao;
- this.structureDefinitionSnapshotDao = structureDefinitionSnapshotDao;
- this.codeSystemDao = codeSystemDao;
- this.valueSetDao = valueSetDao;
- this.measureDao = measureDao;
- this.questionnaireDao = questionnaireDao;
+ this.structureDefinitionDao = Objects.requireNonNull(structureDefinitionDao, "structureDefinitionDao");
+ this.structureDefinitionSnapshotDao = Objects.requireNonNull(structureDefinitionSnapshotDao,
+ "structureDefinitionSnapshotDao");
+ this.codeSystemDao = Objects.requireNonNull(codeSystemDao, "codeSystemDao");
+ this.valueSetDao = Objects.requireNonNull(valueSetDao, "valueSetDao");
+ this.measureDao = Objects.requireNonNull(measureDao, "measureDao");
+ this.questionnaireDao = Objects.requireNonNull(questionnaireDao, "questionnaireDao");
- this.connection = connection;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(structureDefinitionDao, "structureDefinitionDao");
- Objects.requireNonNull(structureDefinitionSnapshotDao, "structureDefinitionSnapshotDao");
- Objects.requireNonNull(codeSystemDao, "codeSystemDao");
- Objects.requireNonNull(valueSetDao, "valueSetDao");
- Objects.requireNonNull(measureDao, "measureDao");
- Objects.requireNonNull(questionnaireDao, "questionnaireDao");
+ this.connection = Objects.requireNonNull(connection, "connection");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/migration/QuestionnairesMigrationJob.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/migration/QuestionnairesMigrationJob.java
index a8593b2e9..33d3eb768 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/migration/QuestionnairesMigrationJob.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/migration/QuestionnairesMigrationJob.java
@@ -26,13 +26,12 @@
import org.hl7.fhir.r4.model.Questionnaire.QuestionnaireItemType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.fhir.dao.QuestionnaireDao;
import dev.dsf.fhir.event.EventGenerator;
import dev.dsf.fhir.event.EventHandler;
-public class QuestionnairesMigrationJob implements MigrationJob, InitializingBean
+public class QuestionnairesMigrationJob implements MigrationJob
{
private static final Logger logger = LoggerFactory.getLogger(QuestionnairesMigrationJob.class);
@@ -54,17 +53,9 @@ public class QuestionnairesMigrationJob implements MigrationJob, InitializingBea
*/
public QuestionnairesMigrationJob(QuestionnaireDao dao, EventHandler eventHandler, EventGenerator eventGenerator)
{
- this.dao = dao;
- this.eventHandler = eventHandler;
- this.eventGenerator = eventGenerator;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(dao, "dao");
- Objects.requireNonNull(eventHandler, "eventHandler");
- Objects.requireNonNull(eventGenerator, "eventGenerator");
+ this.dao = Objects.requireNonNull(dao, "dao");
+ this.eventHandler = Objects.requireNonNull(eventHandler, "eventHandler");
+ this.eventGenerator = Objects.requireNonNull(eventGenerator, "eventGenerator");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/migration/StructureDefinitionTaskProfileMigrationJob.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/migration/StructureDefinitionTaskProfileMigrationJob.java
index 90f861495..574e2712c 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/migration/StructureDefinitionTaskProfileMigrationJob.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/service/migration/StructureDefinitionTaskProfileMigrationJob.java
@@ -26,7 +26,6 @@
import org.hl7.fhir.r4.model.StructureDefinition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.fhir.dao.StructureDefinitionDao;
import dev.dsf.fhir.event.EventGenerator;
@@ -35,7 +34,7 @@
import dev.dsf.fhir.validation.SnapshotGenerator;
import dev.dsf.fhir.validation.SnapshotGenerator.SnapshotWithValidationMessages;
-public class StructureDefinitionTaskProfileMigrationJob implements MigrationJob, InitializingBean
+public class StructureDefinitionTaskProfileMigrationJob implements MigrationJob
{
private static final Logger logger = LoggerFactory.getLogger(StructureDefinitionTaskProfileMigrationJob.class);
@@ -69,23 +68,12 @@ public StructureDefinitionTaskProfileMigrationJob(StructureDefinitionDao dao, St
SnapshotGenerator snapshotGenerator, ExceptionHandler exceptionHandler, EventHandler eventHandler,
EventGenerator eventGenerator)
{
- this.dao = dao;
- this.snapshotDao = snapshotDao;
- this.snapshotGenerator = snapshotGenerator;
- this.exceptionHandler = exceptionHandler;
- this.eventHandler = eventHandler;
- this.eventGenerator = eventGenerator;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(dao, "dao");
- Objects.requireNonNull(snapshotDao, "snapshotDao");
- Objects.requireNonNull(snapshotGenerator, "snapshotGenerator");
- Objects.requireNonNull(exceptionHandler, "exceptionHandler");
- Objects.requireNonNull(eventHandler, "eventHandler");
- Objects.requireNonNull(eventGenerator, "eventGenerator");
+ this.dao = Objects.requireNonNull(dao, "dao");
+ this.snapshotDao = Objects.requireNonNull(snapshotDao, "snapshotDao");
+ this.snapshotGenerator = Objects.requireNonNull(snapshotGenerator, "snapshotGenerator");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.eventHandler = Objects.requireNonNull(eventHandler, "eventHandler");
+ this.eventGenerator = Objects.requireNonNull(eventGenerator, "eventGenerator");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/DaoConfig.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/DaoConfig.java
index 7180a0022..22cb36d2e 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/DaoConfig.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/DaoConfig.java
@@ -158,7 +158,7 @@ public ActivityDefinitionDao activityDefinitionDao()
jsonConfig.objectMapper(), readByUrlDaoFactory());
}
- @Bean(destroyMethod = "stopLargeObjectUnlinker")
+ @Bean(initMethod = "executeLargeObjectUnlink", destroyMethod = "stopLargeObjectUnlinker")
public BinaryDao binaryDao()
{
return new BinaryDaoJdbc(dataSource(), permanentDeleteDataSource(), fhirConfig.fhirContext(),
@@ -357,14 +357,14 @@ public DaoProvider daoProvider()
@Bean
public HistoryDao historyDao()
{
- return new HistoryDaoJdbc(dataSource(), fhirConfig.fhirContext(), (BinaryDaoJdbc) binaryDao(),
+ return new HistoryDaoJdbc(dataSource(), (BinaryDaoJdbc) binaryDao(),
new PgObjectFactoryImpl(fhirConfig.fhirContext(), jsonConfig.objectMapper()));
}
@Bean
public ReadAccessDao readAccessDao()
{
- return new ReadAccessDaoJdbc(dataSource());
+ return new ReadAccessDaoJdbc();
}
@Bean
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/EventConfig.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/EventConfig.java
index c696e9e35..2ab0f5842 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/EventConfig.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/EventConfig.java
@@ -41,9 +41,6 @@ public class EventConfig
@Autowired
private DaoConfig daoConfig;
- @Autowired
- private HelperConfig helperConfig;
-
@Autowired
private FhirConfig fhirConfig;
@@ -106,8 +103,8 @@ public EventManager eventManager()
@Bean
public WebSocketSubscriptionManager webSocketSubscriptionManager()
{
- return new WebSocketSubscriptionManagerImpl(daoConfig.daoProvider(), helperConfig.exceptionHandler(),
- matcherFactory(), fhirConfig.fhirContext(), authorizationConfig.authorizationRuleProvider());
+ return new WebSocketSubscriptionManagerImpl(daoConfig.daoProvider(), matcherFactory(), fhirConfig.fhirContext(),
+ authorizationConfig.authorizationRuleProvider());
}
@Bean
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/InitialDataLoaderConfig.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/InitialDataLoaderConfig.java
index 749fe2bfe..258396349 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/InitialDataLoaderConfig.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/InitialDataLoaderConfig.java
@@ -60,7 +60,7 @@ public class InitialDataLoaderConfig
@Bean
public InitialDataLoader initialDataLoader()
{
- return new InitialDataLoaderImpl(commandConfig.commandFactory(), fhirConfig.fhirContext());
+ return new InitialDataLoaderImpl(commandConfig.commandFactory());
}
@Order(HIGHEST_PRECEDENCE)
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/PropertiesConfig.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/PropertiesConfig.java
index c0a52ca96..6089f27b1 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/PropertiesConfig.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/PropertiesConfig.java
@@ -89,7 +89,7 @@ public class PropertiesConfig extends AbstractCertificateAndProxyConfig implemen
@Value("${dev.dsf.fhir.server.base.url}")
private String serverBaseUrl;
- @Documentation(description = "Page size returned by the DSF FHIR server when reading/searching fhir resources")
+ @Documentation(description = "Page size returned by the DSF FHIR server when reading/searching fhir resources, >= 0")
@Value("${dev.dsf.fhir.server.page.count:20}")
private int defaultPageCount;
@@ -125,11 +125,11 @@ public class PropertiesConfig extends AbstractCertificateAndProxyConfig implemen
@Value("${dev.dsf.fhir.client.certificate.private.key.password:#{null}}")
private char[] dsfClientCertificatePrivateKeyFilePassword;
- @Documentation(description = "Timeout until a reading a resource from a remote DSF FHIR server is aborted", recommendation = "Change default value only if timeout exceptions occur")
+ @Documentation(description = "Timeout until a reading a resource from a remote DSF FHIR server is aborted, not negative, 0 represents infinity", recommendation = "Change default value only if timeout exceptions occur")
@Value("${dev.dsf.fhir.client.timeout.read:PT10S}")
private String dsfClientReadTimeout;
- @Documentation(description = "Timeout until a connection is established between this DSF FHIR server and a remote DSF FHIR server", recommendation = "Change default value only if timeout exceptions occur")
+ @Documentation(description = "Timeout until a connection is established between this DSF FHIR server and a remote DSF FHIR server, not negative, 0 represents infinity", recommendation = "Change default value only if timeout exceptions occur")
@Value("${dev.dsf.fhir.client.timeout.connect:PT2S}")
private String dsfClientConnectTimeout;
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/WebserviceConfig.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/WebserviceConfig.java
index ae649842a..1a63d42e2 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/WebserviceConfig.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/WebserviceConfig.java
@@ -15,11 +15,14 @@
*/
package dev.dsf.fhir.spring.config;
+import java.util.List;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import dev.dsf.common.auth.logout.LogoutService;
+import dev.dsf.common.db.health.DatabaseHealthCheck;
import dev.dsf.common.status.webservice.StatusService;
import dev.dsf.common.ui.webservice.StaticResourcesService;
import dev.dsf.fhir.exception.DataFormatExceptionHandler;
@@ -966,6 +969,7 @@ public StaticResourcesService staticResourcesService()
@Bean
public StatusService statusService()
{
- return new StatusService(daoConfig.dataSource(), propertiesConfig.getJettyStatusConnectorPort());
+ return new StatusService(propertiesConfig.getJettyStatusConnectorPort(),
+ List.of(new DatabaseHealthCheck(daoConfig.dataSource())));
}
}
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/WebsocketConfig.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/WebsocketConfig.java
index 9563a2e03..ea60f0a30 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/WebsocketConfig.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/spring/config/WebsocketConfig.java
@@ -41,8 +41,8 @@ public ServerEndpoint subscriptionEndpoint()
@Bean
public ServerEndpointRegistration subscriptionEndpointRegistration()
{
- return new ServerEndpointRegistrationForAuthentication(containerDefaultConfigurator(), ServerEndpoint.PATH,
- subscriptionEndpoint());
+ return new ServerEndpointRegistrationForAuthentication(ServerEndpoint.PATH, subscriptionEndpoint(),
+ containerDefaultConfigurator());
}
@Bean
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/subscription/WebSocketSubscriptionManagerImpl.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/subscription/WebSocketSubscriptionManagerImpl.java
index 87855b525..7b3527982 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/subscription/WebSocketSubscriptionManagerImpl.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/subscription/WebSocketSubscriptionManagerImpl.java
@@ -38,7 +38,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
@@ -51,15 +50,13 @@
import dev.dsf.fhir.dao.provider.DaoProvider;
import dev.dsf.fhir.event.Event;
import dev.dsf.fhir.event.EventHandler;
-import dev.dsf.fhir.help.ExceptionHandler;
import dev.dsf.fhir.search.Matcher;
import jakarta.websocket.CloseReason;
import jakarta.websocket.CloseReason.CloseCodes;
import jakarta.websocket.RemoteEndpoint.Async;
import jakarta.websocket.Session;
-public class WebSocketSubscriptionManagerImpl
- implements WebSocketSubscriptionManager, EventHandler, InitializingBean, DisposableBean
+public class WebSocketSubscriptionManagerImpl implements WebSocketSubscriptionManager, EventHandler, DisposableBean
{
private static final Logger logger = LoggerFactory.getLogger(WebSocketSubscriptionManagerImpl.class);
@@ -153,7 +150,6 @@ void closeCredentialsExpired()
private final DaoProvider daoProvider;
private final SubscriptionDao subscriptionDao;
- private final ExceptionHandler exceptionHandler;
private final MatcherFactory matcherFactory;
private final FhirContext fhirContext;
private final AuthorizationRuleProvider authorizationRuleProvider;
@@ -163,26 +159,24 @@ void closeCredentialsExpired()
private final ReadWriteMap, List> matchersByResource = new ReadWriteMap<>();
private final ReadWriteMap> asyncRemotesBySubscriptionIdPart = new ReadWriteMap<>();
- public WebSocketSubscriptionManagerImpl(DaoProvider daoProvider, ExceptionHandler exceptionHandler,
- MatcherFactory matcherFactory, FhirContext fhirContext, AuthorizationRuleProvider authorizationRuleProvider)
+ /**
+ * @param daoProvider
+ * not null
+ * @param matcherFactory
+ * not null
+ * @param fhirContext
+ * not null
+ * @param authorizationRuleProvider
+ * not null
+ */
+ public WebSocketSubscriptionManagerImpl(DaoProvider daoProvider, MatcherFactory matcherFactory,
+ FhirContext fhirContext, AuthorizationRuleProvider authorizationRuleProvider)
{
- this.daoProvider = daoProvider;
+ this.daoProvider = Objects.requireNonNull(daoProvider, "daoProvider");
this.subscriptionDao = daoProvider.getSubscriptionDao();
- this.exceptionHandler = exceptionHandler;
- this.matcherFactory = matcherFactory;
- this.fhirContext = fhirContext;
- this.authorizationRuleProvider = authorizationRuleProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(daoProvider, "daoProvider");
- Objects.requireNonNull(subscriptionDao, "subscriptionDao");
- Objects.requireNonNull(exceptionHandler, "exceptionHandler");
- Objects.requireNonNull(matcherFactory, "matcherFactory");
- Objects.requireNonNull(fhirContext, "fhirContext");
- Objects.requireNonNull(authorizationRuleProvider, "authorizationRuleProvider");
+ this.matcherFactory = Objects.requireNonNull(matcherFactory, "matcherFactory");
+ this.fhirContext = Objects.requireNonNull(fhirContext, "fhirContext");
+ this.authorizationRuleProvider = Objects.requireNonNull(authorizationRuleProvider, "authorizationRuleProvider");
}
private void refreshMatchers()
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/base/AbstractDelegatingBasicService.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/base/AbstractDelegatingBasicService.java
index 43b0d920d..0fbb15872 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/base/AbstractDelegatingBasicService.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/base/AbstractDelegatingBasicService.java
@@ -17,24 +17,19 @@
import java.util.Objects;
-import org.springframework.beans.factory.InitializingBean;
-
import dev.dsf.fhir.authentication.CurrentIdentityProvider;
-public class AbstractDelegatingBasicService extends AbstractBasicService
- implements BasicService, InitializingBean
+public class AbstractDelegatingBasicService extends AbstractBasicService implements BasicService
{
protected final S delegate;
+ /**
+ * @param delegate
+ * not null
+ */
public AbstractDelegatingBasicService(S delegate)
{
- this.delegate = delegate;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(delegate, "delegate");
+ this.delegate = Objects.requireNonNull(delegate, "delegate");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/jaxrs/AbstractServiceJaxrs.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/jaxrs/AbstractServiceJaxrs.java
index b19fc2e8d..ee9d5ce85 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/jaxrs/AbstractServiceJaxrs.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/jaxrs/AbstractServiceJaxrs.java
@@ -60,8 +60,6 @@ private Identity doGetCurrentIdentity()
@Override
public void afterPropertiesSet() throws Exception
{
- super.afterPropertiesSet();
-
setCurrentIdentityProvider(this::doGetCurrentIdentity);
}
}
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/AbstractResourceServiceSecure.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/AbstractResourceServiceSecure.java
index f73ea9297..5ef29fbf6 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/AbstractResourceServiceSecure.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/AbstractResourceServiceSecure.java
@@ -31,7 +31,6 @@
import org.hl7.fhir.r4.model.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.CollectionUtils;
import org.springframework.web.util.UriComponentsBuilder;
@@ -66,7 +65,7 @@
import jakarta.ws.rs.core.UriInfo;
public abstract class AbstractResourceServiceSecure, R extends Resource, S extends BasicResourceService>
- extends AbstractServiceSecure implements BasicResourceService, InitializingBean
+ extends AbstractServiceSecure implements BasicResourceService
{
private static final Logger logger = LoggerFactory.getLogger(AbstractResourceServiceSecure.class);
@@ -82,6 +81,36 @@ public abstract class AbstractResourceServiceSecure, R
protected final ValidationRules validationRules;
protected final DefaultProfileProvider defaultProfileProvider;
+ /**
+ * @param delegate
+ * not null
+ * @param serverBase
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param referenceCleaner
+ * not null
+ * @param referenceExtractor
+ * not null
+ * @param resourceType
+ * not null
+ * @param dao
+ * not null
+ * @param exceptionHandler
+ * not null
+ * @param parameterConverter
+ * not null
+ * @param authorizationRule
+ * not null
+ * @param resourceValidator
+ * not null
+ * @param validationRules
+ * not null
+ * @param defaultProfileProvider
+ * not null
+ */
public AbstractResourceServiceSecure(S delegate, String serverBase, ResponseGenerator responseGenerator,
ReferenceResolver referenceResolver, ReferenceCleaner referenceCleaner,
ReferenceExtractor referenceExtractor, Class resourceType, D dao, ExceptionHandler exceptionHandler,
@@ -91,35 +120,17 @@ public AbstractResourceServiceSecure(S delegate, String serverBase, ResponseGene
{
super(delegate, serverBase, responseGenerator, referenceResolver);
- this.referenceCleaner = referenceCleaner;
- this.referenceExtractor = referenceExtractor;
- this.resourceType = resourceType;
+ this.referenceCleaner = Objects.requireNonNull(referenceCleaner, "referenceCleaner");
+ this.referenceExtractor = Objects.requireNonNull(referenceExtractor, "referenceExtractor");
+ this.resourceType = Objects.requireNonNull(resourceType, "resourceType");
this.resourceTypeName = resourceType.getAnnotation(ResourceDef.class).name();
- this.dao = dao;
- this.exceptionHandler = exceptionHandler;
- this.parameterConverter = parameterConverter;
- this.authorizationRule = authorizationRule;
- this.resourceValidator = resourceValidator;
- this.validationRules = validationRules;
- this.defaultProfileProvider = defaultProfileProvider;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(referenceCleaner, "referenceCleaner");
- Objects.requireNonNull(referenceExtractor, "referenceExtractor");
- Objects.requireNonNull(resourceType, "resourceType");
- Objects.requireNonNull(resourceTypeName, "resourceTypeName");
- Objects.requireNonNull(dao, "dao");
- Objects.requireNonNull(exceptionHandler, "exceptionHandler");
- Objects.requireNonNull(parameterConverter, "parameterConverter");
- Objects.requireNonNull(authorizationRule, "authorizationRule");
- Objects.requireNonNull(resourceValidator, "resourceValidator");
- Objects.requireNonNull(validationRules, "validationRules");
- Objects.requireNonNull(defaultProfileProvider, "defaultProfileProvider");
+ this.dao = Objects.requireNonNull(dao, "dao");
+ this.exceptionHandler = Objects.requireNonNull(exceptionHandler, "exceptionHandler");
+ this.parameterConverter = Objects.requireNonNull(parameterConverter, "parameterConverter");
+ this.authorizationRule = Objects.requireNonNull(authorizationRule, "authorizationRule");
+ this.resourceValidator = Objects.requireNonNull(resourceValidator, "resourceValidator");
+ this.validationRules = Objects.requireNonNull(validationRules, "validationRules");
+ this.defaultProfileProvider = Objects.requireNonNull(defaultProfileProvider, "defaultProfileProvider");
}
private String toValidationLogMessage(ValidationResult validationResult)
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/AbstractServiceSecure.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/AbstractServiceSecure.java
index 9d426566e..1a5d39d26 100644
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/AbstractServiceSecure.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/AbstractServiceSecure.java
@@ -19,7 +19,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.fhir.help.ResponseGenerator;
import dev.dsf.fhir.service.ReferenceResolver;
@@ -28,7 +27,6 @@
import jakarta.ws.rs.core.Response;
public abstract class AbstractServiceSecure extends AbstractDelegatingBasicService
- implements InitializingBean
{
protected static final Logger audit = LoggerFactory.getLogger("dsf-audit-logger");
@@ -36,24 +34,24 @@ public abstract class AbstractServiceSecure extends Abst
protected final ResponseGenerator responseGenerator;
protected final ReferenceResolver referenceResolver;
+ /**
+ * @param delegate
+ * not null
+ * @param serverBase
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param referenceResolver
+ * not null
+ */
public AbstractServiceSecure(S delegate, String serverBase, ResponseGenerator responseGenerator,
ReferenceResolver referenceResolver)
{
super(delegate);
- this.serverBase = serverBase;
- this.referenceResolver = referenceResolver;
- this.responseGenerator = responseGenerator;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(serverBase, "serverBase");
- Objects.requireNonNull(responseGenerator, "responseGenerator");
- Objects.requireNonNull(referenceResolver, "referenceResolver");
+ this.serverBase = Objects.requireNonNull(serverBase, "serverBase");
+ this.referenceResolver = Objects.requireNonNull(referenceResolver, "referenceResolver");
+ this.responseGenerator = Objects.requireNonNull(responseGenerator, "responseGenerator");
}
protected final Response forbidden(String operation)
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/RootServiceSecure.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/RootServiceSecure.java
index 618c47111..912207f73 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/RootServiceSecure.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/webservice/secure/RootServiceSecure.java
@@ -38,20 +38,24 @@ public class RootServiceSecure extends AbstractServiceSecure implem
private final AuthorizationRule authorizationRule;
+ /**
+ * @param delegate
+ * not null
+ * @param serverBase
+ * not null
+ * @param responseGenerator
+ * not null
+ * @param referenceResolver
+ * not null
+ * @param authorizationRule
+ * not null
+ */
public RootServiceSecure(RootService delegate, String serverBase, ResponseGenerator responseGenerator,
ReferenceResolver referenceResolver, AuthorizationRule authorizationRule)
{
super(delegate, serverBase, responseGenerator, referenceResolver);
- this.authorizationRule = authorizationRule;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- super.afterPropertiesSet();
-
- Objects.requireNonNull(authorizationRule, "authorizationRule");
+ this.authorizationRule = Objects.requireNonNull(authorizationRule, "authorizationRule");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/websocket/ServerEndpoint.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/websocket/ServerEndpoint.java
index 01d60b182..c4a4b88cd 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/websocket/ServerEndpoint.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/websocket/ServerEndpoint.java
@@ -31,7 +31,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
import dev.dsf.common.auth.conf.DsfRole;
import dev.dsf.common.auth.conf.Identity;
@@ -46,7 +45,7 @@
import jakarta.websocket.PongMessage;
import jakarta.websocket.Session;
-public class ServerEndpoint extends Endpoint implements InitializingBean, DisposableBean
+public class ServerEndpoint extends Endpoint implements DisposableBean
{
private static final Logger logger = LoggerFactory.getLogger(ServerEndpoint.class);
@@ -60,15 +59,13 @@ public class ServerEndpoint extends Endpoint implements InitializingBean, Dispos
private final WebSocketSubscriptionManager subscriptionManager;
+ /**
+ * @param subscriptionManager
+ * not null
+ */
public ServerEndpoint(WebSocketSubscriptionManager subscriptionManager)
{
- this.subscriptionManager = subscriptionManager;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(subscriptionManager, "subscriptionManager");
+ this.subscriptionManager = Objects.requireNonNull(subscriptionManager, "subscriptionManager");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/websocket/ServerEndpointRegistrationForAuthentication.java b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/websocket/ServerEndpointRegistrationForAuthentication.java
index 88663b537..4459a638d 100755
--- a/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/websocket/ServerEndpointRegistrationForAuthentication.java
+++ b/dsf-fhir/dsf-fhir-server/src/main/java/dev/dsf/fhir/websocket/ServerEndpointRegistrationForAuthentication.java
@@ -17,27 +17,29 @@
import java.util.Objects;
-import org.springframework.beans.factory.InitializingBean;
import org.springframework.web.socket.server.standard.ServerEndpointRegistration;
import jakarta.websocket.Endpoint;
-public class ServerEndpointRegistrationForAuthentication extends ServerEndpointRegistration implements InitializingBean
+public class ServerEndpointRegistrationForAuthentication extends ServerEndpointRegistration
{
private final Configurator containerDefaultConfigurator;
- public ServerEndpointRegistrationForAuthentication(Configurator containerDefaultConfigurator, String path,
- Endpoint endpoint)
+ /**
+ * @param path
+ * not null, not blank
+ * @param endpoint
+ * not null
+ * @param containerDefaultConfigurator
+ * not null
+ */
+ public ServerEndpointRegistrationForAuthentication(String path, Endpoint endpoint,
+ Configurator containerDefaultConfigurator)
{
super(path, endpoint);
- this.containerDefaultConfigurator = containerDefaultConfigurator;
- }
-
- @Override
- public void afterPropertiesSet() throws Exception
- {
- Objects.requireNonNull(containerDefaultConfigurator, "containerDefaultConfigurator");
+ this.containerDefaultConfigurator = Objects.requireNonNull(containerDefaultConfigurator,
+ "containerDefaultConfigurator");
}
@Override
diff --git a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/authorization/AbstractAuthorizationRuleTest.java b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/authorization/AbstractAuthorizationRuleTest.java
index e454d8e13..e27cd75f4 100644
--- a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/authorization/AbstractAuthorizationRuleTest.java
+++ b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/authorization/AbstractAuthorizationRuleTest.java
@@ -92,12 +92,6 @@ public void getResourceTypeMatchesExpected()
assertEquals(expectedResourceType(), rule.getResourceType());
}
- @Test
- public void afterPropertiesSetSucceedsWithAllDependencies() throws Exception
- {
- rule.afterPropertiesSet();
- }
-
@Test
public void searchAllowedWhenIdentityHasSearchRole()
{
diff --git a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/authorization/TaskAuthorizationRuleTest.java b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/authorization/TaskAuthorizationRuleTest.java
index c0abdce2d..ca3df846c 100644
--- a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/authorization/TaskAuthorizationRuleTest.java
+++ b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/authorization/TaskAuthorizationRuleTest.java
@@ -15,7 +15,6 @@
*/
package dev.dsf.fhir.authorization;
-import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
@@ -82,20 +81,6 @@ private static OrganizationIdentity localOrganizationIdentity()
return identity;
}
- @Test
- public void afterPropertiesSetThrowsWhenProcessAuthorizationHelperNull()
- {
- TaskAuthorizationRule ruleWithNull = newRule(null, endpointProvider);
- assertThrows(NullPointerException.class, ruleWithNull::afterPropertiesSet);
- }
-
- @Test
- public void afterPropertiesSetThrowsWhenEndpointProviderNull()
- {
- TaskAuthorizationRule ruleWithNull = newRule(processAuthorizationHelper, null);
- assertThrows(NullPointerException.class, ruleWithNull::afterPropertiesSet);
- }
-
@Test
public void createDeniedWhenIdentityHasNoCreateRole()
{
diff --git a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/dao/HistoryDaoTest.java b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/dao/HistoryDaoTest.java
index 414b17e31..75a70cb1a 100644
--- a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/dao/HistoryDaoTest.java
+++ b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/dao/HistoryDaoTest.java
@@ -92,9 +92,8 @@ public static void afterClass() throws Exception
.disable(Feature.AUTO_CLOSE_TARGET).build();
private final OrganizationDao orgDao = new OrganizationDaoJdbc(defaultDataSource, permanentDeleteDataSource,
fhirContext, objectMapper);
- private final HistoryDao dao = new HistoryDaoJdbc(defaultDataSource, fhirContext,
- new BinaryDaoJdbc(defaultDataSource, permanentDeleteDataSource, fhirContext, objectMapper,
- DATABASE_USERS_GROUP),
+ private final HistoryDao dao = new HistoryDaoJdbc(defaultDataSource, new BinaryDaoJdbc(defaultDataSource,
+ permanentDeleteDataSource, fhirContext, objectMapper, DATABASE_USERS_GROUP),
new PgObjectFactoryImpl(fhirContext, objectMapper));
private final HistoryIdentityFilterFactory filterFactory = new HistoryIdentityFilterFactoryImpl();
diff --git a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/webservice/secure/AbstractResourceServiceSecureTest.java b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/webservice/secure/AbstractResourceServiceSecureTest.java
index b7f303051..8ca1c669b 100644
--- a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/webservice/secure/AbstractResourceServiceSecureTest.java
+++ b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/webservice/secure/AbstractResourceServiceSecureTest.java
@@ -29,7 +29,6 @@
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
-import java.lang.reflect.Method;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@@ -133,9 +132,6 @@ public void before() throws Exception
resourceServiceSecure = createResourceServiceSecure();
resourceServiceSecure.setCurrentIdentityProvider(currentIdentityProvider);
- Method afterPropertiesSet = resourceServiceSecure.getClass().getMethod("afterPropertiesSet");
- afterPropertiesSet.invoke(resourceServiceSecure);
-
Identity identity = mock(Identity.class);
when(identity.getName()).thenReturn("Test Identity");
when(currentIdentityProvider.getCurrentIdentity()).thenReturn(identity);
diff --git a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/webservice/secure/RootServiceSecureTest.java b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/webservice/secure/RootServiceSecureTest.java
index 907607f65..76271d0e5 100644
--- a/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/webservice/secure/RootServiceSecureTest.java
+++ b/dsf-fhir/dsf-fhir-server/src/test/java/dev/dsf/fhir/webservice/secure/RootServiceSecureTest.java
@@ -61,7 +61,6 @@ public void before() throws Exception
{
rootServiceSecure = new RootServiceSecure(delegate, SERVER_BASE, new ResponseGenerator(SERVER_BASE),
mock(ReferenceResolver.class), authorizationRule);
- rootServiceSecure.afterPropertiesSet();
rootServiceSecure.setCurrentIdentityProvider(currentIdentityProvider);
diff --git a/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java b/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java
index 39fdb95ae..e79cb2ed4 100644
--- a/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java
+++ b/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/AbstractJerseyClient.java
@@ -59,6 +59,33 @@ public AbstractJerseyClient(String baseUrl, KeyStore trustStore, KeyStore keySto
Duration.ZERO, Duration.ZERO, false, null);
}
+ /**
+ * @param baseUrl
+ * not null
+ * @param trustStore
+ * may be null
+ * @param keyStore
+ * may be null
+ * @param keyStorePassword
+ * may be null
+ * @param objectMapper
+ * may be null
+ * @param componentsToRegister
+ * may be null
+ * @param proxySchemeHostPort
+ * may be null
+ * @param proxyUserName
+ * may be null
+ * @param proxyPassword
+ * may be null
+ * @param connectTimeout
+ * not null, not negative, 0 represents infinity
+ * @param readTimeout
+ * not null, not negative, 0 represents infinity
+ * @param logRequests
+ * @param userAgentValue
+ * may be null
+ */
public AbstractJerseyClient(String baseUrl, KeyStore trustStore, KeyStore keyStore, char[] keyStorePassword,
ObjectMapper objectMapper, Collection> componentsToRegister, String proxySchemeHostPort,
String proxyUserName, char[] proxyPassword, Duration connectTimeout, Duration readTimeout,
diff --git a/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/FhirWebserviceClientJersey.java b/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/FhirWebserviceClientJersey.java
index b0e2a6713..ccfc24e2a 100755
--- a/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/FhirWebserviceClientJersey.java
+++ b/dsf-fhir/dsf-fhir-webservice-client/src/main/java/dev/dsf/fhir/client/FhirWebserviceClientJersey.java
@@ -94,6 +94,35 @@ private static Class> getFhirClass(ResourceType type)
private final PreferReturnMinimalWithRetry preferReturnMinimal;
private final PreferReturnOutcomeWithRetry preferReturnOutcome;
+ /**
+ * @param baseUrl
+ * not null
+ * @param trustStore
+ * may be null
+ * @param keyStore
+ * may be null
+ * @param keyStorePassword
+ * may be null
+ * @param objectMapper
+ * may be null
+ * @param proxySchemeHostPort
+ * may be null
+ * @param proxyUserName
+ * may be null
+ * @param proxyPassword
+ * may be null
+ * @param connectTimeout
+ * not null, not negative, 0 represents infinity
+ * @param readTimeout
+ * not null, not negative, 0 represents infinity
+ * @param logRequests
+ * @param userAgentValue
+ * may be null
+ * @param fhirContext
+ * not null
+ * @param referenceCleaner
+ * not null
+ */
public FhirWebserviceClientJersey(String baseUrl, KeyStore trustStore, KeyStore keyStore, char[] keyStorePassword,
ObjectMapper objectMapper, String proxySchemeHostPort, String proxyUserName, char[] proxyPassword,
Duration connectTimeout, Duration readTimeout, boolean logRequests, String userAgentValue,
diff --git a/dsf-fhir/dsf-fhir-websocket-client/src/main/java/dev/dsf/fhir/client/WebsocketClient.java b/dsf-fhir/dsf-fhir-websocket-client/src/main/java/dev/dsf/fhir/client/WebsocketClient.java
index 2294ce414..8bf663524 100755
--- a/dsf-fhir/dsf-fhir-websocket-client/src/main/java/dev/dsf/fhir/client/WebsocketClient.java
+++ b/dsf-fhir/dsf-fhir-websocket-client/src/main/java/dev/dsf/fhir/client/WebsocketClient.java
@@ -26,6 +26,8 @@ public interface WebsocketClient
{
void connect();
+ boolean isConnected();
+
void disconnect();
void setResourceHandler(Consumer handler, Supplier parserFactory);
diff --git a/dsf-fhir/dsf-fhir-websocket-client/src/main/java/dev/dsf/fhir/client/WebsocketClientTyrus.java b/dsf-fhir/dsf-fhir-websocket-client/src/main/java/dev/dsf/fhir/client/WebsocketClientTyrus.java
index 73722dea2..99ff39524 100755
--- a/dsf-fhir/dsf-fhir-websocket-client/src/main/java/dev/dsf/fhir/client/WebsocketClientTyrus.java
+++ b/dsf-fhir/dsf-fhir-websocket-client/src/main/java/dev/dsf/fhir/client/WebsocketClientTyrus.java
@@ -179,6 +179,12 @@ public void connect()
}
}
+ @Override
+ public boolean isConnected()
+ {
+ return connection != null && connection.isOpen();
+ }
+
private ClientEndpointConfig createConfig(String userAgentValue)
{
if (userAgentValue == null || userAgentValue.isBlank())