Package tigase.server

Class BasicComponent

    • Field Detail

      • COMMAND_PROP_NODE

        public static final java.lang.String COMMAND_PROP_NODE
        See Also:
        Constant Field Values
      • SCRIPTS_DIR_PROP_DEF

        public static final java.lang.String SCRIPTS_DIR_PROP_DEF
        See Also:
        Constant Field Values
      • SCRIPTS_DIR_PROP_KEY

        public static final java.lang.String SCRIPTS_DIR_PROP_KEY
        See Also:
        Constant Field Values
      • scriptCommands

        protected java.util.Map<java.lang.String,​CommandIfc> scriptCommands
      • trusted

        protected java.util.concurrent.ConcurrentSkipListSet<java.lang.String> trusted
      • scriptEngineManager

        protected javax.script.ScriptEngineManager scriptEngineManager
    • Constructor Detail

      • BasicComponent

        public BasicComponent()
    • Method Detail

      • addComponentDomain

        public void addComponentDomain​(java.lang.String domain)
      • beanConfigurationChanged

        public void beanConfigurationChanged​(java.util.Collection<java.lang.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,
                                      java.lang.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,
                                      java.lang.String domain,
                                      java.lang.String commandId)
      • checkCommandAcl

        public boolean checkCommandAcl​(JID jid,
                                       java.util.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,
                                       java.lang.String domain,
                                       java.util.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​(javax.script.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​(java.lang.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​(java.lang.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,
                                  java.util.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​(java.lang.String domain)
      • removeServiceDiscoveryItem

        public void removeServiceDiscoveryItem​(java.lang.String jid,
                                               java.lang.String node,
                                               java.lang.String description)
      • updateServiceDiscoveryItem

        public void updateServiceDiscoveryItem​(java.lang.String jid,
                                               java.lang.String node,
                                               java.lang.String description,
                                               boolean admin)
      • updateServiceDiscoveryItem

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

        public void updateServiceDiscoveryItem​(java.lang.String jid,
                                               java.lang.String node,
                                               java.lang.String description,
                                               java.lang.String category,
                                               java.lang.String type,
                                               boolean admin,
                                               java.lang.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)
      • getDefaults

        @Deprecated
        public java.util.Map<java.lang.String,​java.lang.Object> getDefaults​(java.util.Map<java.lang.String,​java.lang.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 java.lang.String getDiscoCategory()
        Method returns category of a component used for service discovery responses.
        Returns:
        category of a component
      • getDiscoCategoryType

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

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

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

        public java.util.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​(java.lang.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​(java.lang.String domain)
      • getDiscoItems

        public java.util.List<Element> getDiscoItems​(java.lang.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 java.lang.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​(java.lang.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
      • getScriptItems

        public java.util.List<Element> getScriptItems​(java.lang.String node,
                                                      JID jid,
                                                      JID from)
      • getVHostItem

        public VHostItem getVHostItem​(java.lang.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​(java.lang.String domain)
      • isLocalDomainOrComponent

        public boolean isLocalDomainOrComponent​(java.lang.String domain)
      • isSubdomain

        public boolean isSubdomain()
      • isTrusted

        public boolean isTrusted​(JID jid)
      • isTrusted

        public boolean isTrusted​(java.lang.String jid)
      • setAdmins

        public void setAdmins​(java.util.Set<BareJID> admins)
      • setProperties

        @Deprecated
        public void setProperties​(java.util.Map<java.lang.String,​java.lang.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​(java.util.concurrent.ConcurrentHashMap<java.lang.String,​java.util.concurrent.CopyOnWriteArraySet<CmdAcl>> commandsACL)
      • setScriptsBaseDir

        public void setScriptsBaseDir​(java.lang.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 java.util.List<JID> getNodesConnected()
      • getNodesConnectedWithLocal

        public java.util.List<JID> getNodesConnectedWithLocal()
      • processScriptCommand

        public boolean processScriptCommand​(Packet pc,
                                            java.util.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 java.util.Optional<Element> getServiceEntityCaps​(JID fromJid)
      • createScriptEngineManager

        protected javax.script.ScriptEngineManager createScriptEngineManager()
      • onNodeConnected

        protected void onNodeConnected​(JID jid)
      • onNodeDisconnected

        protected void onNodeDisconnected​(JID jid)
      • getScriptCommands

        protected java.util.Map<java.lang.String,​CommandIfc> getScriptCommands()
      • isNonAdminCommands

        protected boolean isNonAdminCommands()
      • reloadScripts

        protected void reloadScripts()