Package com.tangosol.net
Class CompositeAddressProvider
java.lang.Object
java.util.AbstractCollection
com.tangosol.net.CompositeAddressProvider
- All Implemented Interfaces:
AddressProvider
,DescribableAddressProvider
,SocketAddressProvider
,Iterable
,Collection
,Set
public class CompositeAddressProvider
extends AbstractCollection
implements DescribableAddressProvider, Set
CompositeAddressProvider is a composite of one or more AddressProviders or
addresses that also implements the Set interface. This AddressProvider will
provide addresses from all registered AddressProviders or Addresses.
This class implements the Set interface, but the contents are not checked to determine whether each element is unique. It is the responsibility of the user to ensure that the elements are unique if the object is used as a Set.
This implementation is thread-safe for consumers of the Set interface, but allows no more than one consumer of the AddressProvider interface.
- Since:
- Coherence 3.5
- Author:
- rhl 2008-12-05
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
An Iterator over the addresses in this AddressProvider.protected class
AddressProvider wrapper for a single address dynamically added to this AddressSet. -
Field Summary
Modifier and TypeFieldDescriptionprotected CompositeAddressProvider.AddressIterator
The default iterator used to implement the AddressProvider interface. -
Constructor Summary
ConstructorDescriptionDefault constructor.CompositeAddressProvider
(AddressProvider provider) Construct a CompositeAddressProvider from the specified AddressProvider. -
Method Summary
Modifier and TypeMethodDescriptionvoid
accept()
This method should be called by the client immediately after it determines that it can successfully use an address returned by theSocketAddressProvider.getNextAddress()
method.boolean
Ensures that this collection contains the specified element (optional operation).void
addAddress
(InetSocketAddress address) Add an address.void
addProvider
(AddressProvider provider) Add an AddressProvider.protected CompositeAddressProvider.AddressIterator
Create (if necessary) and return the default iterator.boolean
SocketAddressProvider instances are considered equivalent iff they consistently produce the same resulting set of addresses.String[]
Retrieve a human readable description of underlying addresses.protected List
getConfiguredAddresses
(AddressProvider provider) Return a list of configured addresses in the specified AddressProvider.Covariant ofSocketAddressProvider.getNextAddress()
which returns anInetSocketAddress
.protected List
Return the provider list.int
hashCode()
Return the hash code for this AddressProvider.iterator()
Returns an iterator over the elements contained in this collection.void
This method should be called by the client immediately after it determines that an attempt to use an address returned by theSocketAddressProvider.getNextAddress()
method has failed.boolean
Removes the specified element from this set if it is present (optional operation).int
size()
Returns the number of elements in this collection.Methods inherited from class java.util.AbstractCollection
addAll, clear, contains, containsAll, isEmpty, removeAll, retainAll, toArray, toArray, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
-
Field Details
-
m_iterInternal
The default iterator used to implement the AddressProvider interface.
-
-
Constructor Details
-
CompositeAddressProvider
public CompositeAddressProvider()Default constructor. -
CompositeAddressProvider
Construct a CompositeAddressProvider from the specified AddressProvider.- Parameters:
provider
- the AddressProvider to add
-
-
Method Details
-
addProvider
Add an AddressProvider.- Parameters:
provider
- the AddressProvider to add
-
addAddress
Add an address.- Parameters:
address
- the address to add
-
getProviderList
Return the provider list.- Returns:
- the provider list
-
getNextAddress
Covariant ofSocketAddressProvider.getNextAddress()
which returns anInetSocketAddress
.- Specified by:
getNextAddress
in interfaceAddressProvider
- Specified by:
getNextAddress
in interfaceSocketAddressProvider
- Returns:
- the next available address or null if the list of available addresses was exhausted
-
accept
public void accept()This method should be called by the client immediately after it determines that it can successfully use an address returned by theSocketAddressProvider.getNextAddress()
method.- Specified by:
accept
in interfaceSocketAddressProvider
-
reject
This method should be called by the client immediately after it determines that an attempt to use an address returned by theSocketAddressProvider.getNextAddress()
method has failed.- Specified by:
reject
in interfaceSocketAddressProvider
- Parameters:
eCause
- (optional) an exception that carries the reason why the the caller rejected the previously returned address
-
getAddressDescriptions
Retrieve a human readable description of underlying addresses.- Specified by:
getAddressDescriptions
in interfaceDescribableAddressProvider
- Returns:
- a string array of addresses in human readable format
-
equals
SocketAddressProvider instances are considered equivalent iff they consistently produce the same resulting set of addresses.Note: the general contract of hashCode and equals() should be preserved; AddressProviders that are "equal" should produce the same hashCode.
- Specified by:
equals
in interfaceCollection
- Specified by:
equals
in interfaceSet
- Specified by:
equals
in interfaceSocketAddressProvider
- Overrides:
equals
in classObject
- Parameters:
o
- the Object to compare this SocketAddressProvider to for equality- Returns:
- true iff this SocketAddressProvider is equal to the specified object
-
hashCode
public int hashCode()Return the hash code for this AddressProvider.- Specified by:
hashCode
in interfaceCollection
- Specified by:
hashCode
in interfaceSet
- Specified by:
hashCode
in interfaceSocketAddressProvider
- Overrides:
hashCode
in classObject
- Returns:
- the hash code for this AddressProvider
-
iterator
Returns an iterator over the elements contained in this collection.- Specified by:
iterator
in interfaceCollection
- Specified by:
iterator
in interfaceIterable
- Specified by:
iterator
in interfaceSet
- Specified by:
iterator
in classAbstractCollection
- Returns:
- an iterator over the elements contained in this collection.
-
size
public int size()Returns the number of elements in this collection. If the collection contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.- Specified by:
size
in interfaceCollection
- Specified by:
size
in interfaceSet
- Specified by:
size
in classAbstractCollection
- Returns:
- the number of elements in this collection
-
add
Ensures that this collection contains the specified element (optional operation). Returns true if the collection changed as a result of the call. (Returns false if this collection does not permit duplicates and already contains the specified element.) Collections that support this operation may place limitations on what elements may be added to the collection. In particular, some collections will refuse to add null elements, and others will impose restrictions on the type of elements that may be added. Collection classes should clearly specify in their documentation any restrictions on what elements may be added.This implementation always throws an UnsupportedOperationException.
- Specified by:
add
in interfaceCollection
- Specified by:
add
in interfaceSet
- Overrides:
add
in classAbstractCollection
- Parameters:
o
- element whose presence in this collection is to be ensured.- Returns:
- true if the collection changed as a result of the call.
- Throws:
UnsupportedOperationException
- if the add method is not supported by this collection.NullPointerException
- if this collection does not permit null elements, and the specified element is null.ClassCastException
- if the class of the specified element prevents it from being added to this collection.IllegalArgumentException
- if some aspect of this element prevents it from being added to this collection.
-
remove
Removes the specified element from this set if it is present (optional operation). More formally, removes an elemente
such that(o==null ? e==null : o.equals(e))
, if the set contains such an element. Returns true if the set contained the specified element (or equivalently, if the set changed as a result of the call). (The set will not contain the specified element once the call returns.)- Specified by:
remove
in interfaceCollection
- Specified by:
remove
in interfaceSet
- Overrides:
remove
in classAbstractCollection
- Parameters:
o
- object to be removed from this set, if present.- Returns:
- true if the set contained the specified element.
- Throws:
ClassCastException
- if the type of the specified element is incompatible with this set (optional).NullPointerException
- if the specified element is null and this set does not support null elements (optional).UnsupportedOperationException
- if the remove method is not supported by this set.
-
ensureInternalIterator
Create (if necessary) and return the default iterator.- Returns:
- the default iterator
-
getConfiguredAddresses
Return a list of configured addresses in the specified AddressProvider.- Parameters:
provider
- the address provider- Returns:
- the list of addresses
-