1 4 package com.openedit.archive.servlet; 5 6 import java.io.BufferedOutputStream ; 7 import java.io.ByteArrayInputStream ; 8 import java.io.ByteArrayOutputStream ; 9 import java.io.File ; 10 import java.io.IOException ; 11 import java.io.OutputStream ; 12 13 import javax.servlet.Filter ; 14 import javax.servlet.FilterChain ; 15 import javax.servlet.FilterConfig ; 16 import javax.servlet.ServletContext ; 17 import javax.servlet.ServletException ; 18 import javax.servlet.ServletRequest ; 19 import javax.servlet.ServletResponse ; 20 import javax.servlet.http.HttpServletResponse ; 21 22 import com.openedit.archive.WatermarkMaker; 23 import com.openedit.servlet.DecoratedServletOutputStream; 24 import com.openedit.servlet.DecoratedServletResponse; 25 26 public class WatermarkFilter implements Filter  27 { 28 29 protected WatermarkMaker fieldWatermarkMaker; 30 31 public void init(FilterConfig inConfig) throws ServletException  32 { 33 String inPng = inConfig.getInitParameter("pngwatermark"); 34 if ( inPng != null) 35 { 36 ServletContext servletContext = inConfig.getServletContext(); 37 String rootPath = servletContext.getRealPath("/"); 38 getWatermarkMaker().setWaterMark(new File ( rootPath, inPng)); 39 if ( !getWatermarkMaker().getWaterMark().exists() ) 40 { 41 inConfig.getServletContext().log("Could not load watermark file:" + getWatermarkMaker().getWaterMark().getAbsolutePath() ); 42 } 43 } 44 } 45 46 public void doFilter(ServletRequest inRequest, ServletResponse inResponse, FilterChain inArg2) 47 throws ServletException , IOException  48 { 49 ByteArrayOutputStream out = new ByteArrayOutputStream (); 51 DecoratedServletOutputStream stream = new DecoratedServletOutputStream(new BufferedOutputStream (out)); 52 DecoratedServletResponse response = new DecoratedServletResponse( (HttpServletResponse )inResponse, stream); 53 inArg2.doFilter(inRequest,response); 54 stream.flush(); 55 OutputStream toBrowser = inResponse.getOutputStream(); 56 57 byte[] image = out.toByteArray(); 58 String start = new String (image,0,2); 59 if ( "PK".equals(start)) 60 { 61 try 62 { 63 getWatermarkMaker().addWaterMarkToZip(new ByteArrayInputStream (image),toBrowser); 64 } 65 catch ( Exception ex) 66 { 67 throw new ServletException (ex); 68 } 69 } 70 else 71 { 72 getWatermarkMaker().addWaterMark(new ByteArrayInputStream (image),toBrowser); 73 } 74 75 } 76 77 public void destroy() 78 { 79 } 80 81 public WatermarkMaker getWatermarkMaker() 82 { 83 if (fieldWatermarkMaker == null) 84 { 85 fieldWatermarkMaker = new WatermarkMaker(); 86 } 87 88 return fieldWatermarkMaker; 89 } 90 91 public void setWatermarkMaker(WatermarkMaker inWatermarkMaker) 92 { 93 fieldWatermarkMaker = inWatermarkMaker; 94 } 95 96 } 97 | Popular Tags |