KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > blojsom > plugin > obfuscation > SimpleObfuscationPlugin


1 /**
2  * Copyright (c) 2003-2006, David A. Czarnecki
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * Redistributions of source code must retain the above copyright notice, this list of conditions and the
9  * following disclaimer.
10  * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
11  * following disclaimer in the documentation and/or other materials provided with the distribution.
12  * Neither the name of "David A. Czarnecki" and "blojsom" nor the names of its contributors may be used to
13  * endorse or promote products derived from this software without specific prior written permission.
14  * Products derived from this software may not be called "blojsom", nor may "blojsom" appear in their name,
15  * without prior written permission of David A. Czarnecki.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
18  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
19  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
20  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
21  * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */

31 package org.blojsom.plugin.obfuscation;
32
33 import org.apache.commons.codec.binary.Hex;
34 import org.blojsom.blog.Blog;
35 import org.blojsom.blog.Entry;
36 import org.blojsom.plugin.Plugin;
37 import org.blojsom.plugin.PluginException;
38 import org.blojsom.util.BlojsomConstants;
39
40 import javax.servlet.http.HttpServletRequest JavaDoc;
41 import javax.servlet.http.HttpServletResponse JavaDoc;
42 import java.io.UnsupportedEncodingException JavaDoc;
43 import java.util.Map JavaDoc;
44
45 /**
46  * SimpleObfuscationPlugin
47  *
48  * @author David Czarnecki
49  * @since blojsom 3.0
50  * @version $Id: SimpleObfuscationPlugin.java,v 1.1 2006/03/20 21:30:57 czarneckid Exp $
51  */

52 public class SimpleObfuscationPlugin implements Plugin {
53
54     public static final String JavaDoc BLOJSOM_PLUGIN_SIMPLE_OBFUSCATION = "BLOJSOM_PLUGIN_SIMPLE_OBFUSCATION";
55
56     /**
57      * Initialize this plugin. This method only called when the plugin is instantiated.
58      *
59      * @throws org.blojsom.plugin.PluginException If there is an error initializing the plugin
60      */

61     public void init() throws PluginException {
62     }
63
64     /**
65      * Simple obfuscation technique. Take every character and output a hex equivalent.
66      *
67      * @param data Data to be obfuscated
68      * @return Data that has been obfuscated
69      */

70     public String JavaDoc obfuscate(String JavaDoc data) {
71         if (data == null) {
72             return null;
73         }
74
75         if ("".equals(data)) {
76             return "";
77         }
78
79         StringBuffer JavaDoc result = new StringBuffer JavaDoc();
80         try {
81             char[] hexString = Hex.encodeHex(data.getBytes(BlojsomConstants.UTF8));
82             for (int i = 0; i < hexString.length; i++) {
83                 if (i % 2 == 0) {
84                     result.append("%");
85                 }
86                 result.append(hexString[i]);
87             }
88         } catch (UnsupportedEncodingException JavaDoc e) {
89             return data;
90         }
91
92         return result.toString();
93     }
94
95     /**
96      * Process the blog entries
97      *
98      * @param httpServletRequest Request
99      * @param httpServletResponse Response
100      * @param blog {@link Blog} instance
101      * @param context Context
102      * @param entries Blog entries retrieved for the particular request
103      * @return Modified set of blog entries
104      * @throws PluginException If there is an error processing the blog entries
105      */

106     public Entry[] process(HttpServletRequest JavaDoc httpServletRequest, HttpServletResponse JavaDoc httpServletResponse, Blog blog, Map JavaDoc context, Entry[] entries) throws PluginException {
107         context.put(BLOJSOM_PLUGIN_SIMPLE_OBFUSCATION, this);
108
109         return entries;
110     }
111
112     /**
113      * Perform any cleanup for the plugin. Called after {@link #process}.
114      *
115      * @throws PluginException If there is an error performing cleanup for this plugin
116      */

117     public void cleanup() throws PluginException {
118     }
119
120     /**
121      * Called when BlojsomServlet is taken out of service
122      *
123      * @throws PluginException If there is an error in finalizing this plugin
124      */

125     public void destroy() throws PluginException {
126     }
127 }
128
Popular Tags