1 4 5 package com.sun.j2ee.blueprints.clientstate.deserialize; 6 7 import java.io.*; 8 import java.util.*; 9 10 import org.apache.commons.codec.base64.Base64; 12 13 import com.sun.j2ee.blueprints.clientstate.ByteArrayGuard; 15 import com.sun.j2ee.blueprints.clientstate.SessionPasswordStrategy; 16 17 import javax.servlet.*; 19 import javax.servlet.http.*; 20 21 22 25 public class ClientStateDeserializer { 26 27 public static void deserialize(HttpServletRequest request, 28 HttpServletResponse response) { 29 String beanName = request.getParameter("beanName"); 31 String secureString = request.getParameter("secure"); 32 boolean secure = false; 34 if (secureString != null) 35 try { 36 secure = new Boolean (secureString).booleanValue(); 37 } catch (Exception ex) { 38 } 39 if (beanName != null) { 40 String key = beanName.trim(); 41 System.out.println("ClientStateDeserializer: Reconstituting " + key); 42 String 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 requestObject = requestObject = ois.readObject(); 55 ois.close(); 56 System.out.println("ClientStateDeserializer: adding " + beanName + "=" + requestObject); 58 request.setAttribute(beanName, requestObject); 59 } catch (java.io.OptionalDataException ode) { 60 System.err.print("ClientStateDeserializer caught: " + ode); 61 } catch (java.lang.ClassNotFoundException cnfe) { 62 System.err.print("ClientStateDeserializer caught: " + cnfe); 63 } catch (java.io.IOException iox) { 64 System.err.print("ClientStateDeserializer caught: " + iox); 65 } 66 } 67 } 68 } 69 70 | Popular Tags |