⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pubsubmodule.java

📁 openfire 服务器源码下载
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    public Iterator<String> getFeatures(String name, String node, JID senderJID) {        ArrayList<String> features = new ArrayList<String>();        if (name == null && node == null) {            // Answer the features of the PubSub service            features.add("http://jabber.org/protocol/pubsub");            if (isCollectionNodesSupported()) {                // Collection nodes are supported                features.add("http://jabber.org/protocol/pubsub#collections");            }            // Configuration of node options is supported            features.add("http://jabber.org/protocol/pubsub#config-node");            // Simultaneous creation and configuration of nodes is supported            features.add("http://jabber.org/protocol/pubsub#create-and-configure");            // Creation of nodes is supported            features.add("http://jabber.org/protocol/pubsub#create-nodes");            // Deletion of nodes is supported            features.add("http://jabber.org/protocol/pubsub#delete-nodes");            // Retrieval of pending subscription approvals is supported            features.add("http://jabber.org/protocol/pubsub#get-pending");            if (isInstantNodeSupported()) {                // Creation of instant nodes is supported                features.add("http://jabber.org/protocol/pubsub#instant-nodes");            }            // Publishers may specify item identifiers            features.add("http://jabber.org/protocol/pubsub#item-ids");            // TODO Time-based subscriptions are supported (clean up thread missing, rest is supported)            //features.add("http://jabber.org/protocol/pubsub#leased-subscription");            // Node meta-data is supported            features.add("http://jabber.org/protocol/pubsub#meta-data");            // Node owners may modify affiliations            features.add("http://jabber.org/protocol/pubsub#modify-affiliations");            // Node owners may manage subscriptions.            features.add("http://jabber.org/protocol/pubsub#manage-subscriptions");            // A single entity may subscribe to a node multiple times            features.add("http://jabber.org/protocol/pubsub#multi-subscribe");            // The outcast affiliation is supported            features.add("http://jabber.org/protocol/pubsub#outcast-affiliation");            // Persistent items are supported            features.add("http://jabber.org/protocol/pubsub#persistent-items");            // Presence-based delivery of event notifications is supported            features.add("http://jabber.org/protocol/pubsub#presence-notifications");            // Publishing items is supported (note: not valid for collection nodes)            features.add("http://jabber.org/protocol/pubsub#publish");            // The publisher affiliation is supported            features.add("http://jabber.org/protocol/pubsub#publisher-affiliation");            // Purging of nodes is supported            features.add("http://jabber.org/protocol/pubsub#purge-nodes");            // Item retraction is supported            features.add("http://jabber.org/protocol/pubsub#retract-items");            // Retrieval of current affiliations is supported            features.add("http://jabber.org/protocol/pubsub#retrieve-affiliations");            // Retrieval of default node configuration is supported.            features.add("http://jabber.org/protocol/pubsub#retrieve-default");            // Item retrieval is supported            features.add("http://jabber.org/protocol/pubsub#retrieve-items");            // Retrieval of current subscriptions is supported.            features.add("http://jabber.org/protocol/pubsub#retrieve-subscriptions");            // Subscribing and unsubscribing are supported            features.add("http://jabber.org/protocol/pubsub#subscribe");            // Configuration of subscription options is supported            features.add("http://jabber.org/protocol/pubsub#subscription-options");            // Default access model for nodes created on the service            String modelName = getDefaultNodeConfiguration(true).getAccessModel().getName();            features.add("http://jabber.org/protocol/pubsub#default_access_model_" + modelName);        }        else if (name == null) {            // Answer the features of a given node            Node pubNode = getNode(node);            if (canDiscoverNode(pubNode)) {                // Answer the features of the PubSub service                features.add("http://jabber.org/protocol/pubsub");            }        }        return features.iterator();    }    public XDataFormImpl getExtendedInfo(String name, String node, JID senderJID) {        if (name == null && node != null) {            // Answer the extended info of a given node            Node pubNode = getNode(node);            if (canDiscoverNode(pubNode)) {                // Get the metadata data form                org.xmpp.forms.DataForm metadataForm = pubNode.getMetadataForm();                // Convert Whack data form into old data form format (will go away someday)                XDataFormImpl dataForm = new XDataFormImpl(DataForm.TYPE_RESULT);                for (org.xmpp.forms.FormField formField : metadataForm.getFields()) {                    XFormFieldImpl field = new XFormFieldImpl(formField.getVariable());                    field.setLabel(formField.getLabel());                    for (String value : formField.getValues()) {                        field.addValue(value);                    }                    dataForm.addField(field);                }                return dataForm;            }        }        return null;    }    public boolean hasInfo(String name, String node, JID senderJID) {        // Check if the service is disabled. Info is not available when disabled.        if (!isServiceEnabled()) {            return false;        }        if (name == null && node == null) {            // We always have info about the Pubsub service            return true;        }        else if (name == null) {            // We only have info if the node exists            return hasNode(node);        }        return false;    }    public Iterator<DiscoItem> getItems(String name, String node, JID senderJID) {        // Check if the service is disabled. Info is not available when disabled.        if (!isServiceEnabled()) {            return null;        }        List<DiscoItem> answer = new ArrayList<DiscoItem>();        String serviceDomain = getServiceDomain();        if (name == null && node == null) {            // Answer all first level nodes            for (Node pubNode : rootCollectionNode.getNodes()) {                if (canDiscoverNode(pubNode)) {                	final DiscoItem item = new DiscoItem(						new JID(serviceDomain), pubNode.getName(),						pubNode.getNodeID(), null);                    answer.add(item);                }            }        }        else if (name == null) {            Node pubNode = getNode(node);            if (pubNode != null && canDiscoverNode(pubNode)) {                if (pubNode.isCollectionNode()) {                    // Answer all nested nodes as items                    for (Node nestedNode : pubNode.getNodes()) {                        if (canDiscoverNode(nestedNode)) {                        	final DiscoItem item = new DiscoItem(new JID(serviceDomain), nestedNode.getName(),								nestedNode.getNodeID(), null);                            answer.add(item);                        }                    }                }                else {                    // This is a leaf node so answer the published items which exist on the service                    for (PublishedItem publishedItem : pubNode.getPublishedItems()) {                        answer.add(new DiscoItem(new JID(serviceDomain), publishedItem.getID(), null, null));                    }                }            }            else {                // Answer null to indicate that specified item was not found                return null;            }        }        return answer.iterator();    }    public void broadcast(Node node, Message message, Collection<JID> jids) {        // TODO Possibly use a thread pool for sending packets (based on the jids size)        message.setFrom(getAddress());        for (JID jid : jids) {            message.setTo(jid);            message.setID(                    node.getNodeID() + "__" + jid.toBareJID() + "__" + StringUtils.randomString(5));            router.route(message);        }    }    public void send(Packet packet) {        router.route(packet);    }    public void sendNotification(Node node, Message message, JID jid) {        message.setFrom(getAddress());        message.setTo(jid);        message.setID(                node.getNodeID() + "__" + jid.toBareJID() + "__" + StringUtils.randomString(5));        router.route(message);    }    public Node getNode(String nodeID) {        return nodes.get(nodeID);    }    public Collection<Node> getNodes() {        return nodes.values();    }    private boolean hasNode(String nodeID) {        return getNode(nodeID) != null;    }    public void addNode(Node node) {        nodes.put(node.getNodeID(), node);    }    public void removeNode(String nodeID) {        nodes.remove(nodeID);    }    private boolean canDiscoverNode(Node pubNode) {        return true;    }    /**     * Converts an array to a comma-delimitted String.     *     * @param array the array.     * @return a comma delimtted String of the array values.     */    private static String fromArray(String [] array) {        StringBuilder buf = new StringBuilder();        for (int i=0; i<array.length; i++) {            buf.append(array[i]);            if (i != array.length-1) {                buf.append(",");            }        }        return buf.toString();    }    public Map<String, Map<String, String>> getBarePresences() {        return barePresences;    }    public Queue<PublishedItem> getItemsToAdd() {        return itemsToAdd;    }    public Queue<PublishedItem> getItemsToDelete() {        return itemsToDelete;    }    public AdHocCommandManager getManager() {        return manager;    }    public PublishedItemTask getPublishedItemTask() {        return publishedItemTask;    }    public void setPublishedItemTask(PublishedItemTask task) {        publishedItemTask = task;    }    public Timer getTimer() {        return timer;    }        public int getItemsTaskTimeout() {        return items_task_timeout;    }    public void setItemsTaskTimeout(int timeout) {        items_task_timeout = timeout;    }    public void propertySet(String property, Map<String, Object> params) {        if (property.equals("xmpp.pubsub.enabled")) {            boolean enabled = Boolean.parseBoolean((String)params.get("value"));            // Enable/disable the service            enableService(enabled);        }    }    public void propertyDeleted(String property, Map<String, Object> params) {        if (property.equals("xmpp.pubsub.enabled")) {            // Enable/disable the service            enableService(true);        }    }    public void xmlPropertySet(String property, Map<String, Object> params) {        // Do nothing    }    public void xmlPropertyDeleted(String property, Map<String, Object> params) {        // Do nothing    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -