Skip to content

Commit

Permalink
Merge pull request hapifhir#546 from trifork/feat/static-hosting-addi…
Browse files Browse the repository at this point in the history
…tions

Feat/static hosting additions
  • Loading branch information
patrick-werner authored Aug 22, 2023
2 parents 0252fa4 + 0a91a2d commit d6e9aba
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 12 deletions.
13 changes: 12 additions & 1 deletion src/main/java/ca/uhn/fhir/jpa/starter/AppProperties.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ public class AppProperties {

private String staticLocation = null;

private String staticLocationPrefix = "/static";

private Boolean lastn_enabled = false;
private boolean store_resource_in_lucene_index_enabled = false;
private NormalizedQuantitySearchLevel normalized_quantity_search_level = NormalizedQuantitySearchLevel.NORMALIZED_QUANTITY_SEARCH_NOT_SUPPORTED;
Expand All @@ -91,7 +93,16 @@ public class AppProperties {

private final List<String> custom_interceptor_classes = new ArrayList<>();

public List<String> getCustomInterceptorClasses() {
public String getStaticLocationPrefix() {
return staticLocationPrefix;
}

public void setStaticLocationPrefix(String staticLocationPrefix) {
this.staticLocationPrefix = staticLocationPrefix;
}


public List<String> getCustomInterceptorClasses() {
return custom_interceptor_classes;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package ca.uhn.fhir.jpa.starter;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
Expand All @@ -14,25 +13,37 @@
@ConditionalOnProperty(prefix = "hapi.fhir", name = "staticLocation")
public class ExtraStaticFilesConfigurer implements WebMvcConfigurer {

public static final String ROOT_CONTEXT_PATH = "/static";
@Autowired
AppProperties appProperties;
private String staticLocation;
private String rootContextPath;

@Override
public ExtraStaticFilesConfigurer(AppProperties appProperties) {

rootContextPath = appProperties.getStaticLocationPrefix();
if(rootContextPath.endsWith("/"))
rootContextPath = rootContextPath.substring(0, rootContextPath.lastIndexOf('/'));

staticLocation = appProperties.getStaticLocation();
if(staticLocation.endsWith("/"))
staticLocation = staticLocation.substring(0, staticLocation.lastIndexOf('/'));

}


@Override
public void addResourceHandlers(ResourceHandlerRegistry theRegistry) {
theRegistry.addResourceHandler(ROOT_CONTEXT_PATH + "/**").addResourceLocations(appProperties.getStaticLocation());
theRegistry.addResourceHandler(rootContextPath + "/**").addResourceLocations(staticLocation);
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
String path = URI.create(appProperties.getStaticLocation()).getPath();
String path = URI.create(staticLocation).getPath();
String lastSegment = path.substring(path.lastIndexOf('/') + 1);

registry.addViewController(ROOT_CONTEXT_PATH).setViewName("redirect:" + ROOT_CONTEXT_PATH + "/" + lastSegment + "/index.html");
registry.addViewController(rootContextPath).setViewName("redirect:" + rootContextPath + "/" + lastSegment + "/index.html");

registry.addViewController(ROOT_CONTEXT_PATH + "/*").setViewName("redirect:" + ROOT_CONTEXT_PATH + "/" + lastSegment + "/index.html");
registry.addViewController(rootContextPath + "/*").setViewName("redirect:" + rootContextPath + "/" + lastSegment + "/index.html");

registry.addViewController(ROOT_CONTEXT_PATH + "/" + lastSegment + "/").setViewName("redirect:" + ROOT_CONTEXT_PATH + "/" + lastSegment + "/index.html");
registry.addViewController(rootContextPath + "/" + lastSegment + "/").setViewName("redirect:" + rootContextPath + "/" + lastSegment + "/index.html");

registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ hapi:
### forces the use of the https:// protocol for the returned server address.
### alternatively, it may be set using the X-Forwarded-Proto header.
# use_apache_address_strategy_https: false
### enables the server to host content like HTML, css, etc. under the url pattern of /static/**
### enables the server to host content like HTML, css, etc. under the url pattern of eg. /static/**
# staticLocationPrefix: /static
### the deepest folder level will be used. E.g. - if you put file:/foo/bar/bazz as value then the files are resolved under /static/bazz/**
#staticLocation: file:/foo/bar/bazz
### enable to set the Server URL
Expand Down

0 comments on commit d6e9aba

Please sign in to comment.