/*******************************************************************************
* Copyright (c) 2015 Development Gateway, Inc and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the MIT License (MIT)
* which accompanies this distribution, and is available at
* https://opensource.org/licenses/MIT
*
* Contributors:
* Development Gateway - initial API and implementation
*******************************************************************************/
package org.devgateway.toolkit.forms.wicket;
import org.apache.wicket.protocol.http.WicketFilter;
import org.apache.wicket.spring.SpringWebApplicationFactory;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.web.session.HttpSessionEventPublisher;
import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
/**
* This class is the replacement of the web.xml. It registers the wicket filter
* in the spring aware configuration style.
*
* @author Stefan Kloe
*
*/
@Configuration
public class WebInitializer implements ServletContextInitializer {
private static final String PARAM_APP_BEAN = "applicationBean";
@Override
public void onStartup(final ServletContext sc) throws ServletException {
// AUTO configured by spring boot 1.2.x and upper
// sc.addFilter(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME,
// new DelegatingFilterProxy("springSecurityFilterChain"))
// .addMappingForUrlPatterns(null, false, "/*");
sc.addFilter("Spring OpenEntityManagerInViewFilter",
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.class)
.addMappingForUrlPatterns(null, false, "/*");
FilterRegistration filter = sc.addFilter("wicket-filter", WicketFilter.class);
filter.setInitParameter(WicketFilter.APP_FACT_PARAM, SpringWebApplicationFactory.class.getName());
filter.setInitParameter(PARAM_APP_BEAN, "formsWebApplication");
// This line is the only surprise when comparing to the equivalent
// web.xml. Without some initialization seems to be missing.
filter.setInitParameter(WicketFilter.FILTER_MAPPING_PARAM, "/*");
filter.addMappingForUrlPatterns(null, false, "/*");
// // Request Listener
// sc.addListener(new RequestContextListener());
//
// sc.addListener(new ContextCleanupListener());
//
sc.addListener(new HttpSessionEventPublisher());
}
// @Bean
// public SessionFactory sessionFactory(EntityManagerFactory factory) {
// if (factory.unwrap(SessionFactory.class) == null) {
// throw new NullPointerException("factory is not a hibernate factory");
// }
//
// return factory.unwrap(SessionFactory.class);
// }
//
}