Class NetworkList<E>
- java.lang.Object
-
- ca.odell.glazedlists.AbstractEventList<E>
-
- ca.odell.glazedlists.TransformedList<E,E>
-
- ca.odell.glazedlists.io.NetworkList<E>
-
- All Implemented Interfaces:
ListEventListener<E>,EventList<E>,java.lang.Iterable<E>,java.util.Collection<E>,java.util.EventListener,java.util.List<E>
public final class NetworkList<E> extends TransformedList<E,E>
AnEventListthat is either published to the network or subscribed from the network. Since list elements must be transmitted over the network, eachNetworkListrequires aByteCoderto convertObjects to and from bytes.To instantiate a
NetworkList, use thesubscribe()andpublish()methods of a startedListPeer.NetworkLists may be taken offline and brought back online with theconnect()anddisconnect()methods. This allows an application to use aNetworkListin spite of an unreliable network connection.As a consequence of imperfect networks,
NetworkLists may sometimes go offline on their own. Some causes of this include the server program shutting down or crashing, the local network connection becoming unavailable, or a problem with the physical link, such as an unplugged cable.NetworkLists use a subset of HTTP/1.1 for transport, including chunked encoding. This protocol brings its own set of advantages:- HTTP is a standard well-understood protocol
- Clients may be served even if they are behind NAT or Firewalls
- The connection could be proxied by a standard HTTP proxy server, if necessary
- In theory, the served port could be shared with another HTTP daemon such as Tomcat
And HTTP brings some disadvantages also:
- A persistent connection must be held, even if updates are infrequent
- It cannot be differentiated from web traffic for analysis
Warning: The protocol used by this version of
NetworkListwill be incompatible with future versions. Eventually the protocol will be finalized but the current protocol is a work in progress.Warning: This class breaks the contract required by
List. SeeEventListfor an example.EventList Overview Writable: yes Concurrency: Requires ReadWriteLockfor every access, even for single-threaded usePerformance: N/A Memory: O(N) Unit Tests: N/A Issues: N/A - Author:
- Jesse Wilson
-
-
Field Summary
-
Fields inherited from class ca.odell.glazedlists.TransformedList
source
-
Fields inherited from class ca.odell.glazedlists.AbstractEventList
publisher, readWriteLock, updates
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddStatusListener(NetworkListStatusListener listener)Registers the specified listener to receive events about the status of thisNetworkList.voidconnect()Attempts to bring thisNetworkListonline.voiddisconnect()Attempts to take thisNetworkListoffline.voiddispose()Releases the resources consumed by thisTransformedListso that it may eventually be garbage collected.booleanisConnected()Returns true if this resource is on the network.booleanisWritable()Gets whether the sourceEventListis writable via this API.voidlistChanged(ListEvent<E> listChanges)When the underlying list changes, this notification allows the object to repaint itself or update itself as necessary.voidremoveStatusListener(NetworkListStatusListener listener)Deregisters the specified listener from receiving events about the status of thisNetworkList.-
Methods inherited from class ca.odell.glazedlists.TransformedList
add, addAll, clear, get, getSourceIndex, remove, removeAll, retainAll, set, size
-
Methods inherited from class ca.odell.glazedlists.AbstractEventList
add, addAll, addListEventListener, contains, containsAll, equals, getPublisher, getReadWriteLock, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, removeListEventListener, subList, toArray, toArray, toString
-
-
-
-
Method Detail
-
isWritable
public boolean isWritable()
Gets whether the sourceEventListis writable via this API.Extending classes must override this method in order to make themselves writable.
- Specified by:
isWritablein classTransformedList<E,E>
-
listChanged
public void listChanged(ListEvent<E> listChanges)
When the underlying list changes, this notification allows the object to repaint itself or update itself as necessary.It is mandatory that the calling thread has obtained the write lock on the source list. This is because the calling thread will have written to the source list to cause this event. This condition guarantees that no writes can occur while the listener is handling this event. It is an error to write to the source list while processing an event.
- Specified by:
listChangedin interfaceListEventListener<E>- Specified by:
listChangedin classTransformedList<E,E>- Parameters:
listChanges- aListEventdescribing the changes to the list
-
isConnected
public boolean isConnected()
Returns true if this resource is on the network. For published lists, this requires that the list is being served. For subscribed lists, this requires that a connection to the server has been established.
-
connect
public void connect()
Attempts to bring thisNetworkListonline. When the connection attempt is successful (or when it fails), allResourceStatusListeners will be notified.
-
disconnect
public void disconnect()
Attempts to take thisNetworkListoffline. When theNetworkListis fully disconnected, allResourceStatusListeners will be notified.
-
addStatusListener
public void addStatusListener(NetworkListStatusListener listener)
Registers the specified listener to receive events about the status of thisNetworkList.
-
removeStatusListener
public void removeStatusListener(NetworkListStatusListener listener)
Deregisters the specified listener from receiving events about the status of thisNetworkList.
-
dispose
public void dispose()
Releases the resources consumed by thisTransformedListso that it may eventually be garbage collected.A
TransformedListwill be garbage collected without a call toTransformedList.dispose(), but not before its sourceEventListis garbage collected. By callingTransformedList.dispose(), you allow theTransformedListto be garbage collected before its sourceEventList. This is necessary for situations where aTransformedListis short-lived but its sourceEventListis long-lived.Warning: It is an error to call any method on a
TransformedListafter it has been disposed.
-
-