Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Sep 10, 2018
2 parents a91a067 + b6a0fef commit 0e8073d
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 36 deletions.
@@ -0,0 +1,23 @@
package com.evolveum.midpoint.web.boot;

import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.ErrorPageRegistrar;
import org.springframework.boot.web.server.ErrorPageRegistry;
import org.springframework.http.HttpStatus;

import com.evolveum.midpoint.web.security.MidPointApplication;

public class MidPointErrorPageRegistrar implements ErrorPageRegistrar {

@Override
public void registerErrorPages(ErrorPageRegistry registry) {

registry.addErrorPages(
new ErrorPage(HttpStatus.UNAUTHORIZED, MidPointApplication.MOUNT_UNAUTHORIZED_ERROR),
new ErrorPage(HttpStatus.FORBIDDEN, MidPointApplication.MOUNT_FORBIDEN_ERROR),
new ErrorPage(HttpStatus.NOT_FOUND, MidPointApplication.MOUNT_NOT_FOUND_ERROR),
new ErrorPage(HttpStatus.GONE, MidPointApplication.MOUNT_GONE_ERROR),
new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, MidPointApplication.MOUNT_INTERNAL_SERVER_ERROR));
}

}
Expand Up @@ -16,13 +16,12 @@

package com.evolveum.midpoint.web.boot;

import com.evolveum.midpoint.gui.impl.util.ReportPeerQueryInterceptor;
import com.evolveum.midpoint.init.StartupConfiguration;
import com.evolveum.midpoint.model.api.authentication.NodeAuthenticationEvaluator;
import com.evolveum.midpoint.prism.schema.CatalogImpl;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.util.MidPointProfilingServletFilter;
import java.io.File;
import java.lang.management.ManagementFactory;
import java.time.Duration;
import java.util.EnumSet;

import javax.servlet.DispatcherType;

import org.apache.catalina.Valve;
import org.apache.commons.lang.StringUtils;
Expand All @@ -40,8 +39,11 @@
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
import org.springframework.boot.autoconfigure.security.servlet.SecurityFilterAutoConfiguration;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.*;
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryCustomizer;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.ErrorPage;
Expand All @@ -59,13 +61,16 @@
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextListener;
import org.springframework.web.filter.DelegatingFilterProxy;
import ro.isdc.wro.http.WroFilter;

import javax.servlet.DispatcherType;
import com.evolveum.midpoint.gui.impl.util.ReportPeerQueryInterceptor;
import com.evolveum.midpoint.init.StartupConfiguration;
import com.evolveum.midpoint.model.api.authentication.NodeAuthenticationEvaluator;
import com.evolveum.midpoint.prism.schema.CatalogImpl;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.util.MidPointProfilingServletFilter;

import java.io.File;
import java.lang.management.ManagementFactory;
import java.time.Duration;
import ro.isdc.wro.http.WroFilter;

/**
* Created by Viliam Repan (lazyman).
Expand Down Expand Up @@ -173,23 +178,24 @@ private static SpringApplicationBuilder configureApplication(SpringApplicationBu
}

@Bean
public ServletListenerRegistrationBean requestContextListener() {
return new ServletListenerRegistrationBean(new RequestContextListener());
public ServletListenerRegistrationBean<RequestContextListener> requestContextListener() {
return new ServletListenerRegistrationBean<>(new RequestContextListener());
}

@Bean
public FilterRegistrationBean midPointProfilingServletFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
public FilterRegistrationBean<MidPointProfilingServletFilter> midPointProfilingServletFilter() {
FilterRegistrationBean<MidPointProfilingServletFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new MidPointProfilingServletFilter());
registration.setDispatcherTypes(EnumSet.allOf(DispatcherType.class));
registration.addUrlPatterns("/*");
return registration;
}

@Bean
public FilterRegistrationBean wicket() {
FilterRegistrationBean registration = new FilterRegistrationBean();
public FilterRegistrationBean<WicketFilter> wicket() {
FilterRegistrationBean<WicketFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new WicketFilter());
registration.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ERROR);
registration.setDispatcherTypes(DispatcherType.ERROR, DispatcherType.REQUEST, DispatcherType.FORWARD);
registration.addUrlPatterns("/*");
registration.addInitParameter(WicketFilter.FILTER_MAPPING_PARAM, "/*");
registration.addInitParameter(Application.CONFIGURATION, "deployment"); // development
Expand All @@ -200,24 +206,24 @@ public FilterRegistrationBean wicket() {
}

@Bean
public FilterRegistrationBean springSecurityFilterChain() {
FilterRegistrationBean registration = new FilterRegistrationBean();
public FilterRegistrationBean<DelegatingFilterProxy> springSecurityFilterChain() {
FilterRegistrationBean<DelegatingFilterProxy> registration = new FilterRegistrationBean<>();
registration.setFilter(new DelegatingFilterProxy());
registration.addUrlPatterns("/*");
return registration;
}

@Bean
public FilterRegistrationBean webResourceOptimizer(WroFilter wroFilter) {
FilterRegistrationBean registration = new FilterRegistrationBean();
public FilterRegistrationBean<WroFilter> webResourceOptimizer(WroFilter wroFilter) {
FilterRegistrationBean<WroFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(wroFilter);
registration.addUrlPatterns("/wro/*");
return registration;
}

@Bean
public ServletRegistrationBean cxfServlet() {
ServletRegistrationBean registration = new ServletRegistrationBean();
public ServletRegistrationBean<CXFServlet> cxfServlet() {
ServletRegistrationBean<CXFServlet> registration = new ServletRegistrationBean<>();
registration.setServlet(new CXFServlet());
registration.addInitParameter("service-list-path", "midpointservices");
registration.setLoadOnStartup(1);
Expand All @@ -227,17 +233,17 @@ public ServletRegistrationBean cxfServlet() {
}

@Bean
public ServletRegistrationBean reportPeerQueryInterceptor() {
ServletRegistrationBean registration = new ServletRegistrationBean();
public ServletRegistrationBean<ReportPeerQueryInterceptor> reportPeerQueryInterceptor() {
ServletRegistrationBean<ReportPeerQueryInterceptor> registration = new ServletRegistrationBean<>();
registration.setServlet(new ReportPeerQueryInterceptor(nodeAuthenticator));
registration.addUrlMappings("/report");

return registration;
}

@Bean
public ServletRegistrationBean staticWebServlet() {
ServletRegistrationBean registration = new ServletRegistrationBean();
public ServletRegistrationBean<StaticWebServlet> staticWebServlet() {
ServletRegistrationBean<StaticWebServlet> registration = new ServletRegistrationBean<>();
StaticWebServlet servlet = new StaticWebServlet(
new File(startupConfiguration.getMidpointHome(), "static-web"));
registration.setServlet(servlet);
Expand Down
Expand Up @@ -23,6 +23,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.boot.web.server.ErrorPageRegistrar;
import org.springframework.context.annotation.*;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.Environment;
Expand Down Expand Up @@ -160,6 +161,11 @@ protected void configure(HttpSecurity http) throws Exception {
http.addFilterBefore(requestHeaderAuthenticationFilter(), LogoutFilter.class);
}
}

@Bean
public ErrorPageRegistrar errorPageRegistrar() {
return new MidPointErrorPageRegistrar();
}

@Bean
@Override
Expand Down
Expand Up @@ -196,6 +196,12 @@ public class MidPointApplication extends AuthenticatedWebApplication {
transient ApplicationContext applicationContext;

private WebApplicationConfiguration webApplicationConfiguration;

public static final String MOUNT_INTERNAL_SERVER_ERROR = "/error";
public static final String MOUNT_UNAUTHORIZED_ERROR = "/error/401";
public static final String MOUNT_FORBIDEN_ERROR = "/error/403";
public static final String MOUNT_NOT_FOUND_ERROR = "/error/404";
public static final String MOUNT_GONE_ERROR = "/error/410";

@Override
public Class<? extends PageBase> getHomePage() {
Expand Down Expand Up @@ -252,11 +258,11 @@ public void init() {
appSettings.setInternalErrorPage(PageError.class);
appSettings.setPageExpiredErrorPage(PageError.class);

mount(new MountedMapper("/error", PageError.class, new PageParametersEncoder()));
mount(new MountedMapper("/error/401", PageError401.class, new PageParametersEncoder()));
mount(new MountedMapper("/error/403", PageError403.class, new PageParametersEncoder()));
mount(new MountedMapper("/error/404", PageError404.class, new PageParametersEncoder()));
mount(new MountedMapper("/error/410", PageError410.class, new PageParametersEncoder()));
mount(new MountedMapper(MOUNT_INTERNAL_SERVER_ERROR, PageError.class, new PageParametersEncoder()));
mount(new MountedMapper(MOUNT_UNAUTHORIZED_ERROR, PageError401.class, new PageParametersEncoder()));
mount(new MountedMapper(MOUNT_FORBIDEN_ERROR, PageError403.class, new PageParametersEncoder()));
mount(new MountedMapper(MOUNT_NOT_FOUND_ERROR, PageError404.class, new PageParametersEncoder()));
mount(new MountedMapper(MOUNT_GONE_ERROR, PageError410.class, new PageParametersEncoder()));

getRequestCycleListeners().add(new LoggingRequestCycleListener(this));

Expand Down

0 comments on commit 0e8073d

Please sign in to comment.