Oracle® Coherence Java API Reference
v3.5

E14977-01

com.tangosol.net
Class ConfigurableAddressProvider

java.lang.Object
  extended by java.util.AbstractCollection
      extended by java.util.AbstractSet
          extended by com.tangosol.net.ConfigurableAddressProvider
All Implemented Interfaces:
AddressProvider, java.lang.Iterable, java.util.Collection, java.util.Set

public class ConfigurableAddressProvider
extends java.util.AbstractSet
implements AddressProvider

ConfigurableAddressProvider is an implementation of the AddressProvider interface based on a static list of addresses configured in an XML element that contains one or more items in the following format:

 <socket-address>
   <address>...</address>
   <port>...</port>
 </socket-address>
 
The order of items in the configured list will be randomized to provide basic load balancing.

This implementation is not thread safe.

Since:
Coherence 3.4
Author:
gg 2008-08-18

Nested Class Summary
protected static class ConfigurableAddressProvider.AddressHolder
          A stateful holder for an InetSocketAddress object.
 
Field Summary
protected  int m_iLast
          Index of the last returned address.
protected  java.util.List m_listHolders
          A list of AddressHolder objects.
 
Constructor Summary
ConfigurableAddressProvider(XmlElement xmlConfig)
          Construct an instance of ConfigurableAddressProvider based on the specified XML element.
 
Method Summary
 void accept()
          This method should be called by the client immediately after it determines that it can successfully use an address returned by the AddressProvider.getNextAddress() method.
static AddressProvider createAddressProvider(XmlElement xmlConfig, java.lang.ClassLoader loader)
          Instantiate an AddressProvider configured using an XML that conforms to the following format:
 boolean equals(java.lang.Object o)
          AddressProvider instances should compare to be equals() iff they should be expected to consistently produce the same resulting set of addresses.
 java.net.InetSocketAddress getNextAddress()
          Obtain a next available address to use.
 int hashCode()
          Return the hash code for this AddressProvider.
 java.util.Iterator iterator()
          Returns an iterator over the elements contained in this collection.
 void reject(java.lang.Throwable eCause)
          This method should be called by the client immediately after it determines that an attempt to use an address returned by the AddressProvider.getNextAddress() method has failed.
 int size()
          Returns the number of elements in this collection.
 java.lang.String toString()
          Return a string representation of this ConfigurableAddressProvider.
 
Methods inherited from class java.util.AbstractSet
removeAll
 
Methods inherited from class java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, remove, retainAll, toArray, toArray
 
Methods inherited from interface java.util.Set
add, addAll, clear, contains, containsAll, isEmpty, remove, retainAll, toArray, toArray
 

Field Detail

m_listHolders

protected java.util.List m_listHolders
A list of AddressHolder objects.


m_iLast

protected int m_iLast
Index of the last returned address.

Constructor Detail

ConfigurableAddressProvider

public ConfigurableAddressProvider(XmlElement xmlConfig)
Construct an instance of ConfigurableAddressProvider based on the specified XML element.

Parameters:
xmlConfig - the XML element that contains the configuration info
Method Detail

getNextAddress

public java.net.InetSocketAddress getNextAddress()
Obtain a next available address to use. If the caller can successfully use the returned address (e.g. a connection was established), it should call the AddressProvider's AddressProvider.accept() method.

Specified by:
getNextAddress in interface AddressProvider
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 the AddressProvider.getNextAddress() method.

Specified by:
accept in interface AddressProvider

reject

public void reject(java.lang.Throwable eCause)
This method should be called by the client immediately after it determines that an attempt to use an address returned by the AddressProvider.getNextAddress() method has failed.

Specified by:
reject in interface AddressProvider
Parameters:
eCause - (optional) an exception that carries the reason why the the caller rejected the previously returned address

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 interface java.util.Collection
Specified by:
size in interface java.util.Set
Specified by:
size in class java.util.AbstractCollection
Returns:
the number of elements in this collection

iterator

public java.util.Iterator iterator()
Returns an iterator over the elements contained in this collection.

Specified by:
iterator in interface java.lang.Iterable
Specified by:
iterator in interface java.util.Collection
Specified by:
iterator in interface java.util.Set
Specified by:
iterator in class java.util.AbstractCollection
Returns:
an iterator over the elements contained in this collection

createAddressProvider

public static AddressProvider createAddressProvider(XmlElement xmlConfig,
                                                    java.lang.ClassLoader loader)
Instantiate an AddressProvider configured using an XML that conforms to the following format:
   <!ELEMENT ... (socket-address+ | address-provider)>
   <!ELEMENT address-provider
     (class-name | (class-factory-name, method-name), init-params?>
   <!ELEMENT socket-address (address, port)>
 

Parameters:
xmlConfig - the XML element that contains the configuration info
loader - (optional) the ClassLoader that should be used to load necessary classes
Returns:
an instance of the corresponding AddressProvider implementation
See Also:
"remote-addresses" element declaration for the cache-config.dtd in the Coherence library

equals

public boolean equals(java.lang.Object o)
AddressProvider instances should compare to be equals() iff they should be expected to consistently produce the same resulting set of addresses.

Note: the general contract of hashCode and equals() should be preserved; AddressProviders which compare equals() should have the same hashCode.

Specified by:
equals in interface AddressProvider
Specified by:
equals in interface java.util.Collection
Specified by:
equals in interface java.util.Set
Overrides:
equals in class java.util.AbstractSet
Parameters:
o - the Object to compare this AddressProvider to for equality
Returns:
true iff this AddressProvider is equal to the specified object

hashCode

public int hashCode()
Return the hash code for this AddressProvider.

Specified by:
hashCode in interface AddressProvider
Specified by:
hashCode in interface java.util.Collection
Specified by:
hashCode in interface java.util.Set
Overrides:
hashCode in class java.util.AbstractSet
Returns:
the hash code for this AddressProvider

toString

public java.lang.String toString()
Return a string representation of this ConfigurableAddressProvider.

Overrides:
toString in class java.util.AbstractCollection
Returns:
a string representation of the list of configured addresses

Oracle® Coherence Java API Reference
v3.5

E14977-01

Copyright © 2000, 2009, Oracle. All rights reserved.