<commit_before>/**
 * This Source Code Form is subject to the terms of the Mozilla Public License,
 * v. 2.0. If a copy of the MPL was not distributed with this file, You can
 * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
 * the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
 * <p>
 * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
 * graphic logo is a trademark of OpenMRS Inc.
 */
package org.openmrs.web;

import java.util.EnumSet;

import javax.servlet.DispatcherType;
import javax.servlet.FilterRegistration.Dynamic;
import javax.servlet.ServletContext;
import javax.servlet.ServletRegistration;

import org.directwebremoting.servlet.EfficientShutdownServletContextAttributeListener;
import org.openmrs.module.web.filter.ForcePasswordChangeFilter;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;

@Component
public class WebComponentRegistrar implements ServletContextAware {
	
	@Override
	public void setServletContext(ServletContext servletContext) {
		
		ServletRegistration openmrsServletReg = servletContext.getServletRegistration("openmrs");
		addMappings(openmrsServletReg, "*.htm", "*.form", "*.list", "*.json", "*.field", "*.portlet");
		
		addMappings(servletContext.getServletRegistration("jsp"), "*.withjstl");
		
		Dynamic filter = servletContext.addFilter("forcePasswordChangeFilter", new ForcePasswordChangeFilter());
		filter.setInitParameter("changePasswordForm", "/admin/users/changePassword.form");
		filter.setInitParameter("excludeURL", "changePasswordForm,logout,.js,.css,.gif,.jpg,.jpeg,.png");
		filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
		
		servletContext.addListener(new SessionListener());
		/*
		 * EfficientShutdownServletContextAttributeListener is used instead of
		 * EfficientShutdownServletContextListener since the latter implements ServletContextListener,
		 * which is not supported by ServletContext.addListener.
		*/
		servletContext.addListener(new EfficientShutdownServletContextAttributeListener());
	}
	
	private void addMappings(ServletRegistration reg, String... mappings) {
		for (String mapping : mappings) {
			reg.addMapping(mapping);<commit_msg>Fixing module start/stop/install error - LUI-40<commit_after>/**
 * This Source Code Form is subject to the terms of the Mozilla Public License,
 * v. 2.0. If a copy of the MPL was not distributed with this file, You can
 * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
 * the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
 * <p>
 * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
 * graphic logo is a trademark of OpenMRS Inc.
 */
package org.openmrs.web;

import java.util.EnumSet;

import javax.servlet.DispatcherType;
import javax.servlet.FilterRegistration.Dynamic;
import javax.servlet.ServletContext;
import javax.servlet.ServletRegistration;

import org.directwebremoting.servlet.EfficientShutdownServletContextAttributeListener;
import org.openmrs.module.web.filter.ForcePasswordChangeFilter;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;

@Component
public class WebComponentRegistrar implements ServletContextAware {
	
	@Override
	public void setServletContext(ServletContext servletContext) {
		
		try {
			ServletRegistration openmrsServletReg = servletContext.getServletRegistration("openmrs");
			addMappings(openmrsServletReg, "*.htm", "*.form", "*.list", "*.json", "*.field", "*.portlet");
			
			addMappings(servletContext.getServletRegistration("jsp"), "*.withjstl");
			
			Dynamic filter = servletContext.addFilter("forcePasswordChangeFilter", new ForcePasswordChangeFilter());
			filter.setInitParameter("changePasswordForm", "/admin/users/changePassword.form");
			filter.setInitParameter("excludeURL", "changePasswordForm,logout,.js,.css,.gif,.jpg,.jpeg,.png");
			filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
			
			servletContext.addListener(new SessionListener());
			/*
			 * EfficientShutdownServletContextAttributeListener is used instead of
			 * EfficientShutdownServletContextListener since the latter implements ServletContextListener,
			 * which is not supported by ServletContext.addListener.
			*/
			servletContext.addListener(new EfficientShutdownServletContextAttributeListener());
		}
		catch (Exception ex) {
			//TODO not yet looked into what caused this to fail.
		}
	}
	
	private void addMappings(ServletRegistration reg, String... mappings) {
		for (String mapping : mappings) {
			reg.addMapping(mapping);
{'fraction_non_alphanumeric': 0.10207100591715976, 'fraction_numerical': 0.002113271344040575, 'mean_word_length': 5.601115760111576, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6270695', 'n_tokens_mistral': 1385, 'n_tokens_neox': 1261, 'n_words': 329}