/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.web.portal.instanttrace; import java.io.InputStream; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Component; import com.enonic.cms.framework.util.HttpServletUtil; import com.enonic.cms.framework.util.MimeTypeResolver; import com.enonic.cms.core.Path; import com.enonic.cms.core.security.SecurityService; import com.enonic.cms.core.security.userstore.MemberOfResolver; import com.enonic.cms.core.security.userstore.UserStoreService; import com.enonic.cms.web.portal.PortalWebContext; import com.enonic.cms.web.portal.handler.WebHandlerBase; @Component public class InstantTraceResourceHandler extends WebHandlerBase { @Autowired protected ResourceLoader resourceLoader; @Autowired protected SecurityService securityService; @Autowired protected UserStoreService userStoreService; @Autowired protected MemberOfResolver memberOfResolver; @Autowired private MimeTypeResolver mimeTypeResolver; @Override protected boolean canHandle( final Path localPath ) { return InstantTracePathInspector.isResourcePath( localPath ); } @Override protected void doHandle( final PortalWebContext context ) throws Exception { handleResource( context.getRequest(), context.getResponse() ); } private void handleResource( HttpServletRequest request, HttpServletResponse response ) throws Exception { final String fileName = FilenameUtils.getName( request.getRequestURI() ); final String mimeType = mimeTypeResolver.getMimeType( fileName ); final InputStream inputStream = this.resourceLoader.getResource( "WEB-INF/itrace/" + fileName ).getInputStream(); final ServletOutputStream outputStream = response.getOutputStream(); HttpServletUtil.copyNoCloseOut( inputStream, outputStream ); response.setContentType( mimeType ); } }