Merge remote-tracking branch 'origin/master' into rel_6_9_tracking
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
FROM docker.io/library/maven:3.9.2-eclipse-temurin-17 AS build-hapi
|
FROM docker.io/library/maven:3.9.4-eclipse-temurin-17 AS build-hapi
|
||||||
WORKDIR /tmp/hapi-fhir-jpaserver-starter
|
WORKDIR /tmp/hapi-fhir-jpaserver-starter
|
||||||
|
|
||||||
ARG OPENTELEMETRY_JAVA_AGENT_VERSION=1.26.0
|
ARG OPENTELEMETRY_JAVA_AGENT_VERSION=1.31.0
|
||||||
RUN curl -LSsO https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v${OPENTELEMETRY_JAVA_AGENT_VERSION}/opentelemetry-javaagent.jar
|
RUN curl -LSsO https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v${OPENTELEMETRY_JAVA_AGENT_VERSION}/opentelemetry-javaagent.jar
|
||||||
|
|
||||||
COPY pom.xml .
|
COPY pom.xml .
|
||||||
@@ -12,7 +12,7 @@ COPY src/ /tmp/hapi-fhir-jpaserver-starter/src/
|
|||||||
RUN mvn clean install -DskipTests -Djdk.lang.Process.launchMechanism=vfork
|
RUN mvn clean install -DskipTests -Djdk.lang.Process.launchMechanism=vfork
|
||||||
|
|
||||||
FROM build-hapi AS build-distroless
|
FROM build-hapi AS build-distroless
|
||||||
RUN mvn package spring-boot:repackage -Pboot
|
RUN mvn package -DskipTests spring-boot:repackage -Pboot
|
||||||
RUN mkdir /app && cp /tmp/hapi-fhir-jpaserver-starter/target/ROOT.war /app/main.war
|
RUN mkdir /app && cp /tmp/hapi-fhir-jpaserver-starter/target/ROOT.war /app/main.war
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
16
README.md
16
README.md
@@ -235,7 +235,7 @@ Server will then be accessible at http://localhost:8080/ and eg. http://localhos
|
|||||||
```bash
|
```bash
|
||||||
mvn clean package spring-boot:repackage -Pboot && java -jar target/ROOT.war
|
mvn clean package spring-boot:repackage -Pboot && java -jar target/ROOT.war
|
||||||
```
|
```
|
||||||
Server will then be accessible at http://localhost:8080/ and eg. http://localhost:8080/fhir/metadata. Remember to adjust you overlay configuration in the application.yaml to eg.
|
Server will then be accessible at http://localhost:8080/ and eg. http://localhost:8080/fhir/metadata. Remember to adjust your overlay configuration in the application.yaml to eg.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
tester:
|
tester:
|
||||||
@@ -250,7 +250,7 @@ Server will then be accessible at http://localhost:8080/ and eg. http://localhos
|
|||||||
```bash
|
```bash
|
||||||
mvn clean package com.google.cloud.tools:jib-maven-plugin:dockerBuild -Dimage=distroless-hapi && docker run -p 8080:8080 distroless-hapi
|
mvn clean package com.google.cloud.tools:jib-maven-plugin:dockerBuild -Dimage=distroless-hapi && docker run -p 8080:8080 distroless-hapi
|
||||||
```
|
```
|
||||||
Server will then be accessible at http://localhost:8080/ and eg. http://localhost:8080/fhir/metadata. Remember to adjust you overlay configuration in the application.yaml to eg.
|
Server will then be accessible at http://localhost:8080/ and eg. http://localhost:8080/fhir/metadata. Remember to adjust your overlay configuration in the application.yaml to eg.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
tester:
|
tester:
|
||||||
@@ -266,7 +266,7 @@ Server will then be accessible at http://localhost:8080/ and eg. http://localhos
|
|||||||
```bash
|
```bash
|
||||||
./build-docker-image.sh && docker run -p 8080:8080 hapi-fhir/hapi-fhir-jpaserver-starter:latest
|
./build-docker-image.sh && docker run -p 8080:8080 hapi-fhir/hapi-fhir-jpaserver-starter:latest
|
||||||
```
|
```
|
||||||
Server will then be accessible at http://localhost:8080/ and eg. http://localhost:8080/fhir/metadata. Remember to adjust you overlay configuration in the application.yaml to eg.
|
Server will then be accessible at http://localhost:8080/ and eg. http://localhost:8080/fhir/metadata. Remember to adjust your overlay configuration in the application.yaml to eg.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
tester:
|
tester:
|
||||||
@@ -307,7 +307,7 @@ spring:
|
|||||||
# Then comment all hibernate.search.backend.*
|
# Then comment all hibernate.search.backend.*
|
||||||
```
|
```
|
||||||
|
|
||||||
Because the integration tests within the project rely on the default H2 database configuration, it is important to either explicity skip the integration tests during the build process, i.e., `mvn install -DskipTests`, or delete the tests altogether. Failure to skip or delete the tests once you've configured PostgreSQL for the datasource.driver, datasource.url, and hibernate.dialect as outlined above will result in build errors and compilation failure.
|
Because the integration tests within the project rely on the default H2 database configuration, it is important to either explicitly skip the integration tests during the build process, i.e., `mvn install -DskipTests`, or delete the tests altogether. Failure to skip or delete the tests once you've configured PostgreSQL for the datasource.driver, datasource.url, and hibernate.dialect as outlined above will result in build errors and compilation failure.
|
||||||
|
|
||||||
### Microsoft SQL Server configuration
|
### Microsoft SQL Server configuration
|
||||||
|
|
||||||
@@ -322,14 +322,14 @@ spring:
|
|||||||
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
|
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||||
```
|
```
|
||||||
|
|
||||||
Also, make sure you are not setting the Hibernate dialect explicitly, in other words remove any lines similar to:
|
Also, make sure you are not setting the Hibernate dialect explicitly, in other words, remove any lines similar to:
|
||||||
|
|
||||||
```
|
```
|
||||||
hibernate.dialect: {some none Microsoft SQL dialect}
|
hibernate.dialect: {some none Microsoft SQL dialect}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
Because the integration tests within the project rely on the default H2 database configuration, it is important to either explicity skip the integration tests during the build process, i.e., `mvn install -DskipTests`, or delete the tests altogether. Failure to skip or delete the tests once you've configured PostgreSQL for the datasource.driver, datasource.url, and hibernate.dialect as outlined above will result in build errors and compilation failure.
|
Because the integration tests within the project rely on the default H2 database configuration, it is important to either explicitly skip the integration tests during the build process, i.e., `mvn install -DskipTests`, or delete the tests altogether. Failure to skip or delete the tests once you've configured PostgreSQL for the datasource.driver, datasource.url, and hibernate.dialect as outlined above will result in build errors and compilation failure.
|
||||||
|
|
||||||
|
|
||||||
NOTE: MS SQL Server by default uses a case-insensitive codepage. This will cause errors with some operations - such as when expanding case-sensitive valuesets (UCUM) as there are unique indexes defined on the terminology tables for codes.
|
NOTE: MS SQL Server by default uses a case-insensitive codepage. This will cause errors with some operations - such as when expanding case-sensitive valuesets (UCUM) as there are unique indexes defined on the terminology tables for codes.
|
||||||
@@ -373,7 +373,7 @@ Again, browse to the following link to use the server (note that the port 8080 m
|
|||||||
|
|
||||||
[http://localhost:8080/](http://localhost:8080/)
|
[http://localhost:8080/](http://localhost:8080/)
|
||||||
|
|
||||||
You will then be able access the JPA server e.g. using http://localhost:8080/fhir/metadata.
|
You will then be able to access the JPA server e.g. using http://localhost:8080/fhir/metadata.
|
||||||
|
|
||||||
If you would like it to be hosted at eg. hapi-fhir-jpaserver, eg. http://localhost:8080/hapi-fhir-jpaserver/ or http://localhost:8080/hapi-fhir-jpaserver/fhir/metadata - then rename the WAR file to ```hapi-fhir-jpaserver.war``` and adjust the overlay configuration accordingly e.g.
|
If you would like it to be hosted at eg. hapi-fhir-jpaserver, eg. http://localhost:8080/hapi-fhir-jpaserver/ or http://localhost:8080/hapi-fhir-jpaserver/fhir/metadata - then rename the WAR file to ```hapi-fhir-jpaserver.war``` and adjust the overlay configuration accordingly e.g.
|
||||||
|
|
||||||
@@ -390,7 +390,7 @@ If you would like it to be hosted at eg. hapi-fhir-jpaserver, eg. http://localho
|
|||||||
|
|
||||||
## Deploy with docker compose
|
## Deploy with docker compose
|
||||||
|
|
||||||
Docker compose is a simple option to build and deploy container. To deploy with docker compose, you should build the project
|
Docker compose is a simple option to build and deploy containers. To deploy with docker compose, you should build the project
|
||||||
with `mvn clean install` and then bring up the containers with `docker-compose up -d --build`. The server can be
|
with `mvn clean install` and then bring up the containers with `docker-compose up -d --build`. The server can be
|
||||||
reached at http://localhost:8080/.
|
reached at http://localhost:8080/.
|
||||||
|
|
||||||
|
|||||||
49
pom.xml
49
pom.xml
@@ -42,6 +42,15 @@
|
|||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.glassfish.jaxb</groupId>
|
||||||
|
<artifactId>jaxb-runtime</artifactId>
|
||||||
|
<version>2.3.8</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -62,17 +71,7 @@
|
|||||||
<groupId>com.microsoft.sqlserver</groupId>
|
<groupId>com.microsoft.sqlserver</groupId>
|
||||||
<artifactId>mssql-jdbc</artifactId>
|
<artifactId>mssql-jdbc</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>jakarta.xml.bind</groupId>
|
|
||||||
<artifactId>jakarta.xml.bind-api</artifactId>
|
|
||||||
<version>2.3.3</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.sun.xml.bind</groupId>
|
|
||||||
<artifactId>jaxb-ri</artifactId>
|
|
||||||
<version>2.3.5</version>
|
|
||||||
<type>pom</type>
|
|
||||||
</dependency>
|
|
||||||
<!-- Needed for Email subscriptions -->
|
<!-- Needed for Email subscriptions -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.simplejavamail</groupId>
|
<groupId>org.simplejavamail</groupId>
|
||||||
@@ -212,11 +211,6 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- webjars -->
|
<!-- webjars -->
|
||||||
<dependency>
|
|
||||||
<groupId>org.webjars</groupId>
|
|
||||||
<artifactId>bootstrap</artifactId>
|
|
||||||
<version>5.1.3</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.webjars</groupId>
|
<groupId>org.webjars</groupId>
|
||||||
<artifactId>Eonasdan-bootstrap-datetimepicker</artifactId>
|
<artifactId>Eonasdan-bootstrap-datetimepicker</artifactId>
|
||||||
@@ -252,6 +246,12 @@
|
|||||||
<artifactId>hapi-fhir-jpaserver-test-utilities</artifactId>
|
<artifactId>hapi-fhir-jpaserver-test-utilities</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>com.sun.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-impl</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.eclipse.jetty</groupId>
|
<groupId>org.eclipse.jetty</groupId>
|
||||||
@@ -319,7 +319,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.awaitility</groupId>
|
<groupId>org.awaitility</groupId>
|
||||||
<artifactId>awaitility</artifactId>
|
<artifactId>awaitility</artifactId>
|
||||||
<version>4.1.0</version>
|
<version>4.2.0</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
@@ -339,14 +339,14 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.micrometer</groupId>
|
<groupId>io.micrometer</groupId>
|
||||||
<artifactId>micrometer-core</artifactId>
|
<artifactId>micrometer-core</artifactId>
|
||||||
<version>1.9.4</version>
|
<version>1.11.3</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-prometheus -->
|
<!-- https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-prometheus -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.micrometer</groupId>
|
<groupId>io.micrometer</groupId>
|
||||||
<artifactId>micrometer-registry-prometheus</artifactId>
|
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||||
<version>1.9.4</version>
|
<version>1.11.3</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -402,7 +402,12 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-dependency-plugin</artifactId>
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
<version>3.2.0</version>
|
<version>3.6.0</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>3.1.2</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</pluginManagement>
|
</pluginManagement>
|
||||||
@@ -430,7 +435,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
<version>3.8.1</version>
|
<version>3.11.0</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<release>11</release>
|
<release>11</release>
|
||||||
</configuration>
|
</configuration>
|
||||||
@@ -581,7 +586,7 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- example of how to start the server using spring boot-->
|
<!-- example of how to start the server using spring boot-->
|
||||||
<!-- mvn clean package spring-boot:repackage -Pboot && java -jar target/hapi-fhir-jpaserver.war -->
|
<!-- mvn clean package spring-boot:repackage -Pboot && java -jar target/ROOT.war -->
|
||||||
|
|
||||||
<!-- Use the boot profile for development and debugging options when using your IDE -->
|
<!-- Use the boot profile for development and debugging options when using your IDE -->
|
||||||
<profile>
|
<profile>
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import ca.uhn.fhir.jpa.starter.AppProperties;
|
|||||||
import ca.uhn.fhir.jpa.starter.util.JpaHibernatePropertiesProvider;
|
import ca.uhn.fhir.jpa.starter.util.JpaHibernatePropertiesProvider;
|
||||||
import ca.uhn.fhir.jpa.subscription.match.deliver.email.EmailSenderImpl;
|
import ca.uhn.fhir.jpa.subscription.match.deliver.email.EmailSenderImpl;
|
||||||
import ca.uhn.fhir.jpa.subscription.match.deliver.email.IEmailSender;
|
import ca.uhn.fhir.jpa.subscription.match.deliver.email.IEmailSender;
|
||||||
import ca.uhn.fhir.rest.server.mail.IMailSvc;
|
|
||||||
import ca.uhn.fhir.rest.server.mail.MailConfig;
|
import ca.uhn.fhir.rest.server.mail.MailConfig;
|
||||||
import ca.uhn.fhir.rest.server.mail.MailSvc;
|
import ca.uhn.fhir.rest.server.mail.MailSvc;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
@@ -221,21 +220,23 @@ public class FhirServerConfigCommon {
|
|||||||
@Bean
|
@Bean
|
||||||
public IEmailSender emailSender(AppProperties appProperties) {
|
public IEmailSender emailSender(AppProperties appProperties) {
|
||||||
if (appProperties.getSubscription() != null && appProperties.getSubscription().getEmail() != null) {
|
if (appProperties.getSubscription() != null && appProperties.getSubscription().getEmail() != null) {
|
||||||
MailConfig mailConfig = new MailConfig();
|
|
||||||
|
|
||||||
AppProperties.Subscription.Email email = appProperties.getSubscription().getEmail();
|
return buildEmailSender(appProperties.getSubscription().getEmail());
|
||||||
mailConfig.setSmtpHostname(email.getHost());
|
|
||||||
mailConfig.setSmtpPort(email.getPort());
|
|
||||||
mailConfig.setSmtpUsername(email.getUsername());
|
|
||||||
mailConfig.setSmtpPassword(email.getPassword());
|
|
||||||
mailConfig.setSmtpUseStartTLS(email.getStartTlsEnable());
|
|
||||||
|
|
||||||
IMailSvc mailSvc = new MailSvc(mailConfig);
|
|
||||||
IEmailSender emailSender = new EmailSenderImpl(mailSvc);
|
|
||||||
|
|
||||||
return emailSender;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
// Return a dummy anonymous function instead of null. Spring does not like null beans.
|
||||||
|
// TODO Get the signature of ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionDeliveryHandlerFactory
|
||||||
|
// changed so it does not require an instance of an IEmailSender
|
||||||
|
return theDetails -> {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static IEmailSender buildEmailSender(AppProperties.Subscription.Email email) {
|
||||||
|
|
||||||
|
return new EmailSenderImpl(new MailSvc(new MailConfig()
|
||||||
|
.setSmtpHostname(email.getHost())
|
||||||
|
.setSmtpPort(email.getPort())
|
||||||
|
.setSmtpUsername(email.getUsername())
|
||||||
|
.setSmtpPassword(email.getPassword())
|
||||||
|
.setSmtpUseStartTLS(email.getStartTlsEnable())));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user