@Override protected NodeExtension createReturnExtension(String currentElement, String currentNamespace, Map<String, String> attributeMap, List<? extends ExtensionElement> content) { return new NodeExtension(PubSubElementType.valueOfFromElemName(currentElement, currentNamespace), attributeMap.get("node")); } }
/** * Creates an instant node, if supported. * * @return The node that was created * @throws XMPPErrorException * @throws NoResponseException * @throws NotConnectedException * @throws InterruptedException */ public LeafNode createNode() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { PubSub reply = sendPubsubPacket(Type.set, new NodeExtension(PubSubElementType.CREATE), null); NodeExtension elem = reply.getExtension("create", PubSubNamespace.basic.getXmlns()); LeafNode newNode = new LeafNode(this, elem.getNode()); nodeMap.put(newNode.getId(), newNode); return newNode; }
@Override public boolean acceptSpecific(Message message) { EventElement event = EventElement.from(message); if (event == null) return false; NodeExtension embedEvent = event.getEvent(); if (embedEvent == null) return false; if (embedEvent.getElementName().equals(firstElement)) { if (!embedEvent.getNode().equals(getId())) return false; if (secondElement == null) return true; if (embedEvent instanceof EmbeddedPacketExtension) { List<ExtensionElement> secondLevelList = ((EmbeddedPacketExtension) embedEvent).getExtensions(); // XEP-0060 allows no elements on second level for notifications. See schema or // for example ยง 4.3: // "although event notifications MUST include an empty <items/> element;" if (allowEmpty && secondLevelList.isEmpty()) { return true; } if (secondLevelList.size() > 0 && secondLevelList.get(0).getElementName().equals(secondElement)) return true; } } return false; } }
@Override public String toString() { return getClass().getName() + " - content [" + toXML(null) + "]"; } }
@Override public CharSequence toXML(String enclosingNamespace) { return '<' + getElementName() + (node == null ? "" : " node='" + node + '\'') + "/>"; }
@Override public void eventReceived(final EntityBareJid from, final EventElement event, final Message message) { if (PEP_NODE_PUBLIC_KEYS.equals(event.getEvent().getNode())) { final BareJid contact = from.asBareJid(); LOGGER.log(Level.INFO, "Received OpenPGP metadata update from " + contact); Async.go(new Runnable() { @Override public void run() { ItemsExtension items = (ItemsExtension) event.getExtensions().get(0); PayloadItem<?> payload = (PayloadItem) items.getItems().get(0); PublicKeysListElement listElement = (PublicKeysListElement) payload.getPayload(); processPublicKeysListElement(from, listElement); } }, "ProcessOXMetadata"); } } };
@Override public final String getNamespace() { return getPubSubNamespace().getXmlns(); }
@Override public CharSequence toXML(String enclosingNamespace) { if ((items == null) || (items.size() == 0)) { return super.toXML(enclosingNamespace); } else { StringBuilder builder = new StringBuilder("<"); builder.append(getElementName()); if (getNode() != null) { builder.append(" node='"); builder.append(getNode()); builder.append('\''); } builder.append('>'); for (Subscription item : items) { builder.append(item.toXML(null)); } builder.append("</"); builder.append(getElementName()); builder.append('>'); return builder.toString(); } } }
public String toXML() { return '<' + getElementName() + (node == null ? "" : " node='" + node + '\'') + "/>"; }
@Override public void eventReceived(final EntityBareJid from, final EventElement event, final Message message) { if (!MOOD_NODE.equals(event.getEvent().getNode())) { return; } final BareJid contact = from.asBareJid(); asyncButOrdered.performAsyncButOrdered(contact, new Runnable() { @Override public void run() { ItemsExtension items = (ItemsExtension) event.getExtensions().get(0); PayloadItem<?> payload = (PayloadItem) items.getItems().get(0); MoodElement mood = (MoodElement) payload.getPayload(); for (MoodListener listener : moodListeners) { listener.onMoodUpdated(contact, message, mood); } } }); } });
public static PubSub createPubsubPacket(Jid to, Type type, NodeExtension extension) { PubSub pubSub = new PubSub(to, type, extension.getPubSubNamespace()); pubSub.addExtension(extension); return pubSub; } }
/** * Returns the default settings for Node configuration. * * @return configuration form containing the default settings. * @throws XMPPErrorException * @throws NoResponseException * @throws NotConnectedException * @throws InterruptedException */ public ConfigureForm getDefaultConfiguration() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { // Errors will cause exceptions in getReply, so it only returns // on success. PubSub reply = sendPubsubPacket(Type.get, new NodeExtension(PubSubElementType.DEFAULT), PubSubElementType.DEFAULT.getNamespace()); return NodeUtils.getFormFromPacket(reply, PubSubElementType.DEFAULT); }
/** * Creates an instant node, if supported. * * @return The node that was created * @exception XMPPException */ public LeafNode createNode() throws XMPPException { PubSub reply = (PubSub)sendPubsubPacket(Type.SET, new NodeExtension(PubSubElementType.CREATE)); NodeExtension elem = (NodeExtension)reply.getExtension("create", PubSubNamespace.BASIC.getXmlns()); LeafNode newNode = new LeafNode(con, elem.getNode()); newNode.setTo(to); nodeMap.put(newNode.getId(), newNode); return newNode; }
@Override public CharSequence toXML(String enclosingNamespace) { if ((items == null) || (items.size() == 0)) { return super.toXML(enclosingNamespace); } else { StringBuilder builder = new StringBuilder("<"); builder.append(getElementName()); builder.append(" node='"); builder.append(getNode()); if (notify != null) { builder.append("' "); builder.append(type.getElementAttribute()); builder.append("='"); builder.append(notify.equals(Boolean.TRUE) ? 1 : 0); builder.append("'>"); } else { builder.append("'>"); for (NamedElement item : items) { builder.append(item.toXML(null)); } } builder.append("</"); builder.append(getElementName()); builder.append('>'); return builder.toString(); } }
return false; if (embedEvent.getElementName().equals(firstElement)) if (!embedEvent.getNode().equals(getId())) return false;
public String toXML() { return '<' + getElementName() + (node == null ? "" : " node='" + node + '\'') + "/>"; }
/** * Gets the affiliations on the root node. * * @return List of affiliations * @throws XMPPErrorException * @throws NoResponseException * @throws NotConnectedException * @throws InterruptedException * */ public List<Affiliation> getAffiliations() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { PubSub reply = sendPubsubPacket(Type.get, new NodeExtension(PubSubElementType.AFFILIATIONS), null); AffiliationsExtension listElem = reply.getExtension(PubSubElementType.AFFILIATIONS); return listElem.getAffiliations(); }
/** * Creates an instant node, if supported. * * @return The node that was created * @exception XMPPException */ public LeafNode createNode() throws XMPPException { PubSub reply = (PubSub)sendPubsubPacket(Type.SET, new NodeExtension(PubSubElementType.CREATE)); NodeExtension elem = (NodeExtension)reply.getExtension("create", PubSubNamespace.BASIC.getXmlns()); LeafNode newNode = new LeafNode(con, elem.getNode()); newNode.setTo(to); nodeMap.put(newNode.getId(), newNode); return newNode; }
@Override public CharSequence toXML(String enclosingNamespace) { if (configForm == null) { return super.toXML(enclosingNamespace); } else { StringBuilder builder = new StringBuilder("<"); builder.append(getElementName()); if (getNode() != null) { builder.append(" node='"); builder.append(getNode()); builder.append("'>"); } else builder.append('>'); builder.append(configForm.getDataFormToSend().toXML(null)); builder.append("</"); builder.append(getElementName() + '>'); return builder.toString(); } }
return false; if (embedEvent.getElementName().equals(firstElement)) if (!embedEvent.getNode().equals(getId())) return false;