
org.tinygroup.springmvc.handlermapping.TinyHandlerMappingComposite Maven / Gradle / Ivy
The newest version!
package org.tinygroup.springmvc.handlermapping;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.support.ApplicationObjectSupport;
import org.springframework.core.OrderComparator;
import org.springframework.web.servlet.HandlerExecutionChain;
import org.springframework.web.servlet.HandlerMapping;
import org.tinygroup.assembly.AssemblyService;
import org.tinygroup.assembly.DefaultAssemblyService;
import org.tinygroup.commons.tools.CollectionUtil;
import org.tinygroup.logger.LogLevel;
import org.tinygroup.logger.Logger;
import org.tinygroup.logger.LoggerFactory;
public class TinyHandlerMappingComposite extends ApplicationObjectSupport
implements HandlerMapping, InitializingBean {
private static final Logger logger = LoggerFactory
.getLogger(TinyHandlerMappingComposite.class);
private List handlerMappingComposite;
private AssemblyService assemblyService = new DefaultAssemblyService();
public void setAssemblyService(
AssemblyService assemblyService) {
this.assemblyService = assemblyService;
}
public void setHandlerMappingComposite(
List handlerMappingComposite) {
this.handlerMappingComposite = handlerMappingComposite;
}
public void afterPropertiesSet() throws Exception {
if (CollectionUtil.isEmpty(handlerMappingComposite)) {
List exclusions = new ArrayList();
exclusions.add(this.getApplicationContext().getBean(
TinyHandlerMapping.class));
exclusions.add(this);
assemblyService.setApplicationContext(getApplicationContext());
assemblyService.setExclusions(exclusions);
handlerMappingComposite = assemblyService
.findParticipants(HandlerMapping.class);
OrderComparator.sort(this.handlerMappingComposite);
}
}
public HandlerExecutionChain getHandler(HttpServletRequest request)
throws Exception {
if (!CollectionUtil.isEmpty(handlerMappingComposite)) {
for (HandlerMapping handlerMapping : handlerMappingComposite) {
HandlerExecutionChain handlerExecutionChain = handlerMapping
.getHandler(request);
if (handlerExecutionChain != null) {
logger.logMessage(
LogLevel.DEBUG,
"invoke HandlerMapping.getHandler() method that will proxy [{0}]",
handlerExecutionChain);
return handlerExecutionChain;
}
}
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy