KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > barracuda > plankton > http > ContextServices


1 /*
2  * Copyright (C) 2003 Christian Cryder [christianc@granitepeaks.com]
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * $Id: ContextServices.java,v 1.4 2004/02/01 05:16:28 christianc Exp $
19  */

20 package org.enhydra.barracuda.plankton.http;
21
22 import java.lang.ref.*;
23 import javax.servlet.*;
24
25 import org.apache.log4j.*;
26
27 import org.enhydra.barracuda.plankton.data.ReferenceFactory;
28
29
30 /**
31  * This class defines a convenience method to get the servlet
32  * context. It also provides a mechanism to easily cache objects
33  * in the session by Reference (which allows them to automatically
34  * be removed from the session if the system starts running low on memory)
35  */

36 public class ContextServices {
37
38     //constants
39
public static final String JavaDoc KEY = ContextServices.class.getName()+".Key";
40
41     protected static final Logger logger = Logger.getLogger(ContextServices.class.getName());
42
43     /**
44      * This method looks for an object in the servlet context based on a given key.
45      * If the object is not present, it will be created using the ReferenceFactory
46      * and cached in session for future use.
47      *
48      * @param context the ServletContext
49      * @param key the key that identifies this object
50      * @param factory the ReferenceFactory used to create the object
51      * @return the object from the cache
52      */

53     public static Object JavaDoc getObjectFromCache(ServletContext context, Object JavaDoc key, ReferenceFactory factory) {
54         Reference r = (Reference) context.getAttribute(KEY+key);
55         Object JavaDoc obj = null;
56         if (r!=null) obj = r.get();
57         if (r==null || obj==null) {
58             r = factory.getObjectReference();
59             obj = r.get();
60             context.setAttribute(KEY+key, r);
61             if (logger.isDebugEnabled()) logger.debug("Created reference:"+r);
62         }
63         if (logger.isDebugEnabled()) logger.debug("Returning object from cache:"+obj);
64         return obj;
65     }
66     
67
68     
69 }
70
Popular Tags