Package tigase.server

Class BasicComponent

java.lang.Object
tigase.server.BasicComponent
All Implemented Interfaces:
ClusteredComponentIfc, Configurable, XMPPService, ConfigurationChangedAware, Initializable, ServerComponent, VHostListener
Direct Known Subclasses:
AbstractComponentRegistrator, AbstractMessageReceiver

Created: Oct 17, 2009 7:49:05 PM
Author:
Artur Hefczyc
  • Field Details

  • Constructor Details

    • BasicComponent

      public BasicComponent()
  • Method Details

    • addComponentDomain

      public void addComponentDomain(String domain)
    • beanConfigurationChanged

      public void beanConfigurationChanged(Collection<String> changedFields)
      Description copied from interface: ConfigurationChangedAware
      Method called when configuration was applied to bean.
      Specified by:
      beanConfigurationChanged in interface ConfigurationChangedAware
      Parameters:
      changedFields - collection of field names which were changed
    • canCallCommand

      public boolean canCallCommand(JID jid, String commandId)
      Method checks if following adhoc command can execute from this JID
      Parameters:
      jid - - JID of entity which wants to execute command
      commandId - - ID of an adhoc command
      Returns:
      a value of boolean
    • canCallCommand

      public boolean canCallCommand(JID jid, String domain, String commandId)
    • checkCommandAcl

      public boolean checkCommandAcl(JID jid, Set<CmdAcl> acl)
      Check if entity with JID is allowed ot execute command with passed access control list.
      Parameters:
      jid - - entity JID
      acl - - access control list
      Returns:
      a value of boolean
    • checkCommandAcl

      public boolean checkCommandAcl(JID jid, String domain, Set<CmdAcl> acl)
      Check if entity with JID is allowed ot execute command with passed access control list.
      Parameters:
      jid - - entity JID
      domain - - domain for which check permission
      acl - - access control list
      Returns:
      a value of boolean
    • everyHour

      public void everyHour()
    • everyMinute

      public void everyMinute()
    • everySecond

      public void everySecond()
    • handlesLocalDomains

      public boolean handlesLocalDomains()
      Description copied from interface: VHostListener
      Indicates whether the component accepts packets to all local domains. The best example would be SM component which usually handles all requests sent to any local domain.
      Specified by:
      handlesLocalDomains in interface VHostListener
      Returns:
      'true' if the component accepts packets to local domains 'false' otherwise.
    • handlesNameSubdomains

      public boolean handlesNameSubdomains()
      Description copied from interface: VHostListener
      Indicates whether the component can handle packets to 'name' subdomain. Name subdomain is an artificial domain created from the component name and the domain name. The best example would be a 'MUC' component or a 'PubSub' component. They are usually named respectively 'muc' and 'pubsub' and they accept requests sent to domains 'muc.tigase.org' or 'pubsub.tigase.org', even though a local domain is just 'tigase.org'.
      Specified by:
      handlesNameSubdomains in interface VHostListener
      Returns:
      'true' if the component accepts packets to 'name' subdomains 'false' otherwise.
    • handlesNonLocalDomains

      public boolean handlesNonLocalDomains()
      Description copied from interface: VHostListener
      Indicates whether the component can handle all packets to non-local domains. S2s connection manager component is the best example of the component which handles all requests sent to non-local domains.
      Specified by:
      handlesNonLocalDomains in interface VHostListener
      Returns:
      'true' if the component accepts packets to non-local domains 'false' otherwise.
    • initBindings

      public void initBindings(Bindings binds)
      Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
      Parameters:
      binds - A mapping of key/value pairs, all of whose keys are Strings.
    • initializationCompleted

      public void initializationCompleted()
      Description copied from interface: ServerComponent
      Method is called by MessageRouter when all the startup components of the server have been loaded and configured through setProperties(...) call. At this point the whole server should be loaded and functional, except initializations taking place in this routine.
      Specified by:
      initializationCompleted in interface ServerComponent
    • nodeConnected

      public void nodeConnected(String node)
      Description copied from interface: ClusteredComponentIfc
      Method is called on cluster node connection event. This is a notification to the component that a new cluster node has connected.
      Specified by:
      nodeConnected in interface ClusteredComponentIfc
      Parameters:
      node - is a hostname of a cluster node generating the event.
    • nodeDisconnected

      public void nodeDisconnected(String node)
      Description copied from interface: ClusteredComponentIfc
      Method is called on cluster node disconnection event. This is a notification to the component that there was network connection lost to one of the cluster nodes.
      Specified by:
      nodeDisconnected in interface ClusteredComponentIfc
      Parameters:
      node - is a hostname of a cluster node generating the event.
    • processPacket

      public void processPacket(Packet packet, Queue<Packet> results)
      Description copied from interface: ServerComponent
      processPacket is a blocking processing method implemented by all components. This method processes packet and returns results instantly without waiting for any resources.
      Specified by:
      processPacket in interface ServerComponent
      Parameters:
      packet - a Packet value
    • release

      public void release()
      Description copied from interface: ServerComponent
      Method called when component is being stopped and unloaded.
      Specified by:
      release in interface ServerComponent
    • removeComponentDomain

      public void removeComponentDomain(String domain)
    • removeServiceDiscoveryItem

      public void removeServiceDiscoveryItem(String jid, String node, String description)
    • setClusterController

      public void setClusterController(ClusterControllerIfc cl_controller)
      Description copied from interface: ClusteredComponentIfc
      Set's the configures the cluster controller object for cluster communication and API.
      Specified by:
      setClusterController in interface ClusteredComponentIfc
      Parameters:
      cl_controller - cluster controller object used for cluster communication
    • updateServiceDiscoveryItem

      public void updateServiceDiscoveryItem(String jid, String node, String description, boolean admin)
    • updateServiceDiscoveryItem

      public void updateServiceDiscoveryItem(String jid, String node, String description, boolean admin, String... features)
    • updateServiceDiscoveryItem

      public void updateServiceDiscoveryItem(String jid, String node, String description, String category, String type, boolean admin, String... features)
    • updateServiceEntity

      public void updateServiceEntity()
    • getComponentId

      public JID getComponentId()
      Description copied from interface: ServerComponent
      Method returns component jid in form of the component name followed by server hostname as a domain.
      Specified by:
      getComponentId in interface ServerComponent
      Returns:
      jid
    • setCompId

      public void setCompId(JID jid)
    • getComponentInfo

      public ComponentInfo getComponentInfo()
      Description copied from interface: ServerComponent
      Allows to obtain various informations about components
      Specified by:
      getComponentInfo in interface ServerComponent
      Returns:
      information about particular component
    • getDefaults

      @Deprecated public Map<String,Object> getDefaults(Map<String,Object> params)
      Deprecated.
      Description copied from interface: Configurable
      Returns default configuration settings for the component as a Map with keys as configuration property IDs and values as the configuration property values. All the default parameters returned from this method are later passed to the setProperties(...) method. Some of them may have changed value if they have been overwritten in the server configuration. The configuration property value can be of any of the basic types: int, long, boolean, String.
      Specified by:
      getDefaults in interface Configurable
      Parameters:
      params - is a Map with some initial properties set for the starting up server. These parameters can be used as a hints to generate component's default configuration.
      Returns:
      a Map with the component default configuration.
    • getDefHostName

      public BareJID getDefHostName()
    • getDefVHostItem

      public BareJID getDefVHostItem()
    • getDiscoCategory

      public String getDiscoCategory()
      Method returns category of a component used for service discovery responses.
      Returns:
      category of a component
    • getDiscoCategoryType

      public String getDiscoCategoryType()
      Method returns component category type used for service discovery responses.
      Returns:
      category type of a component
    • getDiscoDescription

      public String getDiscoDescription()
      Method returns description used for service discovery responses.
      Returns:
      description of a component
    • getDiscoFeatures

      public List<Element> getDiscoFeatures()
      Method returns list of features provided by this component.
      Returns:
      list of features
    • getDiscoFeatures

      public List<Element> getDiscoFeatures(JID from)
      Method returns list of features provided by this component for provided JID.
      Specified by:
      getDiscoFeatures in interface XMPPService
      Parameters:
      from - a request sender address. Some service disco elements are meant to be available only to system administrarors. The component is responsible to check whether the sender is the component administrator and return results appropriate.
      Returns:
      list of features
    • getDiscoInfo

      public Element getDiscoInfo(String node, JID jid, JID from)
      Description copied from interface: XMPPService
      Returns service discovery info for the component. If the jid is null then this is info for the top level request. SM may return disco info on the top level. Other components should not.
      Specified by:
      getDiscoInfo in interface XMPPService
      Parameters:
      node - is service discovery node for which the request is made. Is normally null for the component top level request.
      jid - is the jid to which the request has been made.
      from - is the request sender address. Some service discovery information is only meant for administrators.
      Returns:
      returns an XML Element with service discovery data.
    • getDiscoExtensionsForm

      public Element getDiscoExtensionsForm(String domain)
    • getDiscoItems

      public List<Element> getDiscoItems(String node, JID jid, JID from)
      Description copied from interface: XMPPService
      Returns service discovery items for the component. If the JID is null then this is request for the top level request. SM may return disco items on the top level, other components should just return it's top level service discovery item for null node.
      Specified by:
      getDiscoItems in interface XMPPService
      Parameters:
      node - is a service discovery node for which the request has been made.
      jid - is the jid to which the request has been made.
      from - is the request sender address. Some service discovery information is only meant for administrators.
      Returns:
      a list of service discovery items for this component or the component itself disco item for the top level request.
    • getName

      public String getName()
      Description copied from interface: ServerComponent
      Method returns name of the component.
      Specified by:
      getName in interface ServerComponent
      Returns:
      name of the component
    • setName

      public void setName(String name)
      Description copied from interface: ServerComponent
      Method used to assign component name (localpart of the component)
      Specified by:
      setName in interface ServerComponent
      Parameters:
      name - to be assigned
    • getStatistics

      public void getStatistics(StatisticsList list)
    • getScriptItems

      public List<Element> getScriptItems(String node, JID jid, JID from)
    • getVHostItem

      public VHostItem getVHostItem(String domain)
    • isAdmin

      public boolean isAdmin(JID jid)
    • isInitializationComplete

      public boolean isInitializationComplete()
      Description copied from interface: ServerComponent
      Method returns information about whether the initialization process (initializationCompleted()) method has been called.
      Specified by:
      isInitializationComplete in interface ServerComponent
      Returns:
      true if initialization of the object has been completed false otherwise
    • isLocalDomain

      public boolean isLocalDomain(String domain)
    • isLocalDomainOrComponent

      public boolean isLocalDomainOrComponent(String domain)
    • isSubdomain

      public boolean isSubdomain()
    • isTrusted

      public boolean isTrusted(JID jid)
    • isTrusted

      public boolean isTrusted(String jid)
    • setAdmins

      public void setAdmins(Set<BareJID> admins)
    • setProperties

      @Deprecated public void setProperties(Map<String,Object> props) throws ConfigurationException
      Deprecated.
      Description copied from interface: Configurable
      Sets all configuration properties for the object.
      Specified by:
      setProperties in interface Configurable
      Parameters:
      props - Map with the configuration
      Throws:
      ConfigurationException - - if setting configuration will fail which will make it unable to work
    • setCommandsACL

      public void setCommandsACL(ConcurrentHashMap<String,CopyOnWriteArraySet<CmdAcl>> commandsACL)
    • setScriptsBaseDir

      public void setScriptsBaseDir(String scriptsBaseDir)
    • setVHostManager

      public void setVHostManager(VHostManagerIfc manager)
      Description copied from interface: VHostListener
      Sets the VHostManager which works on this server installation. The VHostManager allows for accessing vritual domain data.
      Specified by:
      setVHostManager in interface VHostListener
      Parameters:
      manager - is a reference to VHostManager available on the server installation.
    • getNodesConnected

      public List<JID> getNodesConnected()
    • getNodesConnectedWithLocal

      public List<JID> getNodesConnectedWithLocal()
    • processScriptCommand

      public boolean processScriptCommand(Packet pc, Queue<Packet> results)
    • 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
    • getServiceEntityCaps

      public Optional<Element> getServiceEntityCaps(JID fromJid)
    • createScriptEngineManager

      protected ScriptEngineManager createScriptEngineManager()
    • onNodeConnected

      protected void onNodeConnected(JID jid)
    • onNodeDisconnected

      protected void onNodeDisconnected(JID jid)
    • getScriptCommands

      protected Map<String,CommandIfc> getScriptCommands()
    • getServiceEntity

      protected ServiceEntity getServiceEntity()
    • isNonAdminCommands

      protected boolean isNonAdminCommands()
    • reloadScripts

      protected void reloadScripts()