KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > j2ee > blueprints > clientstate > deserialize > ClientStateDeserializer


1 /* Copyright 2004 Sun Microsystems, Inc. All rights reserved. You may not modify, use, reproduce, or distribute this software except in compliance with the terms of the License at:
2  http://adventurebuilder.dev.java.net/LICENSE.txt
3  $Id: ClientStateDeserializer.java,v 1.1 2005/05/17 05:12:34 gmurray71 Exp $ */

4
5 package com.sun.j2ee.blueprints.clientstate.deserialize;
6
7 import java.io.*;
8 import java.util.*;
9
10 // Apache Commons- Tag-Lib Imports
11
import org.apache.commons.codec.base64.Base64;
12
13 // Import for encryption/decryption routines
14
import com.sun.j2ee.blueprints.clientstate.ByteArrayGuard;
15 import com.sun.j2ee.blueprints.clientstate.SessionPasswordStrategy;
16
17 // J2EE imports
18
import javax.servlet.*;
19 import javax.servlet.http.*;
20
21
22 /**
23  * This class de-serializes Base64 encoded parameters encoded into a web page *
24 */

25 public class ClientStateDeserializer {
26
27     public static void deserialize(HttpServletRequest request,
28                             HttpServletResponse response) {
29         // de-serialize the request bean
30
String JavaDoc beanName = request.getParameter("beanName");
31         String JavaDoc secureString = request.getParameter("secure");
32         // default to off
33
boolean secure = false;
34         if (secureString != null)
35             try {
36                 secure = new Boolean JavaDoc(secureString).booleanValue();
37             } catch (Exception JavaDoc ex) {
38         }
39         if (beanName != null) {
40             String JavaDoc key = beanName.trim();
41             System.out.println("ClientStateDeserializer: Reconstituting " + key);
42             String JavaDoc values = request.getParameter(key);
43             byte[] plainData = Base64.decode(values.getBytes());
44             byte[] data;
45             if (secure) {
46                 ByteArrayGuard bag = new ByteArrayGuard(new SessionPasswordStrategy(request.getSession()));
47                 data = bag.decrypt(plainData);
48             } else {
49                 data = plainData;
50             }
51                 
52             try {
53                 ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));
54                 Object JavaDoc requestObject = requestObject = ois.readObject();
55                 ois.close();
56                 // put the de-serialized object back into the request
57
System.out.println("ClientStateDeserializer: adding " + beanName + "=" + requestObject);
58                 request.setAttribute(beanName, requestObject);
59             } catch (java.io.OptionalDataException JavaDoc ode) {
60                 System.err.print("ClientStateDeserializer caught: " + ode);
61             } catch (java.lang.ClassNotFoundException JavaDoc cnfe) {
62                 System.err.print("ClientStateDeserializer caught: " + cnfe);
63             } catch (java.io.IOException JavaDoc iox) {
64                 System.err.print("ClientStateDeserializer caught: " + iox);
65             }
66         }
67     }
68 }
69
70
Popular Tags