You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by be...@apache.org on 2009/05/22 10:35:35 UTC
svn commit: r777430 - in /mina/sandbox/vysper/trunk/src:
main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/
main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/
main/java/org/apache/vysper/xmpp/modules/extension/xe...
Author: berndf
Date: Fri May 22 08:35:34 2009
New Revision: 777430
URL: http://svn.apache.org/viewvc?rev=777430&view=rev
Log:
[vysper] (VYSPER-52) ongoing pubsub code and commit comment contributed by Michael Jakl:
adds the base usecase for subscribing to a node. It does not contain error handling or persistent storage yet. The patch also adds the necessary model classes. The chosen node relationship (for now) is "flat-set" (see XEP-0248, Table1).
Added:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/DuplicateNodeException.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java
Modified:
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/AbstractPubSubOwnerHandler.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerConfigureNodeHandler.java
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java Fri May 22 08:35:34 2009
@@ -21,7 +21,10 @@
import org.apache.vysper.compliance.SpecCompliant;
import org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.uuid.JVMBuiltinUUIDGenerator;
+import org.apache.vysper.xmpp.uuid.UUIDGenerator;
import org.apache.vysper.xmpp.xmlfragment.XMLElement;
/**
@@ -32,6 +35,14 @@
@SpecCompliant(spec="xep-0060", status= SpecCompliant.ComplianceStatus.IN_PROGRESS, coverage = SpecCompliant.ComplianceCoverage.UNSUPPORTED)
public abstract class AbstractPublishSubscribeIQHandler extends DefaultIQHandler {
+ protected CollectionNode root;
+ protected UUIDGenerator idGenerator;
+
+ public AbstractPublishSubscribeIQHandler(CollectionNode root) {
+ this.root = root;
+ this.idGenerator = new JVMBuiltinUUIDGenerator();
+ }
+
@Override
protected boolean verifyNamespace(Stanza stanza) {
return verifyInnerNamespace(stanza, getNamespace());
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java Fri May 22 08:35:34 2009
@@ -26,6 +26,7 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.PubSubUnsubscribeHandler;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.owner.PubSubOwnerConfigureNodeHandler;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.owner.PubSubOwnerDeleteNodeHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
import org.apache.vysper.xmpp.modules.servicediscovery.management.Feature;
import org.apache.vysper.xmpp.modules.servicediscovery.management.Identity;
import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoElement;
@@ -47,6 +48,15 @@
*/
public class PublishSubscribeModule extends DefaultDiscoAwareModule implements ServerInfoRequestListener {
+ CollectionNode root = null;
+
+ /**
+ * Default constructor takes care of the root-CollectionNode
+ */
+ public PublishSubscribeModule() {
+ this.root = new CollectionNode();
+ }
+
@Override
public String getName() {
return "XEP-0060 Publish-Subscribe";
@@ -73,15 +83,15 @@
@Override
protected void addHandlerDictionaries(List<HandlerDictionary> dictionary) {
ArrayList<StanzaHandler> pubsubHandlers = new ArrayList<StanzaHandler>();
- pubsubHandlers.add(new PubSubSubscribeHandler());
- pubsubHandlers.add(new PubSubUnsubscribeHandler());
- pubsubHandlers.add(new PubSubPublishHandler());
- pubsubHandlers.add(new PubSubCreateNodeHandler());
+ pubsubHandlers.add(new PubSubSubscribeHandler(root));
+ pubsubHandlers.add(new PubSubUnsubscribeHandler(root));
+ pubsubHandlers.add(new PubSubPublishHandler(root));
+ pubsubHandlers.add(new PubSubCreateNodeHandler(root));
dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, pubsubHandlers));
ArrayList<StanzaHandler> pubsubOwnerHandlers = new ArrayList<StanzaHandler>();
- pubsubOwnerHandlers.add(new PubSubOwnerConfigureNodeHandler());
- pubsubOwnerHandlers.add(new PubSubOwnerDeleteNodeHandler());
+ pubsubOwnerHandlers.add(new PubSubOwnerConfigureNodeHandler(root));
+ pubsubOwnerHandlers.add(new PubSubOwnerDeleteNodeHandler(root));
dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_OWNER, pubsubOwnerHandlers));
}
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java Fri May 22 08:35:34 2009
@@ -19,8 +19,11 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler;
+import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeIQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanza;
/**
*
@@ -30,9 +33,33 @@
public abstract class AbstractPubSubGeneralHandler extends
AbstractPublishSubscribeIQHandler {
+ /**
+ * @param root
+ */
+ public AbstractPubSubGeneralHandler(CollectionNode root) {
+ super(root);
+ }
+
@Override
protected String getNamespace() {
return NamespaceURIs.XEP0060_PUBSUB;
}
+ /**
+ * Extracts the node name from a given IQ stanza. The node attribute
+ * takes precedence over the JID resource. The standard requires only
+ * one of these addressing methods.
+ *
+ * @param stanza the received IQStanza
+ * @return the node name
+ */
+ protected String extractNodeName(IQStanza stanza) {
+ String node = stanza.getFirstInnerElement().getAttributeValue("node");
+ if(node == null) {
+ Entity to = stanza.getTo();
+ node = to.getResource();
+ }
+ return node;
+ }
+
}
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java Fri May 22 08:35:34 2009
@@ -19,6 +19,8 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
+
/**
* @author The Apache MINA Project (http://mina.apache.org)
@@ -26,6 +28,13 @@
*/
public class PubSubCreateNodeHandler extends AbstractPubSubGeneralHandler {
+ /**
+ * @param root
+ */
+ public PubSubCreateNodeHandler(CollectionNode root) {
+ super(root);
+ }
+
@Override
protected String getWorkerElement() {
return "create";
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java Fri May 22 08:35:34 2009
@@ -19,6 +19,8 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
+
/**
* @author The Apache MINA Project (http://mina.apache.org)
@@ -26,6 +28,13 @@
*/
public class PubSubPublishHandler extends AbstractPubSubGeneralHandler {
+ /**
+ * @param root
+ */
+ public PubSubPublishHandler(CollectionNode root) {
+ super(root);
+ }
+
@Override
protected String getWorkerElement() {
return "publish";
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java Fri May 22 08:35:34 2009
@@ -19,6 +19,20 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityFormatException;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+
/**
* @author The Apache MINA Project (http://mina.apache.org)
@@ -26,9 +40,68 @@
*/
public class PubSubSubscribeHandler extends AbstractPubSubGeneralHandler {
+ /**
+ * @param root
+ */
+ public PubSubSubscribeHandler(CollectionNode root) {
+ super(root);
+ }
+
@Override
protected String getWorkerElement() {
return "subscribe";
}
+ @Override
+ protected Stanza handleSet(IQStanza stanza,
+ ServerRuntimeContext serverRuntimeContext,
+ SessionContext sessionContext) {
+ Entity sender = stanza.getFrom();
+ Entity receiver = stanza.getTo();
+ Entity subJID = null;
+
+ StanzaBuilder sb = StanzaBuilder.createIQStanza(receiver, sender, IQStanzaType.RESULT, "id");
+ sb.startInnerElement("pubsub", NamespaceURIs.XEP0060_PUBSUB);
+
+ XMLElement sub = stanza.getFirstInnerElement().getFirstInnerElement(); // pubsub/subscribe
+ String strSubJID = sub.getAttributeValue("jid"); // MUST
+
+ try {
+ subJID = EntityImpl.parse(strSubJID);
+ } catch (EntityFormatException e) {
+ // TODO return error stanza... (general error)
+ return null;
+ }
+
+ if(!sender.getBareJID().equals(subJID.getBareJID())) {
+ // TODO error condition 1 (6.1.3)
+ return null;
+ }
+
+ String nodeName = extractNodeName(stanza);
+ LeafNode node = root.find(nodeName);
+
+ if(node == null) {
+ // TODO no such node (error condition 11 (6.1.3))
+ return null;
+ }
+
+ String id = idGenerator.create();
+ node.subscribe(id, subJID);
+
+ buildSuccessStanza(sb, nodeName, strSubJID, id);
+
+ sb.endInnerElement(); // pubsub
+ return new IQStanza(sb.getFinalStanza());
+ }
+
+ private void buildSuccessStanza(StanzaBuilder sb, String node, String jid, String subid) {
+ sb.startInnerElement("subscription");
+ sb.addAttribute("node", node);
+ sb.addAttribute("jid", jid);
+ sb.addAttribute("subid", subid);
+ sb.addAttribute("subscription", "subscribed");
+ sb.endInnerElement();
+ }
+
}
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java Fri May 22 08:35:34 2009
@@ -19,6 +19,8 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
+
/**
* @author The Apache MINA Project (http://mina.apache.org)
@@ -26,6 +28,13 @@
*/
public class PubSubUnsubscribeHandler extends AbstractPubSubGeneralHandler {
+ /**
+ * @param root
+ */
+ public PubSubUnsubscribeHandler(CollectionNode root) {
+ super(root);
+ }
+
@Override
protected String getWorkerElement() {
return "unsubscribe";
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/AbstractPubSubOwnerHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/AbstractPubSubOwnerHandler.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/AbstractPubSubOwnerHandler.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/AbstractPubSubOwnerHandler.java Fri May 22 08:35:34 2009
@@ -20,6 +20,7 @@
package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.owner;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeIQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
/**
@@ -30,6 +31,13 @@
public abstract class AbstractPubSubOwnerHandler extends
AbstractPublishSubscribeIQHandler {
+ /**
+ * @param root
+ */
+ public AbstractPubSubOwnerHandler(CollectionNode root) {
+ super(root);
+ }
+
@Override
protected String getNamespace() {
return NamespaceURIs.XEP0060_PUBSUB_OWNER;
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerConfigureNodeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerConfigureNodeHandler.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerConfigureNodeHandler.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerConfigureNodeHandler.java Fri May 22 08:35:34 2009
@@ -19,6 +19,8 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.owner;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
+
/**
* @author The Apache MINA Project (http://mina.apache.org)
@@ -26,6 +28,13 @@
*/
public class PubSubOwnerConfigureNodeHandler extends AbstractPubSubOwnerHandler {
+ /**
+ * @param root
+ */
+ public PubSubOwnerConfigureNodeHandler(CollectionNode root) {
+ super(root);
+ }
+
@Override
protected String getWorkerElement() {
return "configure";
Modified: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java (original)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java Fri May 22 08:35:34 2009
@@ -19,6 +19,8 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.owner;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
+
/**
* @author The Apache MINA Project (http://mina.apache.org)
@@ -26,6 +28,13 @@
*/
public class PubSubOwnerDeleteNodeHandler extends AbstractPubSubOwnerHandler {
+ /**
+ * @param root
+ */
+ public PubSubOwnerDeleteNodeHandler(CollectionNode root) {
+ super(root);
+ }
+
@Override
protected String getWorkerElement() {
return "delete";
Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java?rev=777430&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java Fri May 22 08:35:34 2009
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * @author The Apache MINA Project (http://mina.apache.org)
+ *
+ */
+public class CollectionNode {
+
+ protected Map<String, LeafNode> storage;
+
+ public CollectionNode() {
+ storage = new TreeMap<String, LeafNode>();
+ }
+
+ public LeafNode find(String name) {
+ return storage.get(name);
+ }
+
+ public LeafNode createNode(String name) throws DuplicateNodeException {
+ if(storage.containsKey(name)) {
+ throw new DuplicateNodeException(name + " already present");
+ }
+
+ LeafNode node = new LeafNode(name);
+ storage.put(name, node);
+
+ return node;
+ }
+}
Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/DuplicateNodeException.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/DuplicateNodeException.java?rev=777430&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/DuplicateNodeException.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/DuplicateNodeException.java Fri May 22 08:35:34 2009
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model;
+
+/**
+ * @author The Apache MINA Project (http://mina.apache.org)
+ *
+ */
+public class DuplicateNodeException extends Exception {
+
+ private static final long serialVersionUID = 4689474856848508356L;
+
+ public DuplicateNodeException(String description) {
+ super(description);
+ }
+}
Added: mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java?rev=777430&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java (added)
+++ mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java Fri May 22 08:35:34 2009
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ *
+ * @author The Apache MINA Project (http://mina.apache.org)
+ *
+ */
+public class LeafNode {
+
+ protected String name;
+ protected Map<String,Entity> setSubscriber;
+
+ /**
+ * Creates a new LeafNode with the specified name.
+ * @param name the name of the node
+ */
+ public LeafNode(String name) {
+ this.name = name;
+ this.setSubscriber = new TreeMap<String, Entity>();
+ }
+
+ public void subscribe(String id, Entity subscriber) {
+ setSubscriber.put(id,subscriber);
+ }
+
+ public boolean isSubscribed(Entity subscriber) {
+ return setSubscriber.containsValue(subscriber);
+ }
+
+ public boolean isSubscribed(String subscriptionId) {
+ return setSubscriber.containsKey(subscriptionId);
+ }
+}
Modified: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java Fri May 22 08:35:34 2009
@@ -24,6 +24,8 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.server.TestSessionContext;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
@@ -43,6 +45,7 @@
protected Entity client = null;
protected Entity pubsub = null;
protected IQHandler handler = null;
+ protected CollectionNode root = null;
@Override
protected void setUp() throws Exception {
@@ -55,6 +58,7 @@
String boundResourceId = sessionContext.bindResource();
client = new EntityImpl(clientBare, boundResourceId);
pubsub = EntityImpl.parse("pubsub.vysper.org/news");
+ root = new CollectionNode();
setResourceConnected(sessionContext, boundResourceId);
@@ -107,6 +111,10 @@
return stanzaBuilder.getFinalStanza();
}
+ protected ResponseStanzaContainer sendStanza(Stanza toSend, boolean isOutboundStanza) {
+ return handler.execute(toSend, sessionContext.getServerRuntimeContext(), isOutboundStanza, sessionContext, null);
+ }
+
public void testSimpleStanza() {
Stanza stanza = getStanza();
Modified: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java (original)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubTests.java Fri May 22 08:35:34 2009
@@ -25,6 +25,8 @@
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.PubSubUnsubscribeTestCase;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.owner.PubSubConfigureNodeTestCase;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.owner.PubSubDeleteNodeTestCase;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNodeTestCase;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNodeTestCase;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -46,6 +48,9 @@
suite.addTestSuite(PubSubPublishTestCase.class);
suite.addTestSuite(PubSubSubscribeTestCase.class);
suite.addTestSuite(PubSubUnsubscribeTestCase.class);
+
+ suite.addTestSuite(CollectionNodeTestCase.class);
+ suite.addTestSuite(LeafNodeTestCase.class);
//$JUnit-END$
return suite;
}
Modified: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java Fri May 22 08:35:34 2009
@@ -40,7 +40,7 @@
@Override
protected IQHandler getHandler() {
- return new PubSubCreateNodeHandler();
+ return new PubSubCreateNodeHandler(root);
}
@Override
Modified: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java (original)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java Fri May 22 08:35:34 2009
@@ -40,7 +40,7 @@
@Override
protected IQHandler getHandler() {
- return new PubSubPublishHandler();
+ return new PubSubPublishHandler(root);
}
@Override
Modified: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java Fri May 22 08:35:34 2009
@@ -21,9 +21,13 @@
import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
/**
* @author The Apache MINA Project (http://mina.apache.org)
@@ -41,7 +45,7 @@
@Override
protected IQHandler getHandler() {
- return new PubSubSubscribeHandler();
+ return new PubSubSubscribeHandler(root);
}
@Override
@@ -54,4 +58,21 @@
return IQStanzaType.SET;
}
+ public void testSubscribe() throws Exception {
+ LeafNode node = root.createNode(pubsub.getResource()); // use the name of the standard example
+ ResponseStanzaContainer result = sendStanza(getStanza(), true);
+ assertTrue(result.hasResponse());
+ IQStanza response = new IQStanza(result.getResponseStanza());
+ assertEquals(IQStanzaType.RESULT.value(),response.getType());
+ assertTrue(node.isSubscribed(client));
+
+ // get the subscription Element
+ XMLElement sub = response.getFirstInnerElement().getFirstInnerElement();
+
+ assertEquals("subscription", sub.getName());
+ assertEquals(pubsub.getResource(), sub.getAttributeValue("node"));
+ assertEquals(client.getFullQualifiedName(), sub.getAttributeValue("jid"));
+ assertNotNull(sub.getAttributeValue("subid")); // it should be present - value unknown
+ assertEquals("subscribed", sub.getAttributeValue("subscription"));
+ }
}
Modified: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java Fri May 22 08:35:34 2009
@@ -41,7 +41,7 @@
@Override
protected IQHandler getHandler() {
- return new PubSubUnsubscribeHandler();
+ return new PubSubUnsubscribeHandler(root);
}
@Override
Modified: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java Fri May 22 08:35:34 2009
@@ -40,7 +40,7 @@
@Override
protected IQHandler getHandler() {
- return new PubSubOwnerConfigureNodeHandler();
+ return new PubSubOwnerConfigureNodeHandler(root);
}
@Override
Modified: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java?rev=777430&r1=777429&r2=777430&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java Fri May 22 08:35:34 2009
@@ -40,7 +40,7 @@
@Override
protected IQHandler getHandler() {
- return new PubSubOwnerDeleteNodeHandler();
+ return new PubSubOwnerDeleteNodeHandler(root);
}
@Override
Added: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java?rev=777430&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java Fri May 22 08:35:34 2009
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model;
+
+import junit.framework.TestCase;
+
+/**
+ * @author The Apache MINA Project (http://mina.apache.org)
+ *
+ */
+public class CollectionNodeTestCase extends TestCase {
+
+ protected CollectionNode collection;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ collection = new CollectionNode();
+ }
+
+ public void testCreateNode() throws Exception {
+ LeafNode test1 = collection.createNode("test1");
+ assertNotNull(test1);
+ }
+
+ public void testCreateNodeTwice() {
+ try {
+ collection.createNode("test1");
+ collection.createNode("test1");
+ fail();
+ } catch(DuplicateNodeException e) {
+ // ok
+ }
+ }
+
+ public void testInsertFind() throws Exception {
+ LeafNode insertedNode = collection.createNode("test1");
+ LeafNode foundNode = collection.find("test1");
+ assertEquals(insertedNode, foundNode);
+ }
+
+ public void testFindNone() {
+ assertNull(collection.find("doesnotexist"));
+ }
+
+}
Added: mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java?rev=777430&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java (added)
+++ mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java Fri May 22 08:35:34 2009
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model;
+
+import junit.framework.TestCase;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+
+/**
+ * @author The Apache MINA Project (http://mina.apache.org)
+ *
+ */
+public class LeafNodeTestCase extends TestCase {
+
+ protected LeafNode node;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ node = new LeafNode("node");
+ }
+
+ public void testSubscribe() throws Exception {
+ Entity me = EntityImpl.parse("me@vysper.org");
+ node.subscribe("id1", me);
+ assertTrue(node.isSubscribed(me));
+ assertTrue(node.isSubscribed("id1"));
+ }
+}