KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > openedit > archive > servlet > WatermarkFilter


1 /*
2  * Created on Jan 25, 2006
3  */

4 package com.openedit.archive.servlet;
5
6 import java.io.BufferedOutputStream JavaDoc;
7 import java.io.ByteArrayInputStream JavaDoc;
8 import java.io.ByteArrayOutputStream JavaDoc;
9 import java.io.File JavaDoc;
10 import java.io.IOException JavaDoc;
11 import java.io.OutputStream JavaDoc;
12
13 import javax.servlet.Filter JavaDoc;
14 import javax.servlet.FilterChain JavaDoc;
15 import javax.servlet.FilterConfig JavaDoc;
16 import javax.servlet.ServletContext JavaDoc;
17 import javax.servlet.ServletException JavaDoc;
18 import javax.servlet.ServletRequest JavaDoc;
19 import javax.servlet.ServletResponse JavaDoc;
20 import javax.servlet.http.HttpServletResponse JavaDoc;
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 JavaDoc
27 {
28
29     protected WatermarkMaker fieldWatermarkMaker;
30     
31     public void init(FilterConfig JavaDoc inConfig) throws ServletException JavaDoc
32     {
33         String JavaDoc inPng = inConfig.getInitParameter("pngwatermark");
34         if ( inPng != null)
35         {
36             ServletContext JavaDoc servletContext = inConfig.getServletContext();
37             String JavaDoc rootPath = servletContext.getRealPath("/");
38             getWatermarkMaker().setWaterMark(new File JavaDoc( 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 JavaDoc inRequest, ServletResponse JavaDoc inResponse, FilterChain JavaDoc inArg2)
47         throws ServletException JavaDoc, IOException JavaDoc
48     {
49         //capture the JPG stream
50
ByteArrayOutputStream JavaDoc out = new ByteArrayOutputStream JavaDoc();
51         DecoratedServletOutputStream stream = new DecoratedServletOutputStream(new BufferedOutputStream JavaDoc(out));
52         DecoratedServletResponse response = new DecoratedServletResponse( (HttpServletResponse JavaDoc)inResponse, stream);
53         inArg2.doFilter(inRequest,response);
54         stream.flush();
55         OutputStream JavaDoc toBrowser = inResponse.getOutputStream();
56
57         byte[] image = out.toByteArray();
58         String JavaDoc start = new String JavaDoc(image,0,2);
59         if ( "PK".equals(start))
60         {
61             try
62             {
63                 getWatermarkMaker().addWaterMarkToZip(new ByteArrayInputStream JavaDoc(image),toBrowser);
64             }
65             catch ( Exception JavaDoc ex)
66             {
67                 throw new ServletException JavaDoc(ex);
68             }
69         }
70         else
71         {
72             getWatermarkMaker().addWaterMark(new ByteArrayInputStream JavaDoc(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