Package tigase.server.xmppclient

## Class SeeOtherHostDualIP

- java.lang.Object
- - tigase.server.xmppclient.SeeOtherHost
  - - tigase.server.xmppclient.SeeOtherHostHashed
    - - tigase.server.xmppclient.SeeOtherHostDualIP

- All Implemented Interfaces:
    `Initializable`, `RegistrarBean`, `UnregisterAware`, `Lifecycle`, `SeeOtherHostIfc`

      @Bean(name="seeOtherHost",
            parent=ClientConnectionManager.class,
            active=true)
      @ClusterModeRequired(active=true)
      public class SeeOtherHostDualIP
      extends SeeOtherHostHashed
      implements Initializable, RegistrarBean, UnregisterAware

  Extended implementation of SeeOtherHost using redirect information from database based on cluster_nodes table.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static interface` | `SeeOtherHostDualIP.DualIPRepository<T extends DataSource>` |
    `static class` | `SeeOtherHostDualIP.DualIPRepositoryWrapper` |

    - ### Nested classes/interfaces inherited from class tigase.server.xmppclient.SeeOtherHost

      `SeeOtherHost.SeeOtherHostVHostItemExtension, SeeOtherHost.SeeOtherHostVHostItemExtensionProvider`

    - ### Nested classes/interfaces inherited from interface tigase.server.xmppclient.SeeOtherHostIfc

      `SeeOtherHostIfc.Phase`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `SEE_OTHER_HOST_DATA_SOURCE_KEY` |
    `static java.lang.String` | `SEE_OTHER_HOST_DATA_SOURCE_VALUE` |
    `static java.lang.String` | `SEE_OTHER_HOST_DB_URL_KEY` |
    `static java.lang.String` | `SEE_OTHER_HOST_FALLBACK_REDIRECTION_KEY` |

    - ### Fields inherited from class tigase.server.xmppclient.SeeOtherHostHashed

      `connectedNodes`

    - ### Fields inherited from class tigase.server.xmppclient.SeeOtherHost

      `defaultHost, REDIRECTION_ENABLED, vHostManager`

    - ### Fields inherited from interface tigase.server.xmppclient.SeeOtherHostIfc

      `CM_SEE_OTHER_HOST_ACTIVE, CM_SEE_OTHER_HOST_CLASS_PROP_DEF_VAL, CM_SEE_OTHER_HOST_CLASS_PROP_DEF_VAL_CLUSTER, CM_SEE_OTHER_HOST_CLASS_PROP_KEY, CM_SEE_OTHER_HOST_CLASS_PROPERTY, CM_SEE_OTHER_HOST_DEFAULT_HOST, CM_SEE_OTHER_HOST_DEFAULT_PORT`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SeeOtherHostDualIP()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `beforeUnregister()` | Method called before bean unregister.
    `void` | `clusterRepoItemEvent​(ClusterRepoItemEvent event)` |
    `BareJID` | `findHostForJID​(BareJID jid, BareJID host)` | Finds an appropriate host for a given JID
    `void` | `initialize()` | Method will be called, when bean will be created, configured and ready to use.
    `boolean` | `isRedirectionRequired​(BareJID defaultHost, BareJID redirectionHost)` | Method validates whether a redirection for a particular hostname and resulting redirection hastname is required
    `void` | `register​(Kernel kernel)` | Method called when bean is being registered allowing developer to programatically register other beans.
    `protected void` | `reloadRedirection()` |
    `void` | `setNodes​(java.util.List<JID> connectedNodes)` | Sets list of available nodes in cluster environment
    `void` | `unregister​(Kernel kernel)` | Method called while bean is being unregistered.

    - ### Methods inherited from class tigase.server.xmppclient.SeeOtherHostHashed

      `nodeShutdown`

    - ### Methods inherited from class tigase.server.xmppclient.SeeOtherHost

      `isEnabled, isNodeShutdown, setDefaultHost, start, stop`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface tigase.server.xmppclient.SeeOtherHostIfc

      `getStreamError`

- - ### Field Detail

    - #### SEE_OTHER_HOST_FALLBACK_REDIRECTION_KEY

          public static final java.lang.String SEE_OTHER_HOST_FALLBACK_REDIRECTION_KEY

      See Also:
        Constant Field Values

    - #### SEE_OTHER_HOST_DATA_SOURCE_KEY

          public static final java.lang.String SEE_OTHER_HOST_DATA_SOURCE_KEY

      See Also:
        Constant Field Values

    - #### SEE_OTHER_HOST_DATA_SOURCE_VALUE

          public static final java.lang.String SEE_OTHER_HOST_DATA_SOURCE_VALUE

    - #### SEE_OTHER_HOST_DB_URL_KEY

          public static final java.lang.String SEE_OTHER_HOST_DB_URL_KEY

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### SeeOtherHostDualIP

          public SeeOtherHostDualIP()

  - ### Method Detail

    - #### findHostForJID

          public BareJID findHostForJID​(BareJID jid,
                                        BareJID host)

      Description copied from interface: `SeeOtherHostIfc`
      Finds an appropriate host for a given JID
      Specified by:
        `findHostForJID` in interface `SeeOtherHostIfc`
      Overrides:
        `findHostForJID` in class `SeeOtherHostHashed`
      Parameters:
        `jid` - is a user JID extracted from the stream open attributes
        `host` - is "this" host to which the user is now connected and which calls the method
      Returns:
        BareJID of possible host to which the user should connect or NULL

    - #### clusterRepoItemEvent

          @HandleEvent
          public void clusterRepoItemEvent​(ClusterRepoItemEvent event)

    - #### setNodes

          public void setNodes​(java.util.List<JID> connectedNodes)

      Description copied from interface: `SeeOtherHostIfc`
      Sets list of available nodes in cluster environment
      Specified by:
        `setNodes` in interface `SeeOtherHostIfc`
      Overrides:
        `setNodes` in class `SeeOtherHostHashed`
      Parameters:
        `connectedNodes` - current list of nodes

    - #### isRedirectionRequired

          public boolean isRedirectionRequired​(BareJID defaultHost,
                                               BareJID redirectionHost)

      Description copied from interface: `SeeOtherHostIfc`
      Method validates whether a redirection for a particular hostname and resulting redirection hastname is required
      Specified by:
        `isRedirectionRequired` in interface `SeeOtherHostIfc`
      Parameters:
        `defaultHost` - default hostname of the particular machine
        `redirectionHost` - destination hostname
      Returns:
        `true` if the redirection is required, otherwise `false`

    - #### register

          public void register​(Kernel kernel)

      Description copied from interface: `RegistrarBean`
      Method called when bean is being registered allowing developer to programatically register other beans.
      Specified by:
        `register` in interface `RegistrarBean`
      Parameters:
        `kernel` - - instance from local scope

    - #### unregister

          public void unregister​(Kernel kernel)

      Description copied from interface: `RegistrarBean`
      Method called while bean is being unregistered.
      Specified by:
        `unregister` in interface `RegistrarBean`
      Parameters:
        `kernel` - - instance from local scope

    - #### initialize

          public void initialize()

      Description copied from interface: `Initializable`
      Method will be called, when bean will be created, configured and ready to use.
      Specified by:
        `initialize` in interface `Initializable`
      Overrides:
        `initialize` in class `SeeOtherHost`

    - #### beforeUnregister

          public void beforeUnregister()

      Description copied from interface: `UnregisterAware`
      Method called before bean unregister.
      Specified by:
        `beforeUnregister` in interface `UnregisterAware`

    - #### reloadRedirection

          protected void reloadRedirection()