KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > j2ee > blueprints > consumerwebsite > SignOnNotifier


1 /*
2 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * - Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * - Redistribution in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * Neither the name of Sun Microsystems, Inc. or the names of
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * This software is provided "AS IS," without a warranty of any
21 * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
22 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
24 * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
25 * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
26 * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
27 * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
28 * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
29 * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
30 * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE,
31 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
32 *
33 * You acknowledge that Software is not designed, licensed or intended
34 * for use in the design, construction, operation or maintenance of
35 * any nuclear facility.
36 */

37
38 package com.sun.j2ee.blueprints.consumerwebsite;
39
40 import java.beans.Beans JavaDoc;
41 import java.util.*;
42 import javax.servlet.http.*;
43 import javax.servlet.*;
44
45 // signon component
46
import com.sun.j2ee.blueprints.signon.web.SignOnFilter;
47
48 // customer component imports
49
import com.sun.j2ee.blueprints.customer.*;
50
51 // adventure imports
52
import com.sun.j2ee.blueprints.consumerwebsite.actions.*;
53
54 /**
55  * This class will bind with the current session and notify the Adventure Builder
56  * Back end when a SignOn has occured.
57  *
58  * This allows for a loose coupling of the SignOn component and the
59  * Adventure Builder Application. Ensure the neccessary setup is
60  * done when a user signs in.
61  */

62 public class SignOnNotifier
63    implements java.io.Serializable JavaDoc, HttpSessionAttributeListener {
64
65
66     public SignOnNotifier() { }
67
68     // do nothing
69
public void attributeRemoved(HttpSessionBindingEvent se) {}
70     
71     /**
72      *
73      * Process an attribute added
74      *
75      */

76     public void attributeAdded(HttpSessionBindingEvent se) {
77         processEvent(se);
78     }
79
80     /**
81      * Process the update
82      */

83     public void attributeReplaced(HttpSessionBindingEvent se) {
84         processEvent(se);
85     }
86     
87     private void processEvent(HttpSessionBindingEvent se) {
88         HttpSession session = se.getSession();
89         String JavaDoc name = se.getName();
90         /* check if the value matches the signon attribute
91          * if a macth fire off an event to the ejb tier that the user
92          * has signed on and load the account for the user
93          */

94         if (name.equals(SignOnFilter.SIGNED_ON_USER)) {
95             boolean aSignOn = ((Boolean JavaDoc)se.getValue()).booleanValue();
96             if (aSignOn) {
97                 AdventureComponentManager acm =
98                     (AdventureComponentManager)session.getAttribute(AdventureKeys.COMPONENT_MANAGER);
99                 // Delegate the work to access the customer component.
100
CustomerFacade facade = null;
101                 /**
102                  * If the unbinding was the result of a session timeout
103                  * the session will be gone and the acm will be null
104                  */

105                 if (acm != null) {
106                     facade = acm.getCustomerFacade(session);
107                     CustomerHTMLAction action = new CustomerHTMLAction();
108                     CustomerBean bean = null;
109                     try {
110                         bean = action.readAccount(session, facade);
111                     } catch (Exception JavaDoc cex) {
112                         // log error message
113
cex.printStackTrace();
114                     }
115                     session.setAttribute(AdventureKeys.CUSTOMER_BEAN, bean);
116                 }
117             }
118         }
119     }
120
121 }
122
123
124
Popular Tags