@Override public void eventReceived(String from, String node, List<Item> items) { if (!"urn:xmpp:avatar:metadata".equals(node)) return; Item i = items.get(0); if (i instanceof PayloadItem) { PayloadItem<PacketExtension> pi = (PayloadItem<PacketExtension>) i; PacketExtension ex = pi.getPayload(); if (ex instanceof AvatarMetadataExtension) { AvatarMetadataExtension ext = (AvatarMetadataExtension) ex; String id = i.getId(); List<Info> infos = ext.getInfos(); if (infos.size() > 0 && mAutoDownload) { Info info = selectAvatar(infos); if (!mCache.contains(id)) downloadAvatar(from, id, info); } fireListeners(from, id, infos); } } }
@Override public Item parse(XmlPullParser parser, int initialDepth) throws XmlPullParserException, IOException, SmackException { String id = parser.getAttributeValue(null, "id"); String node = parser.getAttributeValue(null, "node"); int tag = parser.next(); if (tag == XmlPullParser.END_TAG) { return new Item(id, node); } else { String payloadElemName = parser.getName(); String payloadNS = parser.getNamespace(); final ExtensionElementProvider<ExtensionElement> extensionProvider = ProviderManager.getExtensionProvider(payloadElemName, payloadNS); if (extensionProvider == null) { CharSequence payloadText = PacketParserUtils.parseElement(parser, true); return new PayloadItem<SimplePayload>(id, node, new SimplePayload(payloadElemName, payloadNS, payloadText)); } else { return new PayloadItem<ExtensionElement>(id, node, extensionProvider.parse(parser)); } } }
public PacketExtension parseExtension(XmlPullParser parser) throws Exception { String id = parser.getAttributeValue(null, "id"); String elem = parser.getName(); int tag = parser.next(); if (tag == XmlPullParser.END_TAG) { return new Item(id); } else { String payloadElemName = parser.getName(); String payloadNS = parser.getNamespace(); if (ProviderManager.getInstance().getExtensionProvider(payloadElemName, payloadNS) == null) { boolean done = false; StringBuilder payloadText = new StringBuilder(); while (!done) { if (tag == XmlPullParser.END_TAG && parser.getName().equals(elem)) done = true; else if (!((tag == XmlPullParser.START_TAG) && parser.isEmptyElementTag())) payloadText.append(parser.getText()); if (!done) tag = parser.next(); } return new PayloadItem<SimplePayload>(id, new SimplePayload(payloadElemName, payloadNS, payloadText.toString())); } else { return new PayloadItem<PacketExtension>(id, PacketParserUtils.parsePacketExtension(payloadElemName, payloadNS, parser)); } } }
public PacketExtension parseExtension(XmlPullParser parser) throws Exception { String id = parser.getAttributeValue(null, "id"); String node = parser.getAttributeValue(null, "node"); String elem = parser.getName(); int tag = parser.next(); if (tag == XmlPullParser.END_TAG) { return new Item(id, node); } else { String payloadElemName = parser.getName(); String payloadNS = parser.getNamespace(); if (ProviderManager.getInstance().getExtensionProvider(payloadElemName, payloadNS) == null) { boolean done = false; StringBuilder payloadText = new StringBuilder(); while (!done) { if (tag == XmlPullParser.END_TAG && parser.getName().equals(elem)) done = true; else if (!((tag == XmlPullParser.START_TAG) && parser.isEmptyElementTag())) payloadText.append(parser.getText()); if (!done) tag = parser.next(); } return new PayloadItem<SimplePayload>(id, node, new SimplePayload(payloadElemName, payloadNS, payloadText.toString())); } else { return new PayloadItem<PacketExtension>(id, node, PacketParserUtils.parsePacketExtension(payloadElemName, payloadNS, parser)); } } }
@Override public byte[] getAvatar() { try { LeafNode node = mPubsub.getPEPNode(AVATARDATANODE); List<Item> items = node.getItems(Arrays.asList(mId)); PayloadItem<AvatarExtension> item = (PayloadItem<AvatarExtension>) items.get(0); AvatarExtension avatar = item.getPayload(); return avatar.getData(); } catch (XMPPException e) { return null; } }
public PacketExtension parseExtension(XmlPullParser parser) throws Exception { String id = parser.getAttributeValue(null, "id"); String node = parser.getAttributeValue(null, "node"); String elem = parser.getName(); int tag = parser.next(); if (tag == XmlPullParser.END_TAG) { return new Item(id, node); } else { String payloadElemName = parser.getName(); String payloadNS = parser.getNamespace(); if (ProviderManager.getInstance().getExtensionProvider(payloadElemName, payloadNS) == null) { boolean done = false; boolean isEmptyElement = false; StringBuilder payloadText = new StringBuilder(); while (!done) { if (tag == XmlPullParser.END_TAG && parser.getName().equals(elem)) { done = true; continue; } else if (parser.getEventType() == XmlPullParser.START_TAG) { payloadText.append("<").append(parser.getName()); if (parser.getName().equals(payloadElemName) && (payloadNS.length() > 0)) payloadText.append(" xmlns=\"").append(payloadNS).append("\""); int n = parser.getAttributeCount(); for (int i = 0; i < n; i++) payloadText.append(" ").append(parser.getAttributeName(i)).append("=\"") .append(parser.getAttributeValue(i)).append("\""); if (parser.isEmptyElementTag()) { payloadText.append("/>"); isEmptyElement = true; } else { payloadText.append(">"); } } else if (parser.getEventType() == XmlPullParser.END_TAG) { if (isEmptyElement) { isEmptyElement = false; } else { payloadText.append("</").append(parser.getName()).append(">"); } } else if (parser.getEventType() == XmlPullParser.TEXT) { payloadText.append(parser.getText()); } tag = parser.next(); } return new PayloadItem<SimplePayload>(id, node, new SimplePayload(payloadElemName, payloadNS, payloadText.toString())); } else { return new PayloadItem<PacketExtension>(id, node, PacketParserUtils.parsePacketExtension(payloadElemName, payloadNS, parser)); } } }
public PacketExtension parseExtension(XmlPullParser parser) throws Exception { String id = parser.getAttributeValue(null, "id"); String node = parser.getAttributeValue(null, "node"); String elem = parser.getName(); int tag = parser.next(); if (tag == XmlPullParser.END_TAG) { return new Item(id, node); } else { while (tag != XmlPullParser.START_TAG) tag = parser.next(); String payloadElemName = parser.getName(); String payloadNS = parser.getNamespace(); if (ProviderManager.getInstance().getExtensionProvider( payloadElemName, payloadNS) == null) { boolean done = false; StringBuilder payloadText = new StringBuilder(); while (!done) { if (tag == XmlPullParser.END_TAG && parser.getName().equals(elem)) done = true; else if (!((tag == XmlPullParser.START_TAG) && parser .isEmptyElementTag())) payloadText.append(parser.getText()); if (!done) tag = parser.next(); } return new PayloadItem<SimplePayload>(id, node, new SimplePayload(payloadElemName, payloadNS, payloadText.toString())); } else { return new PayloadItem<PacketExtension>(id, node, PacketParserUtils.parsePacketExtension(payloadElemName, payloadNS, parser)); } } }
public PacketExtension parseExtension(XmlPullParser parser) throws Exception { String id = parser.getAttributeValue(null, "id"); String node = parser.getAttributeValue(null, "node"); String elem = parser.getName(); int tag = parser.next(); if (tag == XmlPullParser.END_TAG) { return new Item(id, node); } else { String payloadElemName = parser.getName(); String payloadNS = parser.getNamespace(); if (ProviderManager.getInstance().getExtensionProvider(payloadElemName, payloadNS) == null) { boolean done = false; boolean isEmptyElement = false; StringBuilder payloadText = new StringBuilder(); while (!done) { if (tag == XmlPullParser.END_TAG && parser.getName().equals(elem)) { done = true; } else if (parser.getEventType() == XmlPullParser.START_TAG) { payloadText.append("<").append(parser.getName()); if (parser.getName().equals(payloadElemName) && (payloadNS.length() > 0)) payloadText.append(" xmlns=\"").append(payloadNS).append("\""); int n = parser.getAttributeCount(); for (int i = 0; i < n; i++) payloadText.append(" ").append(parser.getAttributeName(i)).append("=\"") .append(parser.getAttributeValue(i)).append("\""); if (parser.isEmptyElementTag()) { payloadText.append("/>"); isEmptyElement = true; } else { payloadText.append(">"); } } else if (parser.getEventType() == XmlPullParser.END_TAG) { if (isEmptyElement) isEmptyElement = false; else payloadText.append("</").append(parser.getName()).append(">"); } else if (parser.getEventType() == XmlPullParser.TEXT) { payloadText.append(parser.getText()); } tag = parser.next(); } return new PayloadItem<SimplePayload>(id, node, new SimplePayload(payloadElemName, payloadNS, payloadText.toString())); } else { return new PayloadItem<PacketExtension>(id, node, PacketParserUtils.parsePacketExtension( payloadElemName, payloadNS, parser)); } } }
/** * Fire the PEP listeners. * * @param from the JID of the user who send the event * @param node the node of the items in the event * @param items the different items of the event */ private void firePEPListeners(String from, String node, List<Item> items) { for (PEPListener listener : mPepListeners) { listener.eventReceived(from, node, items); } }
/** * Called when PEP events are received. * * @param from the JID of the user who send the event * @param node the node of the items in the event * @param items the different items of the event */ void eventReceived(String from, String node, List<Item> items);