Java tutorial
/* * 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); } }