import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
/*
* Copyright 2005 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
public class LinkedListEntry extends AbstractBaseLinkedListNode {
private static final long serialVersionUID = 400L;
private Object object;
public LinkedListEntry() {
}
public LinkedListEntry(final Object object) {
this.object = object;
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
super.readExternal(in);
object = in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
super.writeExternal(out);
out.writeObject(object);
}
public Object getObject() {
return this.object;
}
public int hashCode() {
return this.object.hashCode();
}
public boolean equals(final Object other) {
return this.object.equals( other );
}
}
/**
* Provides a abstract base implementation that an object can extend so that it can be used in a LinkedList.
*
* @see LinkedList
*
* @author <a href="mailto:mark.proctor@jboss.com">Mark Proctor</a>
* @author <a href="mailto:bob@werken.com">Bob McWhirter</a>
*/
class AbstractBaseLinkedListNode
implements
LinkedListNode {
private static final long serialVersionUID = 400L;
private LinkedListNode previous;
private LinkedListNode next;
/**
* Empty Constructor
*/
public AbstractBaseLinkedListNode() {
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
previous = (LinkedListNode)in.readObject();
next = (LinkedListNode)in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
out.writeObject(previous);
out.writeObject(next);
}
/* (non-Javadoc)
* @see org.drools.reteoo.LinkedListNode#getNext()
*/
public LinkedListNode getNext() {
return this.next;
}
/* (non-Javadoc)
* @see org.drools.reteoo.LinkedListNode#setNext(org.drools.reteoo.LinkedListNode)
*/
public void setNext(final LinkedListNode next) {
this.next = next;
}
/* (non-Javadoc)
* @see org.drools.reteoo.LinkedListNode#getPrevious()
*/
public LinkedListNode getPrevious() {
return this.previous;
}
/* (non-Javadoc)
* @see org.drools.reteoo.LinkedListNode#setPrevious(org.drools.reteoo.LinkedListNode)
*/
public void setPrevious(final LinkedListNode previous) {
this.previous = previous;
}
}
/**
* Items placed in a <code>LinkedList<code> must implement this interface .
*
* @see LinkedList
*
* @author <a href="mailto:mark.proctor@jboss.com">Mark Proctor</a>
* @author <a href="mailto:bob@werken.com">Bob McWhirter</a>
*/
interface LinkedListNode
extends
Externalizable {
/**
* Returns the next node
* @return
* The next LinkedListNode
*/
public LinkedListNode getNext();
/**
* Sets the next node
* @param next
* The next LinkedListNode
*/
public void setNext(LinkedListNode next);
/**
* Returns the previous node
* @return
* The previous LinkedListNode
*/
public LinkedListNode getPrevious();
/**
* Sets the previous node
* @param previous
* The previous LinkedListNode
*/
public void setPrevious(LinkedListNode previous);
}