@Test public void modifySubscriptionsAsOwnerTest() throws InterruptedException, SmackException, IOException, XMPPException, Exception { ThreadedDummyConnection con = ThreadedDummyConnection.newInstance(); PubSubManager mgr = new PubSubManager(con, JidTestUtil.PUBSUB_EXAMPLE_ORG); Node testNode = new LeafNode(mgr, "princely_musings"); List<Subscription> ChangeSubs = Arrays.asList( new Subscription(JidCreate.from("romeo@montague.org"), Subscription.State.subscribed), new Subscription(JidCreate.from("juliet@capulet.org"), Subscription.State.none) ); testNode.modifySubscriptionsAsOwner(ChangeSubs); PubSub request = con.getSentPacket(); assertEquals("http://jabber.org/protocol/pubsub#owner", request.getChildElementNamespace()); assertEquals("pubsub", request.getChildElementName()); XmlPullParser parser = TestUtils.getIQParser(request.toXML(null).toString()); PubSub pubsubResult = (PubSub) PacketParserUtils.parseIQ(parser); SubscriptionsExtension subElem = pubsubResult.getExtension(PubSubElementType.SUBSCRIPTIONS_OWNER); List<Subscription> subscriptions = subElem.getSubscriptions(); assertEquals(2, subscriptions.size()); Subscription sub1 = subscriptions.get(0); assertEquals("romeo@montague.org", sub1.getJid().toString()); assertEquals(Subscription.State.subscribed, sub1.getState()); Subscription sub2 = subscriptions.get(1); assertEquals("juliet@capulet.org", sub2.getJid().toString()); assertEquals(Subscription.State.none, sub2.getState()); }
@Override public XmlStringBuilder toXML(String enclosingNamespace) { XmlStringBuilder builder = new XmlStringBuilder(this); builder.attribute("jid", jid); builder.optAttribute("node", getNode()); builder.optAttribute("subid", id); builder.optAttribute("subscription", state.toString()); builder.closeEmptyElement(); return builder; }
@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(); } } }
@Test public void subscriptionsOwnerResultTest() throws Exception { // @formatter:off final String resultStanza = "<iq from='pubsub.example.org' to='julia@example.org/Smack' id='HaT4m-13' type='result'>" + "<pubsub xmlns='http://jabber.org/protocol/pubsub#owner'>" + "<subscriptions node='test'>" + "<subscription jid='foo@example.org/Smack' subscription='subscribed' subid='58C1A6F99F2A7'/>" + "<subscription jid='julia@example.org/Smack' subscription='subscribed' subid='58C18F8917321'/>" + "</subscriptions>" + "</pubsub>" + "</iq>"; // @formatter:on XmlPullParser parser = TestUtils.getIQParser(resultStanza); PubSub pubsubResult = (PubSub) PacketParserUtils.parseIQ(parser); SubscriptionsExtension subElem = pubsubResult.getExtension(PubSubElementType.SUBSCRIPTIONS_OWNER); List<Subscription> subscriptions = subElem.getSubscriptions(); assertEquals(2, subscriptions.size()); Subscription sub1 = subscriptions.get(0); assertThat("foo@example.org/Smack", equalsCharSequence(sub1.getJid())); assertEquals(Subscription.State.subscribed, sub1.getState()); assertEquals("58C1A6F99F2A7", sub1.getId()); Subscription sub2 = subscriptions.get(1); assertThat("julia@example.org/Smack", equalsCharSequence(sub2.getJid())); assertEquals(Subscription.State.subscribed, sub2.getState()); assertEquals("58C18F8917321", sub2.getId()); } }
public String toXML() { StringBuilder builder = new StringBuilder("<subscription"); appendAttribute(builder, "jid", jid); if (getNode() != null) appendAttribute(builder, "node", getNode()); if (id != null) appendAttribute(builder, "subid", id); if (state != null) appendAttribute(builder, "subscription", state.toString()); builder.append("/>"); return builder.toString(); }
@Override public Subscription parse(XmlPullParser parser, int initialDepth) throws XmlPullParserException, IOException { Jid jid = ParserUtils.getJidAttribute(parser); String nodeId = parser.getAttributeValue(null, "node"); String subId = parser.getAttributeValue(null, "subid"); String state = parser.getAttributeValue(null, "subscription"); boolean isRequired = false; int tag = parser.next(); if ((tag == XmlPullParser.START_TAG) && parser.getName().equals("subscribe-options")) { tag = parser.next(); if ((tag == XmlPullParser.START_TAG) && parser.getName().equals("required")) isRequired = true; while (tag != XmlPullParser.END_TAG && !parser.getName().equals("subscribe-options")) tag = parser.next(); } while (parser.getEventType() != XmlPullParser.END_TAG) parser.next(); return new Subscription(jid, nodeId, subId, (state == null ? null : Subscription.State.valueOf(state)), isRequired); }
/** * * @param nodeName - node name * @param s - subscription */ public synchronized void unsubscribeFromNode(String nodeName, Subscription s) { try { LeafNode node = (LeafNode)manager.getNode(nodeName); node.unsubscribe(s.getJid(), s.getId()); } catch (XMPPException e) { logger.error("XMPP Error unsubscribing from XMPP pubsub node: " + e); } catch (Exception e) { logger.error("Error unsubscribing from XMPP pubsub node: " + e); } }
/** * Checks if given <tt>jid</tt> is registered for PubSub updates on given * <tt>node</tt>. */ private boolean isSubscribed(EntityFullJid jid, Node node) throws XMPPException.XMPPErrorException, NotConnectedException, InterruptedException, NoResponseException { // FIXME: consider using local flag rather than getting the list // of subscriptions for (org.jivesoftware.smackx.pubsub.Subscription subscription : node.getSubscriptions()) { if (subscription.getJid().equals(jid.toString())) { return true; } } return false; }
public String toXML() { StringBuilder builder = new StringBuilder("<subscription"); appendAttribute(builder, "jid", jid); if (getNode() != null) appendAttribute(builder, "node", getNode()); if (id != null) appendAttribute(builder, "subid", id); if (state != null) appendAttribute(builder, "subscription", state.toString()); builder.append("/>"); return builder.toString(); }
public PacketExtension parseExtension(XmlPullParser parser) throws Exception { String jid = parser.getAttributeValue(null, "jid"); String nodeId = parser.getAttributeValue(null, "node"); String subId = parser.getAttributeValue(null, "subid"); String state = parser.getAttributeValue(null, "subscription"); boolean isRequired = false; int tag = parser.next(); if ((tag == XmlPullParser.START_TAG) && parser.getName().equals("subscribe-options")) { tag = parser.next(); if ((tag == XmlPullParser.START_TAG) && parser.getName().equals("required")) isRequired = true; while (parser.next() != XmlPullParser.END_TAG && parser.getName() != "subscribe-options"); } while (parser.getEventType() != XmlPullParser.END_TAG) parser.next(); return new Subscription(jid, nodeId, subId, (state == null ? null : Subscription.State.valueOf(state)), isRequired); }
public String toXML() { StringBuilder builder = new StringBuilder("<subscription"); appendAttribute(builder, "jid", jid); if (getNode() != null) appendAttribute(builder, "node", getNode()); if (id != null) appendAttribute(builder, "subid", id); if (state != null) appendAttribute(builder, "subscription", state.toString()); builder.append("/>"); return builder.toString(); }
public PacketExtension parseExtension(XmlPullParser parser) throws Exception { String jid = parser.getAttributeValue(null, "jid"); String nodeId = parser.getAttributeValue(null, "node"); String subId = parser.getAttributeValue(null, "subid"); String state = parser.getAttributeValue(null, "subscription"); boolean isRequired = false; int tag = parser.next(); if ((tag == XmlPullParser.START_TAG) && parser.getName().equals("subscribe-options")) { tag = parser.next(); if ((tag == XmlPullParser.START_TAG) && parser.getName().equals("required")) isRequired = true; while (parser.next() != XmlPullParser.END_TAG && parser.getName() != "subscribe-options"); } while (parser.getEventType() != XmlPullParser.END_TAG) parser.next(); return new Subscription(jid, nodeId, subId, (state == null ? null : Subscription.State.valueOf(state)), isRequired); }
builder.append(item.toXML());
public PacketExtension parseExtension(XmlPullParser parser) throws Exception { String jid = parser.getAttributeValue(null, "jid"); String nodeId = parser.getAttributeValue(null, "node"); String subId = parser.getAttributeValue(null, "subid"); String state = parser.getAttributeValue(null, "subscription"); boolean isRequired = false; int tag = parser.next(); if ((tag == XmlPullParser.START_TAG) && parser.getName().equals("subscribe-options")) { tag = parser.next(); if ((tag == XmlPullParser.START_TAG) && parser.getName().equals("required")) isRequired = true; while (parser.next() != XmlPullParser.END_TAG && parser.getName() != "subscribe-options"); } while (parser.getEventType() != XmlPullParser.END_TAG) parser.next(); return new Subscription(jid, nodeId, subId, (state == null ? null : Subscription.State.valueOf(state)), isRequired); }
builder.append(item.toXML());
builder.append(item.toXML());