You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by mj...@apache.org on 2009/08/05 19:39:19 UTC

svn commit: r801331 - in /mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/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...

Author: mjakl
Date: Wed Aug  5 17:39:18 2009
New Revision: 801331

URL: http://svn.apache.org/viewvc?rev=801331&view=rev
Log:
Huge refactoring. Removed the "root" collection node from the handlers and introduced a service configuration object containing the root node, the server JID and the storage providers. First step towards VYSPER-156.

Added:
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubServiceConfiguration.java
Modified:
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/ServiceDiscoItemsVisitor.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/AbstractPubSubOwnerHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerConfigureNodeHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java
    mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeIQHandler.java Wed Aug  5 17:39:18 2009
@@ -21,7 +21,6 @@
 
 import org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.ErrorStanzaGenerator;
-import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
 import org.apache.vysper.xmpp.stanza.IQStanza;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.uuid.JVMBuiltinUUIDGenerator;
@@ -38,8 +37,8 @@
 
     // one ErrorStanzaGenerator available for all subclasses
     protected ErrorStanzaGenerator errorStanzaGenerator = null;
-    // the pubsub service itself is a collection node
-    protected CollectionNode root;
+    // the pubsub service configuration
+    protected PubSubServiceConfiguration serviceConfiguration = null;
     // we need to generate some IDs
     protected UUIDGenerator idGenerator;
 
@@ -48,8 +47,8 @@
      * 
      * @param root the one and only "root" CollectionNode
      */
-    public AbstractPublishSubscribeIQHandler(CollectionNode root) {
-        this.root = root;
+    public AbstractPublishSubscribeIQHandler(PubSubServiceConfiguration serviceConfiguration) {
+        this.serviceConfiguration = serviceConfiguration;
         this.idGenerator = new JVMBuiltinUUIDGenerator();
         errorStanzaGenerator = new ErrorStanzaGenerator();
     }

Added: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubServiceConfiguration.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubServiceConfiguration.java?rev=801331&view=auto
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubServiceConfiguration.java (added)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubServiceConfiguration.java Wed Aug  5 17:39:18 2009
@@ -0,0 +1,114 @@
+/*
+ *  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 org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.CollectionNodeInMemoryStorageProvider;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.CollectionNodeStorageProvider;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeInMemoryStorageProvider;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeStorageProvider;
+
+/**
+ * This class represents the configuration for the publish/subscribe service.
+ * 
+ * @author The Apache MINA Project (http://mina.apache.org)
+ */
+public class PubSubServiceConfiguration {
+    private Entity serverJID;
+    private CollectionNode rootNode;
+    private CollectionNodeStorageProvider collectionNodeStorageProvider;
+    private LeafNodeStorageProvider leafNodeStorageProvider;
+
+    /**
+     * Creates a new configuration object containing at least the root collection node.
+     * 
+     * @param root
+     */
+    public PubSubServiceConfiguration(CollectionNode root) {
+        this.rootNode = root;
+        this.leafNodeStorageProvider = new LeafNodeInMemoryStorageProvider();
+        this.collectionNodeStorageProvider = new CollectionNodeInMemoryStorageProvider();
+        this.initialize();
+    }
+
+    /**
+     * Sets the JID of the server.
+     * 
+     * @param serverJID
+     */
+    public void setServerJID(Entity serverJID) {
+        this.serverJID = serverJID;
+    }
+
+    /**
+     * @return the JID of the server.
+     */
+    public Entity getServerJID() {
+        return serverJID;
+    }
+
+    /**
+     * @return the root collection node.
+     */
+    public CollectionNode getRootNode() {
+        return rootNode;
+    }
+
+    /**
+     * Set the storage provider for leaf nodes.
+     * @param leafNodeStorageProvider
+     */
+    public void setLeafNodeStorageProvider(LeafNodeStorageProvider leafNodeStorageProvider) {
+        this.leafNodeStorageProvider = leafNodeStorageProvider;
+    }
+
+    /**
+     * Return the storage provider for leaf nodes.
+     * @return
+     */
+    public LeafNodeStorageProvider getLeafNodeStorageProvider() {
+        return leafNodeStorageProvider;
+    }
+
+    /**
+     * Set the collection node storage provider.
+     * @param collectionNodeStorageProvider
+     */
+    public void setCollectionNodeStorageProvider(CollectionNodeStorageProvider collectionNodeStorageProvider) {
+        this.collectionNodeStorageProvider = collectionNodeStorageProvider;
+    }
+
+    /**
+     * Return the leaf node storage provider.
+     * @return
+     */
+    public CollectionNodeStorageProvider getCollectionNodeStorageProvider() {
+        return collectionNodeStorageProvider;
+    }
+
+    /**
+     * To be called after the storage providers are set or changed.
+     */
+    public void initialize() {
+        rootNode.setCollectionNodeStorageProvider(this.collectionNodeStorageProvider);
+    }
+    
+}

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java Wed Aug  5 17:39:18 2009
@@ -58,8 +58,8 @@
 @SpecCompliant(spec="xep-0060", comment="spec. version: 1.13rc", status= SpecCompliant.ComplianceStatus.IN_PROGRESS, coverage = SpecCompliant.ComplianceCoverage.PARTIAL)
 public class PublishSubscribeModule extends DefaultDiscoAwareModule implements ServerInfoRequestListener, ItemRequestListener {
 
-    // The service itself acts like a collection node, this is the "root"
-    private CollectionNode root = null;
+    // The configuration of the service
+    private PubSubServiceConfiguration serviceConfiguration = null;
     // for debugging
     private final Logger logger = LoggerFactory.getLogger(PublishSubscribeModule.class);
 
@@ -67,14 +67,14 @@
      * Create a new PublishSubscribeModule together with a new root-collection node.
      */
     public PublishSubscribeModule() {
-        this.root = new CollectionNode();
+        this.serviceConfiguration = new PubSubServiceConfiguration(new CollectionNode());
     }
 
     /**
      * Create a new PublishSubscribeModule together with a supplied root-collection node.
      */
-    public PublishSubscribeModule(CollectionNode root) {
-        this.root = root;
+    public PublishSubscribeModule(PubSubServiceConfiguration servcieConfiguration) {
+        this.serviceConfiguration = servcieConfiguration;
     }
 
     /**
@@ -90,16 +90,17 @@
         if (collectionNodeStorageProvider == null) {
             logger.warn("No collection node storage provider found, using the default (in memory)");
         } else {
-            root.setCollectionNodeStorageProvider(collectionNodeStorageProvider);
+            serviceConfiguration.setCollectionNodeStorageProvider(collectionNodeStorageProvider);
         }
 
         if (leafNodeStorageProvider == null) {
             logger.warn("No leaf node storage provider found, using the default (in memory)");
         } else {
-            root.setLeafNodeStorageProvider(leafNodeStorageProvider);
+            serviceConfiguration.setLeafNodeStorageProvider(leafNodeStorageProvider);
         }
         
-        this.root.initialize();
+        this.serviceConfiguration.setServerJID(serverRuntimeContext.getServerEnitity());
+        this.serviceConfiguration.initialize();
     }
 
     /**
@@ -133,6 +134,7 @@
      * @see ServerInfoRequestListener#getServerInfosFor(InfoRequest)
      */
     public List<InfoElement> getServerInfosFor(InfoRequest request) throws ServiceDiscoveryRequestException {
+        CollectionNode root = serviceConfiguration.getRootNode();
         List<InfoElement> infoElements = new ArrayList<InfoElement>();
         if(request.getNode() == null || request.getNode().length() == 0) {
             infoElements.add(new Identity("pubsub", "service"));
@@ -159,10 +161,11 @@
      * @see ItemRequestListener#getItemsFor(InfoRequest)
      */
     public List<Item> getItemsFor(InfoRequest request) throws ServiceDiscoveryRequestException {
+        CollectionNode root = serviceConfiguration.getRootNode();
         List<Item> items = null;
         
         if(request.getNode() == null || request.getNode().length() == 0) {
-            NodeVisitor nv = new ServiceDiscoItemsVisitor();
+            NodeVisitor nv = new ServiceDiscoItemsVisitor(serviceConfiguration);
             root.acceptNodes(nv);
             items = nv.getNodeItemList();
         } else {
@@ -192,8 +195,8 @@
      */
     private void addPubsubOwnerHandlers(List<HandlerDictionary> dictionary) {
         ArrayList<StanzaHandler> pubsubOwnerHandlers = new ArrayList<StanzaHandler>();
-        pubsubOwnerHandlers.add(new PubSubOwnerConfigureNodeHandler(root));
-        pubsubOwnerHandlers.add(new PubSubOwnerDeleteNodeHandler(root));
+        pubsubOwnerHandlers.add(new PubSubOwnerConfigureNodeHandler(serviceConfiguration));
+        pubsubOwnerHandlers.add(new PubSubOwnerDeleteNodeHandler(serviceConfiguration));
         dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_OWNER, pubsubOwnerHandlers));
     }
 
@@ -203,10 +206,10 @@
      */
     private void addPubsubHandlers(List<HandlerDictionary> dictionary) {
         ArrayList<StanzaHandler> pubsubHandlers = new ArrayList<StanzaHandler>();
-        pubsubHandlers.add(new PubSubSubscribeHandler(root));
-        pubsubHandlers.add(new PubSubUnsubscribeHandler(root));
-        pubsubHandlers.add(new PubSubPublishHandler(root));
-        pubsubHandlers.add(new PubSubCreateNodeHandler(root));
+        pubsubHandlers.add(new PubSubSubscribeHandler(serviceConfiguration));
+        pubsubHandlers.add(new PubSubUnsubscribeHandler(serviceConfiguration));
+        pubsubHandlers.add(new PubSubPublishHandler(serviceConfiguration));
+        pubsubHandlers.add(new PubSubCreateNodeHandler(serviceConfiguration));
         dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, pubsubHandlers));
     }
 }

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/ServiceDiscoItemsVisitor.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/ServiceDiscoItemsVisitor.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/ServiceDiscoItemsVisitor.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/ServiceDiscoItemsVisitor.java Wed Aug  5 17:39:18 2009
@@ -32,14 +32,19 @@
 public class ServiceDiscoItemsVisitor implements NodeVisitor {
 
     private List<Item> itemList = new ArrayList<Item>();
+    private PubSubServiceConfiguration serviceConfiguration;
     
+    public ServiceDiscoItemsVisitor(PubSubServiceConfiguration serviceConfiguration) {
+        this.serviceConfiguration = serviceConfiguration;
+    }
+
     /**
      * 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(LeafNode ln) {
-        this.itemList.add(new Item(ln.getServerJID(), ln.getTitle(), ln.getName()));
+        this.itemList.add(new Item(serviceConfiguration.getServerJID(), ln.getTitle(), ln.getName()));
     }
 
     /**

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/AbstractPubSubGeneralHandler.java Wed Aug  5 17:39:18 2009
@@ -20,7 +20,7 @@
 package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler;
 
 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.modules.extension.xep0060_pubsub.PubSubServiceConfiguration;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 
 /**
@@ -33,8 +33,8 @@
     /**
      * @param root
      */
-    public AbstractPubSubGeneralHandler(CollectionNode root) {
-        super(root);
+    public AbstractPubSubGeneralHandler(PubSubServiceConfiguration serviceConfiguration) {
+        super(serviceConfiguration);
     }
 
     /**

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java Wed Aug  5 17:39:18 2009
@@ -22,8 +22,9 @@
 import org.apache.vysper.compliance.SpecCompliance;
 import org.apache.vysper.compliance.SpecCompliant;
 import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubServiceConfiguration;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
-import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.DuplicateNodeException;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.stanza.IQStanza;
@@ -44,8 +45,8 @@
     /**
      * @param root
      */
-    public PubSubCreateNodeHandler(CollectionNode root) {
-        super(root);
+    public PubSubCreateNodeHandler(PubSubServiceConfiguration serviceConfiguration) {
+        super(serviceConfiguration);
     }
 
     /**
@@ -70,21 +71,24 @@
     protected Stanza handleSet(IQStanza stanza,
             ServerRuntimeContext serverRuntimeContext,
             SessionContext sessionContext) {
-        Entity receiver = stanza.getTo();
+        Entity serverJID = serviceConfiguration.getServerJID();
+        CollectionNode root = serviceConfiguration.getRootNode();
+        
         Entity sender = extractSenderJID(stanza, sessionContext);
 
         String iqStanzaID = stanza.getAttributeValue("id");
 
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(receiver, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
 
         String nodeName = extractNodeName(stanza);
 
-        try {
-            root.createNode(receiver, nodeName, sender);
-        } catch (DuplicateNodeException e) {
-            return errorStanzaGenerator.generateDuplicateNodeErrorStanza(sender, receiver, stanza);
+        if(root.find(nodeName) != null) {
+            return errorStanzaGenerator.generateDuplicateNodeErrorStanza(sender, serverJID, stanza);
         }
 
+        LeafNode node = new LeafNode(serviceConfiguration, nodeName, sender);
+        root.add(node);
+
         return new IQStanza(sb.getFinalStanza());
     }
 }

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java Wed Aug  5 17:39:18 2009
@@ -24,6 +24,7 @@
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.delivery.StanzaRelay;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubPrivilege;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubServiceConfiguration;
 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;
@@ -47,8 +48,8 @@
     /**
      * @param root
      */
-    public PubSubPublishHandler(CollectionNode root) {
-        super(root);
+    public PubSubPublishHandler(PubSubServiceConfiguration serviceConfiguration) {
+        super(serviceConfiguration);
     }
 
     /**
@@ -79,12 +80,14 @@
     protected Stanza handleSet(IQStanza stanza,
             ServerRuntimeContext serverRuntimeContext,
             SessionContext sessionContext) {
-        Entity receiver = stanza.getTo();
+        Entity serverJID = serviceConfiguration.getServerJID();
+        CollectionNode root = serviceConfiguration.getRootNode();
+        
         Entity sender = extractSenderJID(stanza, sessionContext);
 
         String iqStanzaID = stanza.getAttributeValue("id");
 
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(receiver, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
         sb.startInnerElement("pubsub");
         sb.addNamespaceAttribute(NamespaceURIs.XEP0060_PUBSUB);
 
@@ -98,12 +101,12 @@
 
         if(node == null) {
             // node does not exist - error condition 3 (7.1.3)
-            return errorStanzaGenerator.generateNoNodeErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateNoNodeErrorStanza(sender, serverJID, stanza);
         }
 
         if(!node.isAuthorized(sender, PubSubPrivilege.PUBLISH)) {
             // not enough privileges to publish - error condition 1 (7.1.3)
-            return errorStanzaGenerator.generateInsufficientPrivilegesErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateInsufficientPrivilegesErrorStanza(sender, serverJID, stanza);
         }
 
         if(strID == null) {

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java Wed Aug  5 17:39:18 2009
@@ -24,6 +24,7 @@
 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.PubSubServiceConfiguration;
 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;
@@ -47,8 +48,8 @@
     /**
      * @param root
      */
-    public PubSubSubscribeHandler(CollectionNode root) {
-        super(root);
+    public PubSubSubscribeHandler(PubSubServiceConfiguration serviceConfiguration) {
+        super(serviceConfiguration);
     }
 
     /**
@@ -82,13 +83,15 @@
     protected Stanza handleSet(IQStanza stanza,
             ServerRuntimeContext serverRuntimeContext,
             SessionContext sessionContext) {
-        Entity receiver = stanza.getTo();
+        Entity serverJID = serviceConfiguration.getServerJID();
+        CollectionNode root = serviceConfiguration.getRootNode();
+        
         Entity sender = extractSenderJID(stanza, sessionContext);
         Entity subJID = null;
 
         String iqStanzaID = stanza.getAttributeValue("id");
 
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(receiver, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
         sb.startInnerElement("pubsub");
         sb.addNamespaceAttribute(NamespaceURIs.XEP0060_PUBSUB);
 
@@ -98,12 +101,12 @@
         try {
             subJID = EntityImpl.parse(strSubJID);
         } catch (EntityFormatException e) {
-            return errorStanzaGenerator.generateJIDMalformedErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateJIDMalformedErrorStanza(sender, serverJID, stanza);
         }
 
         if(!sender.getBareJID().equals(subJID.getBareJID())) {
             // error condition 1 (6.1.3)
-            return errorStanzaGenerator.generateJIDDontMatchErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateJIDDontMatchErrorStanza(sender, serverJID, stanza);
         }
 
         String nodeName = extractNodeName(stanza);
@@ -111,7 +114,7 @@
 
         if(node == null) {
             // no such node (error condition 11 (6.1.3))
-            return errorStanzaGenerator.generateNoNodeErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateNoNodeErrorStanza(sender, serverJID, stanza);
         }
 
         String id = idGenerator.create();

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java Wed Aug  5 17:39:18 2009
@@ -24,6 +24,7 @@
 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.PubSubServiceConfiguration;
 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.model.MultipleSubscriptionException;
@@ -48,8 +49,8 @@
     /**
      * @param root
      */
-    public PubSubUnsubscribeHandler(CollectionNode root) {
-        super(root);
+    public PubSubUnsubscribeHandler(PubSubServiceConfiguration serviceConfiguration) {
+        super(serviceConfiguration);
     }
 
     /**
@@ -77,13 +78,15 @@
     protected Stanza handleSet(IQStanza stanza,
             ServerRuntimeContext serverRuntimeContext,
             SessionContext sessionContext) {
-        Entity receiver = stanza.getTo();
+        Entity serverJID = serviceConfiguration.getServerJID();
+        CollectionNode root = serviceConfiguration.getRootNode();
+        
         Entity sender = extractSenderJID(stanza, sessionContext);
         Entity subJID = null;
 
         String iqStanzaID = stanza.getAttributeValue("id");
 
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(receiver, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
         sb.startInnerElement("pubsub");
         sb.addNamespaceAttribute(NamespaceURIs.XEP0060_PUBSUB);
 
@@ -95,12 +98,12 @@
             subJID = EntityImpl.parse(strSubJID);
         } catch (EntityFormatException e) {
             // return error stanza... (general error)
-            return errorStanzaGenerator.generateJIDMalformedErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateJIDMalformedErrorStanza(sender, serverJID, stanza);
         }
 
         if(!sender.getBareJID().equals(subJID.getBareJID())) {
             // insufficient privileges (error condition 3 (6.2.3))
-            return errorStanzaGenerator.generateInsufficientPrivilegesErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateInsufficientPrivilegesErrorStanza(sender, serverJID, stanza);
         }
 
         String nodeName = extractNodeName(stanza);
@@ -108,23 +111,23 @@
 
         if(node == null) {
             // no such node (error condition 4 (6.2.3))
-            return errorStanzaGenerator.generateNoNodeErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateNoNodeErrorStanza(sender, serverJID, stanza);
         }
 
         if(strSubID == null) {
             try {
                 if(node.unsubscribe(subJID) == false) {
                     // has no subscription (6.2.3.2)
-                    return errorStanzaGenerator.generateNoSuchSubscriberErrorStanza(sender, receiver, stanza);
+                    return errorStanzaGenerator.generateNoSuchSubscriberErrorStanza(sender, serverJID, stanza);
                 }
             } catch(MultipleSubscriptionException e) {
                 // error case 6.2.3.1
-                return errorStanzaGenerator.generateSubIDRequiredErrorStanza(sender, receiver, stanza);
+                return errorStanzaGenerator.generateSubIDRequiredErrorStanza(sender, serverJID, stanza);
             }
         } else {
             if(node.unsubscribe(strSubID, subJID) == false) {
                 // subID not valid (6.2.3.5)
-                return errorStanzaGenerator.generateSubIDNotValidErrorStanza(sender, receiver, stanza);
+                return errorStanzaGenerator.generateSubIDNotValidErrorStanza(sender, serverJID, stanza);
             }
         }
 

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/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/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/AbstractPubSubOwnerHandler.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/AbstractPubSubOwnerHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/AbstractPubSubOwnerHandler.java Wed Aug  5 17:39:18 2009
@@ -21,7 +21,7 @@
 
 import org.apache.vysper.compliance.SpecCompliant;
 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.modules.extension.xep0060_pubsub.PubSubServiceConfiguration;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 
 /**
@@ -36,8 +36,8 @@
     /**
      * @param root
      */
-    public AbstractPubSubOwnerHandler(CollectionNode root) {
-        super(root);
+    public AbstractPubSubOwnerHandler(PubSubServiceConfiguration serviceConfiguration) {
+        super(serviceConfiguration);
     }
 
     /**

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/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/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerConfigureNodeHandler.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerConfigureNodeHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerConfigureNodeHandler.java Wed Aug  5 17:39:18 2009
@@ -20,7 +20,7 @@
 package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.owner;
 
 import org.apache.vysper.compliance.SpecCompliant;
-import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.CollectionNode;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubServiceConfiguration;
 
 
 /**
@@ -35,8 +35,8 @@
     /**
      * @param root
      */
-    public PubSubOwnerConfigureNodeHandler(CollectionNode root) {
-        super(root);
+    public PubSubOwnerConfigureNodeHandler(PubSubServiceConfiguration serviceConfiguration) {
+        super(serviceConfiguration);
     }
 
     /**

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/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/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java Wed Aug  5 17:39:18 2009
@@ -24,6 +24,7 @@
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.delivery.StanzaRelay;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubPrivilege;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubServiceConfiguration;
 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.server.ServerRuntimeContext;
@@ -48,8 +49,8 @@
     /**
      * @param root
      */
-    public PubSubOwnerDeleteNodeHandler(CollectionNode root) {
-        super(root);
+    public PubSubOwnerDeleteNodeHandler(PubSubServiceConfiguration serviceConfiguration) {
+        super(serviceConfiguration);
     }
 
     /**
@@ -74,20 +75,22 @@
     protected Stanza handleSet(IQStanza stanza,
             ServerRuntimeContext serverRuntimeContext,
             SessionContext sessionContext) {
-        Entity receiver = stanza.getTo();
+        Entity serverJID = serviceConfiguration.getServerJID();
+        CollectionNode root = serviceConfiguration.getRootNode();
+        
         Entity sender = extractSenderJID(stanza, sessionContext);
         
         String iqStanzaID = stanza.getAttributeValue("id");
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(receiver, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
         String nodeName = extractNodeName(stanza);
         LeafNode node = root.find(nodeName);
         
         if(node == null) {
-            return errorStanzaGenerator.generateNoNodeErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateNoNodeErrorStanza(sender, serverJID, stanza);
         }
         
         if(!node.isAuthorized(sender, PubSubPrivilege.DELETE)) {
-            return errorStanzaGenerator.generateInsufficientPrivilegesErrorStanza(sender, receiver, stanza);
+            return errorStanzaGenerator.generateInsufficientPrivilegesErrorStanza(sender, serverJID, stanza);
         }
         
         sendDeleteNotifications(serverRuntimeContext, sender, nodeName, node);

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNode.java Wed Aug  5 17:39:18 2009
@@ -19,12 +19,8 @@
  */
 package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model;
 
-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;
-import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeStorageProvider;
 
 /**
  * A collection node is a special pubsub node containing only other nodes. Either more CollectionNodes or
@@ -36,23 +32,6 @@
 
     // the storage provider for storing and retrieving node-info
     protected CollectionNodeStorageProvider collectionNodeStorage;
-    // the storage provider for leaf nodes
-    protected LeafNodeStorageProvider leafNodeStorage;
-
-    /**
-     * 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 name. We currently only support a flat hierarchy, so no
@@ -65,78 +44,35 @@
     }
 
     /**
-     * Creates a new node under the given JID.
-     * 
-     * @param serverJID the JID of the server this node is associated with.
-     * @param nodeName the unique node-name of the node (its key)
-     * @param givenName the free-text name of the node
-     * @param creator the JID of the creator of the node
-     * @return the newly created LeafNode.
-     * @throws DuplicateNodeException if the JID is already taken.
+     * Adds the given leaf node to the collection. If the node is already present
+     * (or another node with the same name), it will be replaced with the new one.
+     * @param node
      */
-    public LeafNode createNode(Entity serverJID, String nodeName, String givenName, Entity creator) throws DuplicateNodeException {
-        LeafNode node = new LeafNode(serverJID, nodeName, givenName);
-        node.setPersistenceManager(leafNodeStorage);
-        node.initialize();
-
-        if(collectionNodeStorage.containsNode(nodeName)) {
-            throw new DuplicateNodeException(serverJID.getFullQualifiedName() + nodeName + " " + givenName + " already present");
-        }
-
+    public void add(LeafNode node) {
         collectionNodeStorage.storeNode(node);
-        
-        node.addOwner(creator);
-        return node;
     }
     
     /**
-     * Convenience method to create a node without a free-text name (optional).
-     * 
-     * @param serverJID the JID of the server new node lies on.
-     * @param nodeName the unique name of the node
-     * @param creator the creator of the node
-     * @return the newly create LeafNode
-     * @throws DuplicateNodeException
-     */
-    public LeafNode createNode(Entity serverJID, String nodeName, Entity creator) throws DuplicateNodeException {
-        return this.createNode(serverJID, nodeName, null, creator);
-    }
-
-    /**
-     * Change the storage provider to be used for the collection nodes.
-     * 
-     * @param storageProvider the new storage provider.
+     * Visit all nodes.
+     * @param nv
      */
-    public void setCollectionNodeStorageProvider(CollectionNodeStorageProvider storageProvider) {
-        this.collectionNodeStorage = storageProvider;
-    }
-
-    /**
-     * Change the storage provider to be used for the leaf nodes.
-     * 
-     * @param storageProvider the new storage provider.
-     */
-    public void setLeafNodeStorageProvider(LeafNodeStorageProvider storageProvider) {
-        this.leafNodeStorage = storageProvider;
-    }
-
     public void acceptNodes(NodeVisitor nv) {
         collectionNodeStorage.acceptNodes(nv);
     }
 
     /**
-     * Called after setting the storage providers to do its own initialization tasks.
-     */
-    public void initialize() {
-        this.collectionNodeStorage.initialize();
-        this.leafNodeStorage.initialize();
-    }
-
-    /**
      * Deletes a node.
      * @param nodeName the node to delete
      */
     public void deleteNode(String nodeName) {
         this.collectionNodeStorage.deleteNode(nodeName);
     }
+
+    /**
+     * Changes the storage provider for the collection node.
+     * @param collectionNodeStorageProvider
+     */
+    public void setCollectionNodeStorageProvider(CollectionNodeStorageProvider collectionNodeStorageProvider) {
+        this.collectionNodeStorage = collectionNodeStorageProvider;        
+    }
 }

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNode.java Wed Aug  5 17:39:18 2009
@@ -26,9 +26,9 @@
 import org.apache.vysper.xmpp.delivery.StanzaRelay;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.ItemVisitor;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubAffiliation;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubServiceConfiguration;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.SubscriberPayloadNotificationVisitor;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.feature.PubsubFeatures;
-import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeInMemoryStorageProvider;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeStorageProvider;
 import org.apache.vysper.xmpp.modules.servicediscovery.management.Feature;
 import org.apache.vysper.xmpp.modules.servicediscovery.management.Identity;
@@ -44,26 +44,45 @@
  * @author The Apache MINA Project (http://mina.apache.org)
  */
 public class LeafNode {
-
-    // the jid of the server the node is on
-    protected Entity serverJID;
+    
     // the name of the node (free text)
     protected String title;
     // the unique name (per server) of the node
     protected String name;
     // the storage provider for storing and retrieving node information.
-    protected LeafNodeStorageProvider storage = new LeafNodeInMemoryStorageProvider();
+    protected LeafNodeStorageProvider storage = null;
+    // the service configuration
+    protected PubSubServiceConfiguration serviceConfiguration = null;
+
+    /**
+     * Creates a new LeafNode with the specified name and title. The creator will be added as owner.
+     */
+    public LeafNode(PubSubServiceConfiguration serviceConfiguration, String name, String title, Entity creator) {
+        init(serviceConfiguration, name, title, creator);
+    }
 
     /**
-     * Creates a new LeafNode with the specified JID.
-     * @param serverJID the JID of the node
-     * @param name the unique name of the node (per server)
-     * @param title the free-text title of the node (what is it about?)
+     * Creates a new LeafNode with the specified name. The creator will be added as owner.
      */
-    public LeafNode(Entity serverJID, String name, String title) {
-        this.serverJID = serverJID;
+    public LeafNode(PubSubServiceConfiguration serviceConfiguration, String name, Entity creator) {
+        init(serviceConfiguration, name, null, creator);
+    }
+
+    /**
+     * Method to actually do the initialization process.
+     * 
+     * @param serviceConfiguration
+     * @param name
+     * @param title
+     * @param creator
+     */
+    private void init(PubSubServiceConfiguration serviceConfiguration, String name, String title, Entity creator) {
+        this.serviceConfiguration = serviceConfiguration;
         this.name = name;
         this.title = title;
+        this.storage = serviceConfiguration.getLeafNodeStorageProvider();
+        this.storage.initialize(this);
+        this.addOwner(creator);
     }
 
     /**
@@ -168,7 +187,7 @@
      * @param item the payload of the message.
      */
     protected void sendMessageToSubscriber(StanzaRelay stanzaRelay, XMLElement item) {
-        storage.acceptForEachSubscriber(name, new SubscriberPayloadNotificationVisitor(serverJID, stanzaRelay, item));
+        storage.acceptForEachSubscriber(name, new SubscriberPayloadNotificationVisitor(serviceConfiguration.getServerJID(), stanzaRelay, item));
     }
 
     /**
@@ -184,13 +203,6 @@
     public String getTitle() {
         return title;
     }
-    
-    /**
-     * @return the JID of the server the nodes lies on.
-     */
-    public Entity getServerJID() {
-        return serverJID;
-    }
 
     /**
      * Builds a list of InfoElements for disco#info requests.

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java Wed Aug  5 17:39:18 2009
@@ -52,6 +52,7 @@
     protected Entity client = null;
     protected Entity pubsubService = null;
     protected IQHandler handler = null;
+    protected PubSubServiceConfiguration serviceConfiguration = null;
     protected CollectionNode root = null;
     protected Entity serverEntity = null;
     protected StanzaReceiverRelay relay = null;
@@ -73,7 +74,8 @@
         sessionContext = createTestSessionContext(serverEntity);
 
         root = new CollectionNode();
-        configurePubsubModule(sessionContext, root);
+        serviceConfiguration = new PubSubServiceConfiguration(root);
+        configurePubsubModule(sessionContext, serviceConfiguration);
 
         clientBare = new EntityImpl("tester", "vysper.org", null);
         sessionContext.setInitiatingEntity(clientBare);
@@ -104,8 +106,8 @@
         ((DefaultServerRuntimeContext) tsc.getServerRuntimeContext()).registerServerRuntimeContextService(serviceCollector);
     }
 
-    protected void configurePubsubModule(TestSessionContext tsc, CollectionNode root) {
-        ((DefaultServerRuntimeContext) tsc.getServerRuntimeContext()).addModule(new PublishSubscribeModule(root));
+    protected void configurePubsubModule(TestSessionContext tsc, PubSubServiceConfiguration serviceConfiguration) {
+        ((DefaultServerRuntimeContext) tsc.getServerRuntimeContext()).addModule(new PublishSubscribeModule(serviceConfiguration));
     }
     
     protected void configureStorageProvider(TestSessionContext tsc) {

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoInfoTestCase.java Wed Aug  5 17:39:18 2009
@@ -8,6 +8,7 @@
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.AbstractPublishSubscribeTestCase;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.feature.PubsubFeatures;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractStanzaGenerator;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 import org.apache.vysper.xmpp.modules.servicediscovery.handler.DiscoInfoIQHandler;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
@@ -74,7 +75,7 @@
     }
     
     public void testInfoRequestForANode() throws Exception {
-        root.createNode(serverEntity, "news", "News", client);
+        root.add(new LeafNode(serviceConfiguration, "news", "News", client));
 
         DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator)getDefaultStanzaGenerator();
         Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), "id123","news");

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java Wed Aug  5 17:39:18 2009
@@ -55,8 +55,8 @@
     }
     
     public void testSomeItems() throws Exception {
-        root.createNode(serverEntity, "news", "News", client);
-        root.createNode(serverEntity, "blogs", "Blogs", client);
+        root.add(new LeafNode(serviceConfiguration, "news", "News", client));
+        root.add(new LeafNode(serviceConfiguration, "blogs", "Blogs", client));
         
         DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator)getDefaultStanzaGenerator();
         Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), "id123");
@@ -101,7 +101,7 @@
     }
     
     public void testNodeItemsNone() throws Exception {
-        root.createNode(serverEntity, "news", "News", client);
+        root.add(new LeafNode(serviceConfiguration, "news", "News", client));
         
         DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator)getDefaultStanzaGenerator();
         Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), "id123", "news");
@@ -126,7 +126,8 @@
     }
     
     public void testNodeItemsSome() throws Exception {
-        LeafNode node = root.createNode(serverEntity, "news", "News", client);
+        LeafNode node = new LeafNode(serviceConfiguration, "news", "News", client);
+        root.add(node);
         
         XMLElement item1 = new XMLElement("item1","namespace1",(Attribute[])null, (XMLFragment[])null);
         XMLElement item2 = new XMLElement("item2","namespace2",(Attribute[])null, (XMLFragment[])null);

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java Wed Aug  5 17:39:18 2009
@@ -63,7 +63,7 @@
 
     @Override
     protected IQHandler getHandler() {
-        return new PubSubCreateNodeHandler(root);
+        return new PubSubCreateNodeHandler(serviceConfiguration);
     }
 
     public void testCreate() throws Exception {
@@ -85,7 +85,7 @@
     
     public void testCreateDuplicate() throws Exception {
         String testNode = "test";
-        root.createNode(pubsubService, testNode, client);
+        root.add(new LeafNode(serviceConfiguration, testNode, client));
         assertNotNull(root.find(testNode)); // should be there
         
         AbstractStanzaGenerator sg = getDefaultStanzaGenerator();

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java Wed Aug  5 17:39:18 2009
@@ -43,7 +43,8 @@
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        node = root.createNode(serverEntity, "news", "Node used for testing purposes", client);
+        node = new LeafNode(serviceConfiguration, "news", "Node used for testing purposes", client);
+        root.add(node);
     }
     
     @Override
@@ -53,7 +54,7 @@
 
     @Override
     protected IQHandler getHandler() {
-        return new PubSubPublishHandler(root);
+        return new PubSubPublishHandler(serviceConfiguration);
     }
 
     public void testPublishResponse() {

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java Wed Aug  5 17:39:18 2009
@@ -44,12 +44,13 @@
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        node = root.createNode(serverEntity, "news", "Node used for testing purposes", client);
+        node = new LeafNode(serviceConfiguration, "news", "Node used for testing purposes", client);
+        root.add(node);
     }
     
     @Override
     protected IQHandler getHandler() {
-        return new PubSubSubscribeHandler(root);
+        return new PubSubSubscribeHandler(serviceConfiguration);
     }
 
     @Override

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java Wed Aug  5 17:39:18 2009
@@ -42,7 +42,8 @@
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        node = root.createNode(serverEntity, "news", "Node used for testing purposes", client);
+        node = new LeafNode(serviceConfiguration, "news", "Node used for testing purposes", client);
+        root.add(node);
     }
     
     class DefaultUnsubscribeStanzaGenerator extends AbstractStanzaGenerator {
@@ -100,7 +101,7 @@
 
     @Override
     protected IQHandler getHandler() {
-        return new PubSubUnsubscribeHandler(root);
+        return new PubSubUnsubscribeHandler(serviceConfiguration);
     }
 
     public void testUnsubscribe() throws Exception {

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/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/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java Wed Aug  5 17:39:18 2009
@@ -59,7 +59,7 @@
 
     @Override
     protected IQHandler getHandler() {
-        return new PubSubOwnerConfigureNodeHandler(root);
+        return new PubSubOwnerConfigureNodeHandler(serviceConfiguration);
     }
 
 }

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/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/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java Wed Aug  5 17:39:18 2009
@@ -67,12 +67,14 @@
 
     @Override
     protected IQHandler getHandler() {
-        return new PubSubOwnerDeleteNodeHandler(root);
+        return new PubSubOwnerDeleteNodeHandler(serviceConfiguration);
     }
 
     public void testDelete() throws Exception {
         String testNode = "test";
-        LeafNode node = root.createNode(pubsubService, testNode, client);
+        LeafNode node = new LeafNode(serviceConfiguration, testNode, client);
+        root.add(node);
+        
         node.subscribe("someid", client); // make the owner subscriber
         node.subscribe("otherid1", new EntityImpl("yoda", "starwars.com", "spaceship"));
         node.subscribe("otherid2", new EntityImpl("r2d2", "starwars.com", "desert"));
@@ -100,7 +102,7 @@
     
     public void testDeleteNotAuth() throws Exception {
         String testNode = "test";
-        root.createNode(pubsubService, testNode, client);
+        root.add(new LeafNode(serviceConfiguration, testNode, client));
         
         assertNotNull(root.find(testNode));
         Entity clientNotAuthorized = new EntityImpl("darthvader", "deathstar.tld", null);

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java Wed Aug  5 17:39:18 2009
@@ -23,6 +23,7 @@
 
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubServiceConfiguration;
 
 /**
  * @author The Apache MINA Project (http://mina.apache.org)
@@ -32,36 +33,29 @@
 
     protected CollectionNode collection;
     protected Entity owner;
+    protected PubSubServiceConfiguration serviceConfig;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        collection = new CollectionNode();
-        collection.initialize();
         
+        collection = new CollectionNode();
+        serviceConfig = new PubSubServiceConfiguration(collection);
+
         owner = new EntityImpl("owner","vysper.org", null);
+        Entity jid = new EntityImpl(null, "pubsub.vysper.org", null);
+        serviceConfig.setServerJID(jid);
     }
 
     public void testCreateNode() throws Exception {
-        Entity jid = new EntityImpl(null, "pubsub.vysper.org", null);
-        LeafNode test1 = collection.createNode(jid, "test1", owner);
+        LeafNode test1 = new LeafNode(serviceConfig, "test1", owner);
+        collection.add(test1);
         assertNotNull(test1);
     }
 
-    public void testCreateNodeTwice() {
-        Entity jid = new EntityImpl(null, "pubsub.vysper.org", null);
-        try {
-            collection.createNode(jid, "test1", owner);
-            collection.createNode(jid, "test1", owner);
-            fail();
-        } catch(DuplicateNodeException e) {
-            // ok
-        }
-    }
-
     public void testInsertFind() throws Exception {
-        Entity jid = new EntityImpl(null, "pubsub.vysper.org", null);
-        LeafNode insertedNode = collection.createNode(jid, "test1", owner);
+        LeafNode insertedNode = new LeafNode(serviceConfig, "test1", owner);
+        collection.add(insertedNode);
         LeafNode foundNode = collection.find("test1");
         assertEquals(insertedNode, foundNode);
     }

Modified: mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java?rev=801331&r1=801330&r2=801331&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java (original)
+++ mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/LeafNodeTestCase.java Wed Aug  5 17:39:18 2009
@@ -23,6 +23,7 @@
 
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubServiceConfiguration;
 
 /**
  * @author The Apache MINA Project (http://mina.apache.org)
@@ -36,8 +37,11 @@
     protected void setUp() throws Exception {
         super.setUp();
         Entity nodeJID = new EntityImpl(null, "pubsub.vysper.org", null);
-        node = new LeafNode(nodeJID, "node", "Some test node");
-        node.initialize();
+        PubSubServiceConfiguration serviceConfig = new PubSubServiceConfiguration(new CollectionNode());
+        serviceConfig.setServerJID(nodeJID);
+        Entity creatorJID = new EntityImpl("creator", "vysper.org", null);
+        
+        node = new LeafNode(serviceConfig, "node", "Some test node", creatorJID);
     }
 
     public void testSubscribe() throws Exception {