Package org.jgroups.stack
Class Configurator
- java.lang.Object
-
- org.jgroups.stack.Configurator
-
public class Configurator extends java.lang.Object
The task if this class is to setup and configure the protocol stack. A string describing the desired setup, which is both the layering and the configuration of each layer, is given to the configurator which creates and configures the protocol stack and returns a reference to the top layer (Protocol).Future functionality will include the capability to dynamically modify the layering of the protocol stack and the properties of each layer.
- Author:
- Bela Ban, Richard Achmatowicz
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Configurator.InetAddressInfo
-
Field Summary
Fields Modifier and Type Field Description protected static Log
log
protected ProtocolStack
stack
-
Constructor Summary
Constructors Constructor Description Configurator()
Configurator(ProtocolStack protocolStack)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Protocol
connectProtocols(java.util.List<Protocol> protocol_list)
Creates a protocol stack by iterating through the protocol list and connecting adjacent layers.static java.util.Map<java.lang.String,java.util.Map<java.lang.String,Configurator.InetAddressInfo>>
createInetAddressMap(java.util.List<ProtocolConfiguration> protocol_configs, java.util.List<Protocol> protocols)
protected static Protocol
createLayer(ProtocolStack stack, ProtocolConfiguration config)
static Protocol
createProtocol(java.lang.String prot_spec, ProtocolStack stack)
static Protocol
createProtocol(java.lang.String prot_spec, ProtocolStack stack, boolean init_attrs)
Creates a new protocol given the protocol specification.static java.util.List<Protocol>
createProtocols(java.util.List<ProtocolConfiguration> protocol_configs, ProtocolStack stack)
Takes a list of configurations, creates a protocol for each and returns all protocols in a list.static java.util.List<Protocol>
createProtocolsAndInitializeAttrs(java.util.List<ProtocolConfiguration> cfgs, ProtocolStack st)
static void
ensureValidBindAddresses(java.util.List<Protocol> protocols)
Makes sure that all fields annotated with @LocalAddress is (1) an InetAddress and (2) a valid address on any local network interfacestatic java.util.Collection<java.net.InetAddress>
getAddresses(java.util.Map<java.lang.String,java.util.Map<java.lang.String,Configurator.InetAddressInfo>> map)
Returns all inet addresses foundstatic java.util.List<java.net.InetAddress>
getInetAddresses(java.util.List<Protocol> protocols)
static <T> T
getValueFromProtocol(Protocol protocol, java.lang.reflect.Field field)
static <T> T
getValueFromProtocol(Protocol protocol, java.lang.String field_name)
static void
initializeAttrs(Protocol prot, ProtocolConfiguration config, StackType ip_version)
Sets the attributes in a given protocol from propertiesstatic boolean
isSetPropertyMethod(java.lang.reflect.Method method)
static boolean
isSetPropertyMethod(java.lang.reflect.Method method, java.lang.Class<?> enclosing_clazz)
protected static java.lang.String
printEvents(java.util.List<java.lang.Integer> events)
protected static void
removeProvidedDownServices(Protocol protocol, java.util.List<java.lang.Integer> events)
Removes all events provided by the protocol above protocol from eventsprotected static void
removeProvidedUpServices(Protocol protocol, java.util.List<java.lang.Integer> events)
Removes all events provided by the protocol below protocol from eventsstatic void
resolveAndAssignField(java.lang.Object obj, java.lang.reflect.Field field, java.util.Map<java.lang.String,java.lang.String> props, StackType ip_version)
static void
resolveAndAssignFields(java.lang.Object obj, java.util.Map<java.lang.String,java.lang.String> props, StackType ip_version)
static void
resolveAndInvokePropertyMethod(java.lang.Object obj, java.lang.reflect.Method method, java.util.Map<java.lang.String,java.lang.String> props, StackType ip_version)
static void
resolveAndInvokePropertyMethods(java.lang.Object obj, java.util.Map<java.lang.String,java.lang.String> props, StackType ip_version)
static void
sanityCheck(java.util.List<Protocol> protocols)
Throws an exception if sanity check fails.static void
setDefaultValues(java.util.List<ProtocolConfiguration> protocol_configs, java.util.List<Protocol> protocols, StackType ip_version)
Method which processes @Property.defaultValue() values, associated with the annotation using the defaultValue() annotation.static void
setDefaultValues(java.util.List<Protocol> protocols, StackType ip_version)
Protocol
setupProtocolStack(java.util.List<ProtocolConfiguration> config)
static Protocol
setupProtocolStack(java.util.List<ProtocolConfiguration> protocol_configs, ProtocolStack st)
Sets up the protocol stack.Protocol
setupProtocolStack(ProtocolStack copySource)
-
-
-
Field Detail
-
log
protected static final Log log
-
stack
protected final ProtocolStack stack
-
-
Constructor Detail
-
Configurator
public Configurator()
-
Configurator
public Configurator(ProtocolStack protocolStack)
-
-
Method Detail
-
setupProtocolStack
public Protocol setupProtocolStack(java.util.List<ProtocolConfiguration> config) throws java.lang.Exception
- Throws:
java.lang.Exception
-
setupProtocolStack
public Protocol setupProtocolStack(ProtocolStack copySource) throws java.lang.Exception
- Throws:
java.lang.Exception
-
setupProtocolStack
public static Protocol setupProtocolStack(java.util.List<ProtocolConfiguration> protocol_configs, ProtocolStack st) throws java.lang.Exception
Sets up the protocol stack. EachProtocolConfiguration
has the protocol name and a map of attribute names and values (strings). Reflection is used to find the right fields (or setters) based on attribute names, and set them (by converting the attribute value to the proper object).- Throws:
java.lang.Exception
-
createProtocol
public static Protocol createProtocol(java.lang.String prot_spec, ProtocolStack stack) throws java.lang.Exception
- Throws:
java.lang.Exception
-
createProtocol
public static Protocol createProtocol(java.lang.String prot_spec, ProtocolStack stack, boolean init_attrs) throws java.lang.Exception
Creates a new protocol given the protocol specification. Initializes the properties and starts the up and down handler threads.- Parameters:
prot_spec
- The specification of the protocol. Same convention as for specifying a protocol stack. An exception will be thrown if the class cannot be created. Example:"VERIFY_SUSPECT(timeout=1500)"
Note that no colons (:) have to be specifiedstack
- The protocol stack- Returns:
- Protocol The newly created protocol
- Throws:
java.lang.Exception
- Will be thrown when the new protocol cannot be created
-
createProtocolsAndInitializeAttrs
public static java.util.List<Protocol> createProtocolsAndInitializeAttrs(java.util.List<ProtocolConfiguration> cfgs, ProtocolStack st) throws java.lang.Exception
- Throws:
java.lang.Exception
-
connectProtocols
public static Protocol connectProtocols(java.util.List<Protocol> protocol_list) throws java.lang.Exception
Creates a protocol stack by iterating through the protocol list and connecting adjacent layers. The list starts with the topmost layer and has the bottommost layer at the tail.- Parameters:
protocol_list
- List of Protocol elements (from top to bottom)- Returns:
- Protocol stack
- Throws:
java.lang.Exception
-
createProtocols
public static java.util.List<Protocol> createProtocols(java.util.List<ProtocolConfiguration> protocol_configs, ProtocolStack stack) throws java.lang.Exception
Takes a list of configurations, creates a protocol for each and returns all protocols in a list.- Parameters:
protocol_configs
- A list of ProtocolConfigurationsstack
- The protocol stack- Returns:
- List of Protocols
- Throws:
java.lang.Exception
-
createLayer
protected static Protocol createLayer(ProtocolStack stack, ProtocolConfiguration config) throws java.lang.Exception
- Throws:
java.lang.Exception
-
initializeAttrs
public static void initializeAttrs(Protocol prot, ProtocolConfiguration config, StackType ip_version) throws java.lang.Exception
Sets the attributes in a given protocol from properties- Throws:
java.lang.Exception
-
sanityCheck
public static void sanityCheck(java.util.List<Protocol> protocols) throws java.lang.Exception
Throws an exception if sanity check fails. Possible sanity check is uniqueness of all protocol names- Throws:
java.lang.Exception
-
printEvents
protected static java.lang.String printEvents(java.util.List<java.lang.Integer> events)
-
removeProvidedUpServices
protected static void removeProvidedUpServices(Protocol protocol, java.util.List<java.lang.Integer> events)
Removes all events provided by the protocol below protocol from events- Parameters:
protocol
-events
-
-
removeProvidedDownServices
protected static void removeProvidedDownServices(Protocol protocol, java.util.List<java.lang.Integer> events)
Removes all events provided by the protocol above protocol from events- Parameters:
protocol
-events
-
-
getAddresses
public static java.util.Collection<java.net.InetAddress> getAddresses(java.util.Map<java.lang.String,java.util.Map<java.lang.String,Configurator.InetAddressInfo>> map) throws java.lang.Exception
Returns all inet addresses found- Throws:
java.lang.Exception
-
createInetAddressMap
public static java.util.Map<java.lang.String,java.util.Map<java.lang.String,Configurator.InetAddressInfo>> createInetAddressMap(java.util.List<ProtocolConfiguration> protocol_configs, java.util.List<Protocol> protocols) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getInetAddresses
public static java.util.List<java.net.InetAddress> getInetAddresses(java.util.List<Protocol> protocols) throws java.lang.Exception
- Throws:
java.lang.Exception
-
setDefaultValues
public static void setDefaultValues(java.util.List<ProtocolConfiguration> protocol_configs, java.util.List<Protocol> protocols, StackType ip_version) throws java.lang.Exception
Method which processes @Property.defaultValue() values, associated with the annotation using the defaultValue() annotation. This method does the following: - find all properties which have no user value assigned - if the defaultValue attribute is not "", generate a value for the field using the property converter for that property and assign it to the field- Throws:
java.lang.Exception
-
setDefaultValues
public static void setDefaultValues(java.util.List<Protocol> protocols, StackType ip_version) throws java.lang.Exception
- Throws:
java.lang.Exception
-
ensureValidBindAddresses
public static void ensureValidBindAddresses(java.util.List<Protocol> protocols) throws java.lang.Exception
Makes sure that all fields annotated with @LocalAddress is (1) an InetAddress and (2) a valid address on any local network interface- Throws:
java.lang.Exception
-
getValueFromProtocol
public static <T> T getValueFromProtocol(Protocol protocol, java.lang.reflect.Field field) throws java.lang.IllegalAccessException
- Throws:
java.lang.IllegalAccessException
-
getValueFromProtocol
public static <T> T getValueFromProtocol(Protocol protocol, java.lang.String field_name) throws java.lang.IllegalAccessException
- Throws:
java.lang.IllegalAccessException
-
resolveAndInvokePropertyMethods
public static void resolveAndInvokePropertyMethods(java.lang.Object obj, java.util.Map<java.lang.String,java.lang.String> props, StackType ip_version) throws java.lang.Exception
- Throws:
java.lang.Exception
-
resolveAndInvokePropertyMethod
public static void resolveAndInvokePropertyMethod(java.lang.Object obj, java.lang.reflect.Method method, java.util.Map<java.lang.String,java.lang.String> props, StackType ip_version) throws java.lang.Exception
- Throws:
java.lang.Exception
-
resolveAndAssignFields
public static void resolveAndAssignFields(java.lang.Object obj, java.util.Map<java.lang.String,java.lang.String> props, StackType ip_version) throws java.lang.Exception
- Throws:
java.lang.Exception
-
resolveAndAssignField
public static void resolveAndAssignField(java.lang.Object obj, java.lang.reflect.Field field, java.util.Map<java.lang.String,java.lang.String> props, StackType ip_version) throws java.lang.Exception
- Throws:
java.lang.Exception
-
isSetPropertyMethod
public static boolean isSetPropertyMethod(java.lang.reflect.Method method)
-
isSetPropertyMethod
public static boolean isSetPropertyMethod(java.lang.reflect.Method method, java.lang.Class<?> enclosing_clazz)
-
-