package org.molgenis.ui;
import org.molgenis.data.i18n.LanguageService;
import org.molgenis.data.settings.AppSettings;
import org.molgenis.util.ResourceFingerprintRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import static java.util.Objects.requireNonNull;
import static org.molgenis.ui.MolgenisPluginAttributes.*;
/**
* Interceptor that adds default model objects to all requests that return a view.
*/
public class MolgenisInterceptor extends HandlerInterceptorAdapter
{
private final ResourceFingerprintRegistry resourceFingerprintRegistry;
private final AppSettings appSettings;
private final String environment;
private final LanguageService languageService;
@Autowired
public MolgenisInterceptor(ResourceFingerprintRegistry resourceFingerprintRegistry, AppSettings appSettings,
LanguageService languageService, @Value("${environment}") String environment)
{
this.resourceFingerprintRegistry = requireNonNull(resourceFingerprintRegistry);
this.appSettings = requireNonNull(appSettings);
this.languageService = requireNonNull(languageService);
this.environment = requireNonNull(environment);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception
{
if (modelAndView != null)
{
modelAndView.addObject(KEY_RESOURCE_FINGERPRINT_REGISTRY, resourceFingerprintRegistry);
modelAndView.addObject(KEY_ENVIRONMENT, environment);
modelAndView.addObject(KEY_APP_SETTINGS, appSettings);
modelAndView.addObject(KEY_I18N, languageService.getBundle());
}
}
}