1 25 26 package com.j2biz.blogunity.web.actions.blog; 27 28 import java.io.BufferedInputStream ; 29 import java.io.BufferedOutputStream ; 30 import java.io.IOException ; 31 import java.io.InputStream ; 32 import java.net.FileNameMap ; 33 import java.net.URLConnection ; 34 35 import javax.servlet.http.HttpServletRequest ; 36 import javax.servlet.http.HttpServletResponse ; 37 38 import com.j2biz.blogunity.exception.BlogunityException; 39 import com.j2biz.blogunity.i18n.I18N; 40 import com.j2biz.blogunity.i18n.I18NStatusFactory; 41 import com.j2biz.blogunity.pojo.Blog; 42 import com.j2biz.blogunity.util.ResourceUtils; 43 import com.j2biz.blogunity.web.IActionResult; 44 import com.j2biz.blogunity.web.actions.AbstractAction; 45 46 public abstract class AbstractResourceAction extends AbstractAction { 47 48 public Blog blog; 49 50 public String resource; 51 52 public AbstractResourceAction(Blog blog, String resource) { 53 this.blog = blog; 54 this.resource = resource; 55 } 56 57 public abstract String getResourcesDirectory(); 58 59 65 public IActionResult execute(HttpServletRequest request, HttpServletResponse response) 66 throws BlogunityException { 67 68 String resourcesDir = getResourcesDirectory(); 69 70 String relativeResourcePath = "/blogs/" + blog.getUrlName() + resourcesDir + resource; 71 72 FileNameMap fileNameMap = URLConnection.getFileNameMap(); 73 response.setContentType(fileNameMap.getContentTypeFor(relativeResourcePath)); 74 75 InputStream inx = ResourceUtils.getResourceAsStream(relativeResourcePath); 76 77 if (inx == null) { 78 79 throw new BlogunityException(I18NStatusFactory.create(I18N.ERRORS.RESOURCE_NOT_FOUND, 80 relativeResourcePath)); } 81 82 try { 83 BufferedInputStream in = new BufferedInputStream (inx); 84 BufferedOutputStream out = new BufferedOutputStream (response.getOutputStream()); 85 int i = in.read(); 86 while (i != -1) { 87 out.write(i); 88 i = in.read(); 89 } 90 in.close(); 91 out.close(); 92 } catch (IOException ioe) { 93 94 throw new BlogunityException(I18NStatusFactory 95 .create(I18N.ERRORS.THEME_READ_ERROR, ioe)); 96 } 97 98 return IActionResult.NULL_RESULT; 99 } 100 101 } | Popular Tags |