KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > Yasna > util > LinkedListNode


1 /**
2  * $RCSfile: LinkedListNode.java,v $
3  * $Revision: 1.3 $
4  * $Date: 2006/01/07 00:21:06 $
5  *
6  * Copyright (C) 2000 CoolServlets.com. All rights reserved.
7  *
8  * ===================================================================
9  * The Apache Software License, Version 1.1
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  *
15  * 1. Redistributions of source code must retain the above copyright
16  * notice, this list of conditions and the following disclaimer.
17  *
18  * 2. Redistributions in binary form must reproduce the above copyright
19  * notice, this list of conditions and the following disclaimer in
20  * the documentation and/or other materials provided with the
21  * distribution.
22  *
23  * 3. The end-user documentation included with the redistribution,
24  * if any, must include the following acknowledgment:
25  * "This product includes software developed by
26  * CoolServlets.com (http://www.Yasna.com)."
27  * Alternately, this acknowledgment may appear in the software itself,
28  * if and wherever such third-party acknowledgments normally appear.
29  *
30  * 4. The names "Jive" and "CoolServlets.com" must not be used to
31  * endorse or promote products derived from this software without
32  * prior written permission. For written permission, please
33  * contact webmaster@Yasna.com.
34  *
35  * 5. Products derived from this software may not be called "Jive",
36  * nor may "Jive" appear in their name, without prior written
37  * permission of CoolServlets.com.
38  *
39  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
40  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
41  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
42  * DISCLAIMED. IN NO EVENT SHALL COOLSERVLETS.COM OR
43  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
45  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
46  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
47  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
48  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
49  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
50  * SUCH DAMAGE.
51  * ====================================================================
52  *
53  * This software consists of voluntary contributions made by many
54  * individuals on behalf of CoolServlets.com. For more information
55  * on CoolServlets.com, please see <http://www.Yasna.com>.
56  */

57
58 package com.Yasna.util;
59
60 /**
61  * Doubly linked node in a LinkedList. Most LinkedList implementations keep the
62  * equivalent of this class private. We make it public so that references
63  * to each node in the list can be maintained externally.
64  *
65  * Exposing this class lets us make remove operations very fast. Remove is
66  * built into this class and only requires to reference reassignments. If
67  * remove was built into the main LinkedList class, a linear scan would have to
68  * be performed to find the correct node to delete.
69  *
70  * The linked list implementation was specifically written for the CoolServlets
71  * cache system. While it can be used as a general purpose linked list, for
72  * most applications, it is more suitable to use the linked list that is part
73  * of the Java Collections package.
74  *
75  * @see LinkedList
76  */

77 public class LinkedListNode {
78
79     public LinkedListNode previous;
80     public LinkedListNode next;
81     public Object JavaDoc object;
82
83     /**
84      * This class is further customized for the CoolServlets cache system. It
85      * maintains a timestamp of when a Cacheable object was first added to
86      * cache. Timestamps are stored as long values and represent the number
87      * of milleseconds passed since January 1, 1970 00:00:00.000 GMT.<p>
88      *
89      * The creation timestamp is used in the case that the cache has a
90      * maximum lifetime set. In that case, when
91      * [current time] - [creation time] > [max lifetime], the object will be
92      * deleted from cache.
93      */

94     public long timestamp;
95
96     /**
97      * Constructs a new linked list node.
98      *
99      * @param object the Object that the node represents.
100      * @param next a reference to the next LinkedListNode in the list.
101      * @param previous a reference to the previous LinkedListNode in the list.
102      */

103     public LinkedListNode(Object JavaDoc object, LinkedListNode next,
104             LinkedListNode previous)
105     {
106         this.object = object;
107         this.next = next;
108         this.previous = previous;
109     }
110
111     /**
112      * Removes this node from the linked list that it is a part of.
113      */

114     public void remove() {
115         previous.next = next;
116         next.previous = previous;
117     }
118     /**
119      * Returns a String representation of the linked list node by calling the
120      * toString method of the node's object.
121      *
122      * @return a String representation of the LinkedListNode.
123      */

124     public String JavaDoc toString() {
125         return object.toString();
126     }
127 }
128
Popular Tags