001: /**
002: * $RCSfile: LinkedListNode.java,v $
003: * $Revision: 1.3 $
004: * $Date: 2006/01/07 00:21:06 $
005: *
006: * Copyright (C) 2000 CoolServlets.com. All rights reserved.
007: *
008: * ===================================================================
009: * The Apache Software License, Version 1.1
010: *
011: * Redistribution and use in source and binary forms, with or without
012: * modification, are permitted provided that the following conditions
013: * are met:
014: *
015: * 1. Redistributions of source code must retain the above copyright
016: * notice, this list of conditions and the following disclaimer.
017: *
018: * 2. Redistributions in binary form must reproduce the above copyright
019: * notice, this list of conditions and the following disclaimer in
020: * the documentation and/or other materials provided with the
021: * distribution.
022: *
023: * 3. The end-user documentation included with the redistribution,
024: * if any, must include the following acknowledgment:
025: * "This product includes software developed by
026: * CoolServlets.com (http://www.Yasna.com)."
027: * Alternately, this acknowledgment may appear in the software itself,
028: * if and wherever such third-party acknowledgments normally appear.
029: *
030: * 4. The names "Jive" and "CoolServlets.com" must not be used to
031: * endorse or promote products derived from this software without
032: * prior written permission. For written permission, please
033: * contact webmaster@Yasna.com.
034: *
035: * 5. Products derived from this software may not be called "Jive",
036: * nor may "Jive" appear in their name, without prior written
037: * permission of CoolServlets.com.
038: *
039: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
040: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
041: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
042: * DISCLAIMED. IN NO EVENT SHALL COOLSERVLETS.COM OR
043: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
044: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
045: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
046: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
047: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
048: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
049: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
050: * SUCH DAMAGE.
051: * ====================================================================
052: *
053: * This software consists of voluntary contributions made by many
054: * individuals on behalf of CoolServlets.com. For more information
055: * on CoolServlets.com, please see <http://www.Yasna.com>.
056: */package com.Yasna.util;
057:
058: /**
059: * Doubly linked node in a LinkedList. Most LinkedList implementations keep the
060: * equivalent of this class private. We make it public so that references
061: * to each node in the list can be maintained externally.
062: *
063: * Exposing this class lets us make remove operations very fast. Remove is
064: * built into this class and only requires to reference reassignments. If
065: * remove was built into the main LinkedList class, a linear scan would have to
066: * be performed to find the correct node to delete.
067: *
068: * The linked list implementation was specifically written for the CoolServlets
069: * cache system. While it can be used as a general purpose linked list, for
070: * most applications, it is more suitable to use the linked list that is part
071: * of the Java Collections package.
072: *
073: * @see LinkedList
074: */
075: public class LinkedListNode {
076:
077: public LinkedListNode previous;
078: public LinkedListNode next;
079: public Object object;
080:
081: /**
082: * This class is further customized for the CoolServlets cache system. It
083: * maintains a timestamp of when a Cacheable object was first added to
084: * cache. Timestamps are stored as long values and represent the number
085: * of milleseconds passed since January 1, 1970 00:00:00.000 GMT.<p>
086: *
087: * The creation timestamp is used in the case that the cache has a
088: * maximum lifetime set. In that case, when
089: * [current time] - [creation time] > [max lifetime], the object will be
090: * deleted from cache.
091: */
092: public long timestamp;
093:
094: /**
095: * Constructs a new linked list node.
096: *
097: * @param object the Object that the node represents.
098: * @param next a reference to the next LinkedListNode in the list.
099: * @param previous a reference to the previous LinkedListNode in the list.
100: */
101: public LinkedListNode(Object object, LinkedListNode next,
102: LinkedListNode previous) {
103: this .object = object;
104: this .next = next;
105: this .previous = previous;
106: }
107:
108: /**
109: * Removes this node from the linked list that it is a part of.
110: */
111: public void remove() {
112: previous.next = next;
113: next.previous = previous;
114: }
115:
116: /**
117: * Returns a String representation of the linked list node by calling the
118: * toString method of the node's object.
119: *
120: * @return a String representation of the LinkedListNode.
121: */
122: public String toString() {
123: return object.toString();
124: }
125: }
|