Author: mjakl
Date: Sun Jun 28 12:43:16 2009
New Revision: 789092

URL: http://svn.apache.org/viewvc?rev=789092&view=rev
Log:
Implemented service discovery for items (disco#items) of the.
* Prepared for node-hierarchies
* Fixed minor typos
Fixes VYSPER-83.

Added:
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeDiscoItemsVisitor.java
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeVisitor.java
    
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/
    
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
      - copied, changed from r789085, 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
    
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
Removed:
    
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
Modified:
    
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/model/CollectionNode.java
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionNodeStorageProvider.java
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionnodeInMemoryStorageProvider.java
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeInMemoryStorageProvider.java
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeStorageProvider.java
    
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.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/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/model/CollectionNodeTestCase.java
    
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java

Added: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeDiscoItemsVisitor.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeDiscoItemsVisitor.java?rev=789092&view=auto
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeDiscoItemsVisitor.java
 (added)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeDiscoItemsVisitor.java
 Sun Jun 28 12:43:16 2009
@@ -0,0 +1,54 @@
+/*
+ *  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;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
+import org.apache.vysper.xmpp.modules.servicediscovery.management.Item;
+
+/**
+ * @author The Apache MINA Project (http://mina.apache.org)
+ *
+ */
+public class NodeDiscoItemsVisitor implements NodeVisitor {
+
+    private List<Item> itemList = new ArrayList<Item>();
+    
+    /**
+     * Prepare the node-list for the disco#items response.
+     * 
+     * @see 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.NodeVisitor#visit(org.apache.vysper.xmpp.addressing.Entity,
 org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode)
+     */
+    public void visit(Entity nodeJID, LeafNode ln) {
+        this.itemList.add(new Item(nodeJID.getBareJID(), ln.getNodeName(), 
nodeJID.getResource()));
+    }
+
+    /**
+     * Return a list of items to be embedded in the disco#items response.
+     * To be called after visit!
+     */
+    public List<Item> getNodeItemList() {
+        return itemList;
+    }
+
+}

Added: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeVisitor.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeVisitor.java?rev=789092&view=auto
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeVisitor.java
 (added)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/NodeVisitor.java
 Sun Jun 28 12:43:16 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;
+
+import java.util.List;
+
+import org.apache.vysper.compliance.SpecCompliant;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
+import org.apache.vysper.xmpp.modules.servicediscovery.management.Item;
+
+/**
+ * The NodeVisitor is used to visit all subscriptions of a collection node.
+ * 
+ * @author The Apache MINA Project (http://mina.apache.org)
+ */
+...@speccompliant(spec="xep-0060", status= 
SpecCompliant.ComplianceStatus.IN_PROGRESS, coverage = 
SpecCompliant.ComplianceCoverage.UNSUPPORTED)
+public interface NodeVisitor {
+
+    /**
+     * visit is part of the "visitor pattern" and should be used to iterate
+     * over all nodes of a collection node.
+     * 
+     * @param nodeJID the node JID
+     * @param ln the node (for more detailed data)
+     */
+    void visit(Entity nodeJID, LeafNode ln);
+
+    List<Item> getNodeItemList();
+
+}

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=789092&r1=789091&r2=789092&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
 Sun Jun 28 12:43:16 2009
@@ -37,6 +37,8 @@
 import org.apache.vysper.xmpp.modules.servicediscovery.management.Identity;
 import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoElement;
 import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest;
+import org.apache.vysper.xmpp.modules.servicediscovery.management.Item;
+import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ItemRequestListener;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ServerInfoRequestListener;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ServiceDiscoveryRequestException;
 import org.apache.vysper.xmpp.protocol.HandlerDictionary;
@@ -48,23 +50,36 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * Initializes the XEP0060 module.
+ * Initializes the XEP0060 module. This class is also responsible for disco 
requests at the service level.
  *
  * @author The Apache MINA Project (http://mina.apache.org)
  */
 @SpecCompliant(spec="xep-0060", status= 
SpecCompliant.ComplianceStatus.IN_PROGRESS, coverage = 
SpecCompliant.ComplianceCoverage.UNSUPPORTED)
-public class PublishSubscribeModule extends DefaultDiscoAwareModule implements 
ServerInfoRequestListener {
+public class PublishSubscribeModule extends DefaultDiscoAwareModule implements 
ServerInfoRequestListener, ItemRequestListener {
 
-    CollectionNode root = null;
-    final Logger logger = 
LoggerFactory.getLogger(PublishSubscribeModule.class);
+    // The service itself acts like a collection node, this is the "root"
+    private CollectionNode root = null;
+    // for debugging
+    private final Logger logger = 
LoggerFactory.getLogger(PublishSubscribeModule.class);
 
     /**
-     * Default constructor takes care of the root-CollectionNode
+     * Create a new PublishSubscribeModule together with a new root-collection 
node.
      */
     public PublishSubscribeModule() {
+        // create the root node with the server jid as the root-node jid
         this.root = new CollectionNode();
     }
 
+    /**
+     * Create a new PublishSubscribeModule together with a supplied 
root-collection node.
+     */
+    public PublishSubscribeModule(CollectionNode root) {
+        this.root = root;
+    }
+
+    /**
+     * Initializes the pubsub module, configuring the storage providers.
+     */
     @Override
     public void initialize(ServerRuntimeContext serverRuntimeContext) {
         super.initialize(serverRuntimeContext);
@@ -83,18 +98,29 @@
         } else {
             root.setLeafNodeStorageProvider(leafNodeStorageProvider);
         }
+        
+        this.root.initialize(serverRuntimeContext.getServerEnitity());
     }
 
+    /**
+     * Returns the service name
+     */
     @Override
     public String getName() {
         return "XEP-0060 Publish-Subscribe";
     }
 
+    /**
+     * Returns the implemented spec. version.
+     */
     @Override
     public String getVersion() {
         return "1.13rc3";
     }
 
+    /**
+     * Make this object available for disco#info requests.
+     */
     @Override
     protected void 
addServerInfoRequestListeners(List<ServerInfoRequestListener> 
serverInfoRequestListeners) {
         serverInfoRequestListeners.add(this);
@@ -102,7 +128,7 @@
 
     /**
      * Implements the getServerInfosFor method from the {...@link 
ServerInfoRequestListener} interface.
-     * Makes this modules available via disco as "pubsub service" in the 
pubsub namespace.
+     * Makes this modules available via disco#info as "pubsub service" in the 
pubsub namespace.
      * 
      * @see ServerInfoRequestListener#getServerInfosFor(InfoRequest)
      */
@@ -114,6 +140,26 @@
     }
 
     /**
+     * Make this object available for disco#items requests.
+     */
+    @Override
+    protected void addItemRequestListeners(List<ItemRequestListener> 
itemRequestListeners) {
+        itemRequestListeners.add(this);
+    }
+
+    /**
+     * Implements the getItemsFor method from the {...@link 
ItemRequestListener} interface.
+     * Makes this modules available via disco#items and returns the associated 
nodes.
+     * 
+     * @see ItemRequestListener#getItemsFor(InfoRequest)
+     */
+    public List<Item> getItemsFor(InfoRequest request) throws 
ServiceDiscoveryRequestException {
+        NodeVisitor nv = new NodeDiscoItemsVisitor();
+        root.acceptNodes(nv);
+        return nv.getNodeItemList();
+    }
+
+    /**
      * Registers the handlers for the various stanza types known to this 
pubsub implementation.
      * 
      * @see DefaultModule#addHandlerDictionaries(List<HandlerDictionary> 
dictionary)
@@ -147,5 +193,4 @@
         pubsubHandlers.add(new PubSubCreateNodeHandler(root));
         dictionary.add(new 
NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, pubsubHandlers));
     }
-
 }

Modified: 
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=789092&r1=789091&r2=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java
 Sun Jun 28 12:43:16 2009
@@ -21,6 +21,7 @@
 
 import org.apache.vysper.compliance.SpecCompliant;
 import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.NodeVisitor;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.CollectionNodeStorageProvider;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.CollectionnodeInMemoryStorageProvider;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeInMemoryStorageProvider;
@@ -35,21 +36,30 @@
 @SpecCompliant(spec="xep-0060", status= 
SpecCompliant.ComplianceStatus.IN_PROGRESS, coverage = 
SpecCompliant.ComplianceCoverage.UNSUPPORTED)
 public class CollectionNode {
 
+    // the JID of the collection node
+    protected Entity nodeJID;
     // the storage provider for storing and retrieving node-info
     protected CollectionNodeStorageProvider collectionNodeStorage;
     // the storage provider for leaf nodes
     protected LeafNodeStorageProvider leafNodeStorage;
 
     /**
-     * Initializes the CollectionNode
+     * Creates a new CollectionNode, leaves the nodeJID uninitialized.
      */
     public CollectionNode() {
+        initStorageProviders();
+    }
+
+    /**
+     * Initializes the default in-memory storage providers.
+     */
+    private void initStorageProviders() {
         collectionNodeStorage = new CollectionnodeInMemoryStorageProvider();
         leafNodeStorage = new LeafNodeInMemoryStorageProvider();
     }
 
     /**
-     * Search for a given node via its JID. We currently only support a flat 
hierachy, so no
+     * Search for a given node via its JID. We currently only support a flat 
hierarchy, so no
      * other node types are available ATM.
      * 
      * @return the LeafNode for the JID
@@ -62,21 +72,33 @@
      * Creates a new node under the given JID.
      * 
      * @param jid the JID of the new node.
+     * @param name the free-text name of the node.
      * @return the newly created LeafNode.
      * @throws DuplicateNodeException if the JID is already taken.
      */
-    public LeafNode createNode(Entity jid) throws DuplicateNodeException {
+    public LeafNode createNode(Entity jid, String name) throws 
DuplicateNodeException {
         if(collectionNodeStorage.containsNode(jid)) {
             throw new DuplicateNodeException(jid.getFullQualifiedName() + " 
already present");
         }
 
-        LeafNode node = new LeafNode(jid);
+        LeafNode node = new LeafNode(jid, name);
         node.setPersistenceManager(leafNodeStorage);
 
         collectionNodeStorage.storeNode(jid, node);
 
         return node;
     }
+    
+    /**
+     * Convenience method to create a node without a name (optional).
+     * 
+     * @param jid the JID of the new node.
+     * @return the newly create LeafNode
+     * @throws DuplicateNodeException
+     */
+    public LeafNode createNode(Entity jid) throws DuplicateNodeException {
+        return this.createNode(jid, null);
+    }
 
     /**
      * Change the storage provider to be used for the collection nodes.
@@ -95,4 +117,17 @@
     public void setLeafNodeStorageProvider(LeafNodeStorageProvider 
storageProvider) {
         this.leafNodeStorage = storageProvider;
     }
+
+    public void acceptNodes(NodeVisitor nv) {
+        collectionNodeStorage.acceptNodes(nodeJID, nv);
+    }
+
+    /**
+     * Called after setting the storage providers to do its own initialization 
tasks.
+     */
+    public void initialize(Entity nodeJID) {
+        this.nodeJID = nodeJID;
+        this.collectionNodeStorage.initialize();
+        this.leafNodeStorage.initialize();
+    }
 }

Modified: 
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=789092&r1=789091&r2=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java
 Sun Jun 28 12:43:16 2009
@@ -38,6 +38,8 @@
 
     // the jid of the node
     protected Entity jid;
+    // the name of the node (free text)
+    protected String name;
     // the storage provider for storing and retrieving node information.
     protected LeafNodeStorageProvider storage = new 
LeafNodeInMemoryStorageProvider();
 
@@ -45,8 +47,9 @@
      * Creates a new LeafNode with the specified JID.
      * @param jid the JID of the node
      */
-    public LeafNode(Entity jid) {
+    public LeafNode(Entity jid, String name) {
         this.jid = jid;
+        this.name = name;
     }
 
     /**
@@ -153,4 +156,11 @@
     protected void sendMessageToSubscriber(StanzaRelay stanzaRelay, XMLElement 
item) {
         storage.acceptForEachSubscriber(jid, new 
SubscriberNotificationVisitor(stanzaRelay, item));
     }
+
+    /**
+     * @return the name of the node.
+     */
+    public String getNodeName() {
+        return name;
+    }
 }

Modified: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionNodeStorageProvider.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionNodeStorageProvider.java?rev=789092&r1=789091&r2=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionNodeStorageProvider.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionNodeStorageProvider.java
 Sun Jun 28 12:43:16 2009
@@ -22,6 +22,7 @@
 import org.apache.vysper.compliance.SpecCompliant;
 import org.apache.vysper.storage.StorageProvider;
 import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.NodeVisitor;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 
 /**
@@ -54,4 +55,17 @@
      * @param node the LeafNode to be stored.
      */
     public void storeNode(Entity jid, LeafNode node);
+
+    /**
+     * Call the NodeVisitor for each node of the given collection node.
+     * @param nodeJID the node we want to iterate.
+     * 
+     * @param nv
+     */
+    public void acceptNodes(Entity nodeJID, NodeVisitor nv);
+
+    /**
+     * Call to do some preliminary tasks after the module has been configured.
+     */
+    public void initialize();
 }

Modified: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionnodeInMemoryStorageProvider.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionnodeInMemoryStorageProvider.java?rev=789092&r1=789091&r2=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionnodeInMemoryStorageProvider.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/CollectionnodeInMemoryStorageProvider.java
 Sun Jun 28 12:43:16 2009
@@ -23,6 +23,7 @@
 import java.util.Map;
 
 import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.NodeVisitor;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 
 /**
@@ -64,4 +65,20 @@
     public void storeNode(Entity jid, LeafNode node) {
         nodes.put(jid, node);
     }
+
+    /**
+     * Walk through all known nodes, calling visit on each.
+     */
+    public void acceptNodes(Entity nodeJID, NodeVisitor nv) {
+        for(Entity node : nodes.keySet()) {
+            nv.visit(node, nodes.get(node));
+        }
+    }
+
+    /**
+     * The in-memory storage provider does not need initialization beyond 
creating the objects.
+     */
+    public void initialize() {
+        // empty
+    }
 }

Modified: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeInMemoryStorageProvider.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeInMemoryStorageProvider.java?rev=789092&r1=789091&r2=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeInMemoryStorageProvider.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeInMemoryStorageProvider.java
 Sun Jun 28 12:43:16 2009
@@ -124,4 +124,11 @@
             subscriberVisitor.visit(nodeJID, sub);
         }
     }
+
+    /**
+     * The in-memory storage provider does not need initialization beyond 
creating the objects.
+     */
+    public void initialize() {
+        // empty
+    }
 }

Modified: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeStorageProvider.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeStorageProvider.java?rev=789092&r1=789091&r2=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeStorageProvider.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeStorageProvider.java
 Sun Jun 28 12:43:16 2009
@@ -112,4 +112,9 @@
      */
     public void acceptForEachSubscriber(Entity nodeJID, SubscriberVisitor 
subscriberVisitor);
 
+    /**
+     * Call to do some preliminary tasks after the module has been configured.
+     */
+    public void initialize();
+
 }

Modified: 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java?rev=789092&r1=789091&r2=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/main/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoItemIQHandler.java
 Sun Jun 28 12:43:16 2009
@@ -44,7 +44,7 @@
 import java.util.List;
 
 /**
- * handles IQ info queries
+ * handles IQ items queries
  *
  * @author The Apache MINA Project ([email protected])
  */
@@ -79,7 +79,7 @@
         if (serviceCollector == null) {
             return 
ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.INTERNAL_SERVER_ERROR,
 stanza,
                     StanzaErrorType.CANCEL,
-                    "cannot retrieve IQ-get-info result from internal 
components",
+                    "cannot retrieve IQ-get-items result from internal 
components",
                     getErrorLanguage(serverRuntimeContext, sessionContext), 
null);
         }
 
@@ -92,7 +92,7 @@
             if (!isServerInfoRequest) {
                 return 
ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.ITEM_NOT_FOUND,
 stanza,
                         StanzaErrorType.CANCEL,
-                        "server does not handle info query requests for " + 
to.getFullQualifiedName(),
+                        "server does not handle items query requests for " + 
to.getFullQualifiedName(),
                         getErrorLanguage(serverRuntimeContext, 
sessionContext), null);
             }
         }

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=789092&r1=789091&r2=789092&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
 Sun Jun 28 12:43:16 2009
@@ -28,7 +28,6 @@
 import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
 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.modules.extension.xep0060_pubsub.storageprovider.CollectionnodeInMemoryStorageProvider;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeInMemoryStorageProvider;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
@@ -54,16 +53,26 @@
     protected Entity pubsub = null;
     protected IQHandler handler = null;
     protected CollectionNode root = null;
-    protected LeafNode node = null;
+    protected Entity serverEntity = null;
     
     // for debugging
-    protected SystemOutStanzaWriter stanzaWriter = new SystemOutStanzaWriter();
+    private SystemOutStanzaWriter stanzaWriter = new SystemOutStanzaWriter();
+    
+    protected void printStanza(Stanza stanza) {
+        this.stanzaWriter.write(stanza);
+        this.stanzaWriter.close();
+        System.out.println();
+    }
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
 
-        sessionContext = createTestSessionContext();
+        serverEntity = new EntityImpl(null, "pubsub.vysper.org", null);
+        sessionContext = createTestSessionContext(serverEntity);
+
+        root = new CollectionNode();
+        configurePubsubModule(sessionContext, root);
 
         clientBare = new EntityImpl("tester", "vysper.org", null);
         sessionContext.setInitiatingEntity(clientBare);
@@ -73,23 +82,19 @@
         pubsub = EntityImpl.parse("pubsub.vysper.org/news");
         setResourceConnected(boundResourceId);
 
-        root = new CollectionNode();
-        node = root.createNode(pubsub);
-
         handler = getHandler();
     }
     
-    protected TestSessionContext createTestSessionContext() {
+    protected TestSessionContext createTestSessionContext(Entity serverEntity) 
{
         SessionStateHolder sessionStateHolder = new SessionStateHolder();
         sessionStateHolder.setState(SessionState.AUTHENTICATED);
         StanzaReceiverRelay relay = new 
org.apache.vysper.xmpp.delivery.StanzaReceiverRelay();
-        DefaultServerRuntimeContext serverContext = new 
DefaultServerRuntimeContext(new EntityImpl(null, "pubsub.vysper.org", null), 
relay);
+        DefaultServerRuntimeContext serverContext = new 
DefaultServerRuntimeContext(serverEntity, relay);
         relay.setServerRuntimeContext(serverContext);
         TestSessionContext tsc = new TestSessionContext(serverContext, 
sessionStateHolder);
 
         configureStorageProvider(tsc);
         configureServiceRegistry(tsc);
-        configurePubsubModule(tsc);
         return tsc;
     }
 
@@ -98,8 +103,8 @@
         ((DefaultServerRuntimeContext) 
tsc.getServerRuntimeContext()).registerServerRuntimeContextService(serviceCollector);
     }
 
-    protected void configurePubsubModule(TestSessionContext tsc) {
-        ((DefaultServerRuntimeContext) 
tsc.getServerRuntimeContext()).addModule(new PublishSubscribeModule());
+    protected void configurePubsubModule(TestSessionContext tsc, 
CollectionNode root) {
+        ((DefaultServerRuntimeContext) 
tsc.getServerRuntimeContext()).addModule(new PublishSubscribeModule(root));
     }
     
     protected void configureStorageProvider(TestSessionContext tsc) {

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=789092&r1=789091&r2=789092&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
 Sun Jun 28 12:43:16 2009
@@ -19,6 +19,11 @@
  */
 package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub;
 
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.disco.PubSubDiscoInfoTestCase;
+import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.disco.PubSubDiscoItemsTestCase;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.PubSubCreateNodeTestCase;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.PubSubPublishTestCase;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.PubSubSubscribeTestCase;
@@ -28,9 +33,6 @@
 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;
-
 /**
  * 
  * @author The Apache MINA Project (http://mina.apache.org)
@@ -53,6 +55,7 @@
         suite.addTestSuite(LeafNodeTestCase.class);
         
         suite.addTestSuite(PubSubDiscoInfoTestCase.class);
+        suite.addTestSuite(PubSubDiscoItemsTestCase.class);
         //$JUnit-END$
         return suite;
     }

Copied: 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
 (from r789085, 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java)
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java?p2=mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java&p1=mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java&r1=789085&r2=789092&rev=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubDiscoInfoTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
 Sun Jun 28 12:43:16 2009
@@ -1,9 +1,10 @@
-package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub;
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.disco;
 
 import java.util.List;
 
 import org.apache.vysper.xmpp.addressing.Entity;
 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.handler.AbstractStanzaGenerator;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.handler.DiscoInfoIQHandler;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;

Added: 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java?rev=789092&view=auto
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
 (added)
+++ 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
 Sun Jun 28 12:43:16 2009
@@ -0,0 +1,130 @@
+package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.disco;
+
+import java.util.List;
+
+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.AbstractPublishSubscribeTestCase;
+import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
+import 
org.apache.vysper.xmpp.modules.servicediscovery.handler.DiscoItemIQHandler;
+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.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.xmlfragment.XMLElement;
+
+
+public class PubSubDiscoItemsTestCase extends AbstractPublishSubscribeTestCase 
{
+    
+    @Override
+    protected AbstractStanzaGenerator getDefaultStanzaGenerator() {
+        return new DefaultDiscoInfoStanzaGenerator();
+    }
+
+    @Override
+    protected IQHandler getHandler() {
+        return new DiscoItemIQHandler();
+    }
+
+    
+    public void testNoItems() {
+        AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
+        Stanza stanza = sg.getStanza(client, pubsub.getBareJID(), "id123");
+
+        ResponseStanzaContainer result = sendStanza(stanza, true);
+        assertTrue(result.hasResponse());
+        IQStanza response = new IQStanza(result.getResponseStanza());
+
+        assertEquals(IQStanzaType.RESULT.value(),response.getType());
+
+        assertEquals("id123", response.getAttributeValue("id")); // IDs must 
match
+
+        // get the query Element
+        XMLElement query = response.getFirstInnerElement();
+        List<XMLElement> inner = query.getInnerElements();
+
+        assertEquals("query", query.getName());
+        
+        // since we have no nodes, there should be no items.
+        assertEquals(0, inner.size());
+    }
+    
+    public void testSomeItems() throws Exception {
+        root.createNode(EntityImpl.parse("pubsub.vysper.org/news"), "News");
+        root.createNode(EntityImpl.parse("pubsub.vysper.org/blogs"), "Blogs");
+        
+        AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
+        Stanza stanza = sg.getStanza(client, pubsub.getBareJID(), "id123");
+
+        ResponseStanzaContainer result = sendStanza(stanza, true);
+        assertTrue(result.hasResponse());
+        IQStanza response = new IQStanza(result.getResponseStanza());
+
+        assertEquals(IQStanzaType.RESULT.value(),response.getType());
+
+        assertEquals("id123", response.getAttributeValue("id")); // IDs must 
match
+        
+        // get the query Element
+        XMLElement query = response.getFirstInnerElement();
+        List<XMLElement> inner = query.getInnerElements();
+
+        assertEquals("query", query.getName());
+        
+        // since we have no nodes, there should be no items.
+        assertEquals(2, inner.size());
+//        
+//        // ordering etc. is unknown; step through all subelements and pick 
the ones we need
+        XMLElement news = null;
+        XMLElement blogs = null;
+        for(XMLElement el : inner) {
+            if(el.getName().equals("item") /* && 
el.getNamespace().equals(NamespaceURIs.XEP0030_SERVICE_DISCOVERY_ITEMS) */) { 
//TODO enable after fixing the namespace bug
+                
if(el.getAttributeValue("jid").equals(serverEntity.getFullQualifiedName())
+                        && el.getAttributeValue("node").equals("news")
+                        && el.getAttributeValue("name").equals("News")) {
+                    news = el;
+                } else 
if(el.getAttributeValue("jid").equals(serverEntity.getFullQualifiedName())
+                        && el.getAttributeValue("node").equals("blogs")
+                        && el.getAttributeValue("name").equals("Blogs")) {
+                    blogs = el;
+                }
+            }
+        }
+        
+        // make sure they were there (booleans would have sufficed)
+        assertNotNull(news);
+        assertNotNull(blogs);
+    }
+    
+    class DefaultDiscoInfoStanzaGenerator extends AbstractStanzaGenerator {
+        @Override
+        protected StanzaBuilder buildInnerElement(Entity client, Entity 
pubsub, StanzaBuilder sb) {
+            return sb;
+        }
+
+        @Override
+        protected String getNamespace() {
+            return NamespaceURIs.XEP0030_SERVICE_DISCOVERY_ITEMS;
+        }
+
+        @Override
+        protected IQStanzaType getStanzaType() {
+            return IQStanzaType.GET;
+        }
+        
+        @Override
+        public Stanza getStanza(Entity client, Entity pubsub, String id) {
+            StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(client, 
pubsub, getStanzaType(), id);
+            stanzaBuilder.startInnerElement("query");
+            stanzaBuilder.addNamespaceAttribute(getNamespace());
+
+            buildInnerElement(client, pubsub, stanzaBuilder);
+
+            stanzaBuilder.endInnerElement();
+
+            return stanzaBuilder.getFinalStanza();
+        }
+    }
+}

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=789092&r1=789091&r2=789092&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
 Sun Jun 28 12:43:16 2009
@@ -24,6 +24,7 @@
 import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
 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;
@@ -36,8 +37,15 @@
  * @author The Apache MINA Project (http://mina.apache.org)
  */
 public class PubSubPublishTestCase extends AbstractPublishSubscribeTestCase {
+    protected LeafNode node = null;
 
     @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        node = root.createNode(EntityImpl.parse("pubsub.vysper.org/news"));
+    }
+    
+    @Override
     protected AbstractStanzaGenerator getDefaultStanzaGenerator() {
         return new DefaultPublishStanzaGenerator();
     }

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=789092&r1=789091&r2=789092&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
 Sun Jun 28 12:43:16 2009
@@ -25,6 +25,7 @@
 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.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;
@@ -36,8 +37,15 @@
  * @author The Apache MINA Project (http://mina.apache.org)
  */
 public class PubSubSubscribeTestCase extends AbstractPublishSubscribeTestCase {
+    protected LeafNode node = null;
 
     @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        node = root.createNode(EntityImpl.parse("pubsub.vysper.org/news"));
+    }
+    
+    @Override
     protected IQHandler getHandler() {
         return new PubSubSubscribeHandler(root);
     }

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=789092&r1=789091&r2=789092&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
 Sun Jun 28 12:43:16 2009
@@ -25,6 +25,7 @@
 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.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;
@@ -36,7 +37,14 @@
  * @author The Apache MINA Project (http://mina.apache.org)
  */
 public class PubSubUnsubscribeTestCase extends 
AbstractPublishSubscribeTestCase {
+    protected LeafNode node = null;
 
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        node = root.createNode(EntityImpl.parse("pubsub.vysper.org/news"));
+    }
+    
     class DefaultUnsubscribeStanzaGenerator extends AbstractStanzaGenerator {
         private String subscriberJID = null;
         private String subID = null;

Modified: 
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=789092&r1=789091&r2=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java
 Sun Jun 28 12:43:16 2009
@@ -36,6 +36,7 @@
     protected void setUp() throws Exception {
         super.setUp();
         collection = new CollectionNode();
+        collection.initialize(new EntityImpl(null, "pubsub.vysper.org", null));
     }
 
     public void testCreateNode() throws Exception {

Modified: 
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=789092&r1=789091&r2=789092&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java
 (original)
+++ 
mina/sandbox/vysper/trunk/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java
 Sun Jun 28 12:43:16 2009
@@ -36,7 +36,7 @@
     protected void setUp() throws Exception {
         super.setUp();
         Entity nodeJID = new EntityImpl(null, "pubsub.vysper.org", "node");
-        node = new LeafNode(nodeJID);
+        node = new LeafNode(nodeJID, "Some test node");
     }
 
     public void testSubscribe() throws Exception {


Reply via email to