org.objectweb.fractal.julia.control.binding
Class OptimizedContainerBindingMixin

java.lang.Object
  extended by org.objectweb.fractal.julia.control.binding.OptimizedContainerBindingMixin
All Implemented Interfaces:
BindingController

public abstract class OptimizedContainerBindingMixin
extends Object
implements BindingController

Provides an optimized container based implementation of the BindingController interface. This mixin is designed to override a basic container binding mixin: indeed it implements the BindingController methods by using a hash map, and calls the overriden method to optimized bindings in the encapsulated component (the bindings are optimized by binding the encapsulated component to "((ComponentInterface)serverItf).getFcItfImpl()", instead of "serverItf").

Requirements


Field Summary
 Map fcBindings
          The map used to store the bindings of this component.
 
Method Summary
abstract  void _super_bindFc(String clientItfName, Object serverItf)
          The bindFc method overriden by this mixin.
abstract  String[] _super_listFc()
          The listFc method overriden by this mixin.
abstract  Object _super_lookupFc(String clientItfName)
          The lookupFc method overriden by this mixin.
abstract  void _super_unbindFc(String clientItfName)
          The unbindFc method overriden by this mixin.
 void bindFc(String clientItfName, Object serverItf)
          Binds the client interface whose name is given to a server interface.
 String[] listFc()
          Returns the names of the client interfaces of the component to which this interface belongs.
 Object lookupFc(String clientItfName)
          Returns the interface to which the given client interface is bound.
 void unbindFc(String clientItfName)
          Unbinds the given client interface.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fcBindings

public Map fcBindings
The map used to store the bindings of this component. This map associate server interface references to client interface names. A client interface name is associated with 'fcBindings' means that this interface is unbound.

Method Detail

listFc

public String[] listFc()
Returns the names of the client interfaces of the component to which this interface belongs. This method returns the fcBindings keys.

Specified by:
listFc in interface BindingController
Returns:
the names of the client interfaces of the component to which this interface belongs.

lookupFc

public Object lookupFc(String clientItfName)
                throws NoSuchInterfaceException
Returns the interface to which the given client interface is bound. More precisely, returns the server interface to which the client interface whose name is given is bound. This server interface is necessarily in the same address space as the client interface (see bindFc). This method uses the fcBindings map to return its result.

Specified by:
lookupFc in interface BindingController
Parameters:
clientItfName - the name of a client interface of the component to which this interface belongs.
Returns:
the server interface to which the given interface is bound, or null if it is not bound.
Throws:
NoSuchInterfaceException - if the component to which this interface belongs does not have a client interface whose name is equal to the given name.

bindFc

public void bindFc(String clientItfName,
                   Object serverItf)
            throws NoSuchInterfaceException,
                   IllegalBindingException,
                   IllegalLifeCycleException
Binds the client interface whose name is given to a server interface. More precisely, binds the client interface of the component to which this interface belongs, and whose name is equal to the given name, to the given server interface. The given server interface must be in the same address space as the client interface. This method updates the fcBindings map, and also called the overriden method, with serverItf.getFcItfImpl as second parameter, in order to save an indirection.

Specified by:
bindFc in interface BindingController
Parameters:
clientItfName - the name of a client interface of the component to which this interface belongs.
serverItf - a server interface.
Throws:
NoSuchInterfaceException - if there is no such client interface.
IllegalBindingException - if the binding cannot be created.
IllegalLifeCycleException - if this component has a LifeCycleController interface, but it is not in an appropriate state to perform this operation.

unbindFc

public void unbindFc(String clientItfName)
              throws NoSuchInterfaceException,
                     IllegalBindingException,
                     IllegalLifeCycleException
Unbinds the given client interface. More precisely, unbinds the client interface of the component to which this interface belongs, and whose name is equal to the given name. This method updates the fcBindings map, and also calls the overriden method.

Specified by:
unbindFc in interface BindingController
Parameters:
clientItfName - the name of a client interface of the component to which this interface belongs.
Throws:
NoSuchInterfaceException - if there is no such client interface.
IllegalBindingException - if the binding cannot be removed.
IllegalLifeCycleException - if this component has a LifeCycleController interface, but it is not in an appropriate state to perform this operation.

_super_listFc

public abstract String[] _super_listFc()
The listFc method overriden by this mixin.

Returns:
the names of the client interfaces of the component to which this interface belongs.

_super_lookupFc

public abstract Object _super_lookupFc(String clientItfName)
                                throws NoSuchInterfaceException
The lookupFc method overriden by this mixin.

Parameters:
clientItfName - the name of a client interface of the component to which this interface belongs.
Returns:
the server interface to which the given interface is bound, or null if it is not bound.
Throws:
NoSuchInterfaceException - if the component to which this interface belongs does not have a client interface whose name is equal to the given name.

_super_bindFc

public abstract void _super_bindFc(String clientItfName,
                                   Object serverItf)
                            throws NoSuchInterfaceException,
                                   IllegalBindingException,
                                   IllegalLifeCycleException
The bindFc method overriden by this mixin.

Parameters:
clientItfName - the name of a client interface of the component to which this interface belongs.
serverItf - a server interface.
Throws:
NoSuchInterfaceException - if there is no such client interface.
IllegalBindingException - if the binding cannot be created.
IllegalLifeCycleException - if this component has a LifeCycleController interface, but it is not in an appropriate state to perform this operation.

_super_unbindFc

public abstract void _super_unbindFc(String clientItfName)
                              throws NoSuchInterfaceException,
                                     IllegalBindingException,
                                     IllegalLifeCycleException
The unbindFc method overriden by this mixin.

Parameters:
clientItfName - the name of a client interface of the component to which this interface belongs.
Throws:
NoSuchInterfaceException - if there is no such client interface.
IllegalBindingException - if the binding cannot be removed.
IllegalLifeCycleException - if this component has a LifeCycleController interface, but it is not in an appropriate state to perform this operation.