All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.tinygroup.springmvc.extension.ExtensionMappingInstance Maven / Gradle / Ivy

The newest version!
/**
 *  Copyright (c) 1997-2013, www.tinygroup.org ([email protected]).
 *
 *  Licensed under the GPL, Version 3.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *       http://www.gnu.org/licenses/gpl.html
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.tinygroup.springmvc.extension;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.Assert;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.servlet.*;
import org.tinygroup.logger.LogLevel;
import org.tinygroup.logger.Logger;
import org.tinygroup.logger.LoggerFactory;
import org.tinygroup.springmvc.extension.impl.AbstractCachableExtensionMappingInstanceResolver;
import org.tinygroup.springmvc.extension.impl.MediaTypeRegistrarSupport;

import java.util.Iterator;
import java.util.List;

/**
 * 扩展名对应的Spring mvc 模型对象。
 * 

*

* 注意:这个是对所有支持的请求url的扩展名的MVC组件抽象。 * */ public class ExtensionMappingInstance implements InitializingBean { private static final Logger logger = LoggerFactory .getLogger(ExtensionMappingInstance.class); /** * 扩展名称 */ private String extension; private String mediaTypes; /** * MultipartResolver used by this servlet */ private MultipartResolver commonsMultipartResolver; /** * LocaleResolver used by this servlet */ private LocaleResolver commonLocaleResolver; /** * ThemeResolver used by this servlet */ private ThemeResolver commonThemeResolver; /** * List of HandlerMappings used by this servlet */ private List handlerMappings; /** * List of HandlerAdapters used by this servlet */ private List handlerAdapters; /** * List of HandlerExceptionResolvers used by this servlet */ private List handlerExceptionResolvers; /** * RequestToViewNameTranslator used by this servlet */ private RequestToViewNameTranslator viewNameTranslator; /** * List of ViewResolvers used by this servlet */ private List viewResolvers; private MediaTypeRegistrarSupport mediaTypeRegistrarSupport; private AbstractCachableExtensionMappingInstanceResolver extensionMappingInstanceResolver; // ~~~ bean 方法 public void setMediaTypeRegistrarSupport( MediaTypeRegistrarSupport mediaTypeRegistrarSupport) { this.mediaTypeRegistrarSupport = mediaTypeRegistrarSupport; } public void setExtensionMappingInstanceResolver( AbstractCachableExtensionMappingInstanceResolver extensionMappingInstanceResolver) { this.extensionMappingInstanceResolver = extensionMappingInstanceResolver; } /** * @return Returns the extension. */ public String getExtension() { return extension; } /** * @param extension The extension to set. */ public void setExtension(String extension) { this.extension = extension; } public void setCommonsMultipartResolver( MultipartResolver commonsMultipartResolver) { this.commonsMultipartResolver = commonsMultipartResolver; } public void setCommonLocaleResolver(LocaleResolver commonLocaleResolver) { this.commonLocaleResolver = commonLocaleResolver; } public void setCommonThemeResolver(ThemeResolver commonThemeResolver) { this.commonThemeResolver = commonThemeResolver; } public MultipartResolver getCommonsMultipartResolver() { return commonsMultipartResolver; } public LocaleResolver getCommonLocaleResolver() { return commonLocaleResolver; } public ThemeResolver getCommonThemeResolver() { return commonThemeResolver; } /** * @return Returns the handlerMappings. */ public List getHandlerMappings() { return handlerMappings; } /** * @param handlerMappings The handlerMappings to set. */ public void setHandlerMappings(List handlerMappings) { this.handlerMappings = handlerMappings; } /** * @return Returns the handlerAdapters. */ public List getHandlerAdapters() { return handlerAdapters; } /** * @param handlerAdapters The handlerAdapters to set. */ public void setHandlerAdapters(List handlerAdapters) { this.handlerAdapters = handlerAdapters; } /** * @return Returns the handlerExceptionResolvers. */ public List getHandlerExceptionResolvers() { return handlerExceptionResolvers; } /** * @param handlerExceptionResolvers The handlerExceptionResolvers to set. */ public void setHandlerExceptionResolvers( List handlerExceptionResolvers) { this.handlerExceptionResolvers = handlerExceptionResolvers; } /** * @return Returns the viewNameTranslator. */ public RequestToViewNameTranslator getViewNameTranslator() { return viewNameTranslator; } /** * @param viewNameTranslator The viewNameTranslator to set. */ public void setViewNameTranslator( RequestToViewNameTranslator viewNameTranslator) { this.viewNameTranslator = viewNameTranslator; } /** * @return Returns the viewResolvers. */ public List getViewResolvers() { return viewResolvers; } /** * @param viewResolvers The viewResolvers to set. */ public void setViewResolvers(List viewResolvers) { this.viewResolvers = viewResolvers; } @Override public String toString() { StringBuffer sbf = new StringBuffer(143); sbf.append(" Extension[").append(extension).append("]"); sbf.append("{"); sbf.append("multipartResolver=").append(getClassNameFor(commonsMultipartResolver)).append(","); sbf.append("localResolver=").append(getClassNameFor(commonLocaleResolver)).append(","); sbf.append("themeResolver=").append(getClassNameFor(commonThemeResolver)).append(","); sbf.append("handlerMappings=").append(getClassNameFor(handlerMappings)).append(","); sbf.append("handlerAdapters=").append(getClassNameFor(handlerAdapters)).append(","); sbf.append("handlerExceptionResolvers=").append(getClassNameFor(handlerExceptionResolvers)).append(","); sbf.append("viewNameTranslator=").append(getClassNameFor(viewNameTranslator)).append(","); sbf.append("viewResolvers=").append(getClassNameFor(viewResolvers)).append("}"); return sbf.toString(); } private String getClassNameFor(Object obj) { return obj == null ? "null" : obj.getClass().getName(); } private String getClassNameFor(List list) { if (list == null || list.isEmpty()) { return "size 0"; } StringBuffer sbf = new StringBuffer("{"); for (Iterator iterator = list.iterator(); iterator.hasNext(); ) { Object object = iterator.next(); sbf.append(getClassNameFor(object)); sbf.append("|"); } sbf.append("}"); return sbf.toString(); } public void setMediaTypes(String mediaTypes) { this.mediaTypes = mediaTypes; } public void afterPropertiesSet() throws Exception { Assert.notNull(extension); if (StringUtils.isBlank(mediaTypes)) { logger.logMessage(LogLevel.WARN, "The property mediaTypes is empty. " + this); } mediaTypeRegistrarSupport.setMediaTypes(extension, mediaTypes); extensionMappingInstanceResolver.addExtensionMapping(this); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy