Author: mjakl
Date: Wed Aug  5 14:15:12 2009
New Revision: 801238

URL: http://svn.apache.org/viewvc?rev=801238&view=rev
Log:
Introduced the concept of "affiliation" and "privilege" into the pubsub module. 
Currently the creator of a node is the owner, and hence is allowed to publish, 
delete etc. Everyone else is only a "member" (open-access model) and is allowed 
to subscribe.

Added:
    
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubAffiliation.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubPrivilege.java
Modified:
    
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/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/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeInMemoryStorageProvider.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeStorageProvider.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/PubSubDeleteNodeTestCase.java
    
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/model/CollectionNodeTestCase.java

Added: 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubAffiliation.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/PubSubAffiliation.java?rev=801238&view=auto
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubAffiliation.java
 (added)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubAffiliation.java
 Wed Aug  5 14:15:12 2009
@@ -0,0 +1,34 @@
+/*
+ *  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;
+
+/**
+ * This class defines which affiliations are known. The order of the
+ * constants is important and defines the hierarchy.
+ * 
+ * @author The Apache MINA Project (http://mina.apache.org)
+ */
+public enum PubSubAffiliation {
+    OUTCAST,
+    NONE,
+    MEMBER,
+    PUBLISHER,
+    OWNER
+}

Added: 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubPrivilege.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/PubSubPrivilege.java?rev=801238&view=auto
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubPrivilege.java
 (added)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PubSubPrivilege.java
 Wed Aug  5 14:15:12 2009
@@ -0,0 +1,32 @@
+/*
+ *  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;
+
+/**
+ * This class defines which privileges are required for certain tasks.
+ * 
+ * @author The Apache MINA Project (http://mina.apache.org)
+ */
+public class PubSubPrivilege {
+
+    public static final PubSubAffiliation DELETE = PubSubAffiliation.OWNER;
+    public static final PubSubAffiliation PUBLISH = 
PubSubAffiliation.PUBLISHER;
+
+}

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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -80,7 +80,7 @@
         String nodeName = extractNodeName(stanza);
 
         try {
-            root.createNode(receiver, nodeName);
+            root.createNode(receiver, nodeName, sender);
         } catch (DuplicateNodeException e) {
             return 
errorStanzaGenerator.generateDuplicateNodeErrorStanza(sender, receiver, stanza);
         }

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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -23,6 +23,7 @@
 import org.apache.vysper.compliance.SpecCompliant;
 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.model.CollectionNode;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
@@ -100,7 +101,7 @@
             return errorStanzaGenerator.generateNoNodeErrorStanza(sender, 
receiver, stanza);
         }
 
-        if(!node.isSubscribed(sender)) {
+        if(!node.isAuthorized(sender, PubSubPrivilege.PUBLISH)) {
             // not enough privileges to publish - error condition 1 (7.1.3)
             return 
errorStanzaGenerator.generateInsufficientPrivilegesErrorStanza(sender, 
receiver, stanza);
         }

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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -23,6 +23,7 @@
 import org.apache.vysper.compliance.SpecCompliant;
 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.model.CollectionNode;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
@@ -85,7 +86,7 @@
             return errorStanzaGenerator.generateNoNodeErrorStanza(sender, 
receiver, stanza);
         }
         
-        if(!node.isSubscribed(sender)) {
+        if(!node.isAuthorized(sender, PubSubPrivilege.DELETE)) {
             return 
errorStanzaGenerator.generateInsufficientPrivilegesErrorStanza(sender, 
receiver, stanza);
         }
         

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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -70,10 +70,11 @@
      * @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.
      */
-    public LeafNode createNode(Entity serverJID, String nodeName, String 
givenName) throws DuplicateNodeException {
+    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();
@@ -83,7 +84,8 @@
         }
 
         collectionNodeStorage.storeNode(node);
-
+        
+        node.addOwner(creator);
         return node;
     }
     
@@ -92,11 +94,12 @@
      * 
      * @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) throws 
DuplicateNodeException {
-        return this.createNode(serverJID, nodeName, null);
+    public LeafNode createNode(Entity serverJID, String nodeName, Entity 
creator) throws DuplicateNodeException {
+        return this.createNode(serverJID, nodeName, null, creator);
     }
 
     /**

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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -25,6 +25,7 @@
 import org.apache.vysper.xmpp.addressing.Entity;
 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.SubscriberPayloadNotificationVisitor;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.feature.PubsubFeatures;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeInMemoryStorageProvider;
@@ -227,7 +228,30 @@
         storage.initialize(this);
     }
 
+    /**
+     * Removes this node from the storage.
+     */
     public void delete() {
         this.storage.delete(this.name);
     }
+
+    /**
+     * Adds the given entity to the owner list.
+     * 
+     * @param owner
+     */
+    public void addOwner(Entity owner) {
+        this.storage.addOwner(name,owner);
+    }
+
+    /**
+     * Check whether the given JID is allowed to perform the requested task.
+     * @param sender
+     * @param requestedAffiliation
+     * @return
+     */
+    public boolean isAuthorized(Entity sender, PubSubAffiliation 
requestedAffiliation) {
+        PubSubAffiliation affiliation = this.storage.getAffiliation(name, 
sender);
+        return affiliation.compareTo(requestedAffiliation) >= 0;
+    }
 }

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeInMemoryStorageProvider.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/storageprovider/LeafNodeInMemoryStorageProvider.java?rev=801238&r1=801237&r2=801238&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeInMemoryStorageProvider.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeInMemoryStorageProvider.java
 Wed Aug  5 14:15:12 2009
@@ -19,11 +19,13 @@
  */
 package 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider;
 
+import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
 
 import org.apache.vysper.xmpp.addressing.Entity;
 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.SubscriberVisitor;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 import 
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.PayloadItem;
@@ -37,6 +39,8 @@
  */
 public class LeafNodeInMemoryStorageProvider implements 
LeafNodeStorageProvider {
 
+    // The node owners
+    protected Map<String,Map<Entity, PubSubAffiliation>> nodeAffiliations;
     // stores subscribers to a node, access via subid
     protected Map<String,Map<String, Entity>> nodeSubscribers;
     // stores messages to a node, access via itemid
@@ -48,6 +52,7 @@
     public LeafNodeInMemoryStorageProvider() {
         this.nodeSubscribers = new TreeMap<String, Map<String, Entity>>();
         this.nodeMessages = new TreeMap<String, Map<String, PayloadItem>>();
+        this.nodeAffiliations = new TreeMap<String, Map<Entity, 
PubSubAffiliation>>();
     }
 
     /**
@@ -161,6 +166,7 @@
     public void initialize(LeafNode leafNode) {
         nodeMessages.put(leafNode.getName(), new TreeMap<String, 
PayloadItem>());
         nodeSubscribers.put(leafNode.getName(), new TreeMap<String, Entity>());
+        nodeAffiliations.put(leafNode.getName(), new HashMap<Entity, 
PubSubAffiliation>());
     }
 
     /**
@@ -169,5 +175,25 @@
     public void delete(String name) {
         nodeMessages.remove(name);
         nodeSubscribers.remove(name);
+        nodeAffiliations.remove(name);
+    }
+
+    /**
+     * Add the entity to the owner list of the given node.
+     * The owner is stored as bare JID.
+     */
+    public void addOwner(String nodeName, Entity owner) {
+        Map<Entity, PubSubAffiliation> affils = 
this.nodeAffiliations.get(nodeName);
+        Entity bareOwner = owner.getBareJID();
+        affils.put(bareOwner, PubSubAffiliation.OWNER);
+    }
+
+    /**
+     * Returns the affiliation of the entity to the node. Only the bare JID 
will be compared.
+     */
+    public PubSubAffiliation getAffiliation(String nodeName, Entity entity) {
+        PubSubAffiliation psa = this.nodeAffiliations.get(nodeName)
+                                                     .get(entity.getBareJID());
+        return psa != null ? psa : PubSubAffiliation.NONE; // NONE if there is 
no affiliation known.
     }
 }

Modified: 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeStorageProvider.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/storageprovider/LeafNodeStorageProvider.java?rev=801238&r1=801237&r2=801238&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeStorageProvider.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/storageprovider/LeafNodeStorageProvider.java
 Wed Aug  5 14:15:12 2009
@@ -22,6 +22,7 @@
 import org.apache.vysper.storage.StorageProvider;
 import org.apache.vysper.xmpp.addressing.Entity;
 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.SubscriberVisitor;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 import org.apache.vysper.xmpp.xmlfragment.XMLElement;
@@ -136,4 +137,15 @@
      */
     public void delete(String name);
 
+    /**
+     * Add the entity to the owner list of the given node.
+     * @param owner
+     */
+    public void addOwner(String nodeName, Entity owner);
+
+    /**
+     * Returns the affiliation of the entity to the node identified by 
nodeName.
+     */
+    public PubSubAffiliation getAffiliation(String nodeName, Entity entity);
+
 }

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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -74,7 +74,7 @@
     }
     
     public void testInfoRequestForANode() throws Exception {
-        root.createNode(serverEntity, "news", "News");
+        root.createNode(serverEntity, "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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -55,8 +55,8 @@
     }
     
     public void testSomeItems() throws Exception {
-        root.createNode(serverEntity, "news", "News");
-        root.createNode(serverEntity, "blogs", "Blogs");
+        root.createNode(serverEntity, "news", "News", client);
+        root.createNode(serverEntity, "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");
+        root.createNode(serverEntity, "news", "News", client);
         
         DefaultDiscoInfoStanzaGenerator sg = 
(DefaultDiscoInfoStanzaGenerator)getDefaultStanzaGenerator();
         Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(), 
"id123", "news");
@@ -126,7 +126,7 @@
     }
     
     public void testNodeItemsSome() throws Exception {
-        LeafNode node = root.createNode(serverEntity, "news", "News");
+        LeafNode node = root.createNode(serverEntity, "news", "News", client);
         
         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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -85,7 +85,7 @@
     
     public void testCreateDuplicate() throws Exception {
         String testNode = "test";
-        root.createNode(pubsubService, testNode);
+        root.createNode(pubsubService, 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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -43,7 +43,7 @@
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        node = root.createNode(serverEntity, "news", "Node used for testing 
purposes");
+        node = root.createNode(serverEntity, "news", "Node used for testing 
purposes", client);
     }
     
     @Override

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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -44,7 +44,7 @@
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        node = root.createNode(serverEntity, "news", "Node used for testing 
purposes");
+        node = root.createNode(serverEntity, "news", "Node used for testing 
purposes", client);
     }
     
     @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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -42,7 +42,7 @@
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        node = root.createNode(serverEntity, "news", "Node used for testing 
purposes");
+        node = root.createNode(serverEntity, "news", "Node used for testing 
purposes", client);
     }
     
     class DefaultUnsubscribeStanzaGenerator extends AbstractStanzaGenerator {

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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -72,8 +72,8 @@
 
     public void testDelete() throws Exception {
         String testNode = "test";
-        LeafNode node = root.createNode(pubsubService, testNode);
-        node.subscribe("someid", client); // make the client subscriber 
(=owner)
+        LeafNode node = root.createNode(pubsubService, testNode, client);
+        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"));
         node.subscribe("otherid3", new EntityImpl("anakin", "starwars.com", 
"deathstar"));
@@ -100,12 +100,13 @@
     
     public void testDeleteNotAuth() throws Exception {
         String testNode = "test";
-        root.createNode(pubsubService, testNode);
+        root.createNode(pubsubService, testNode, client);
         
         assertNotNull(root.find(testNode));
+        Entity clientNotAuthorized = new EntityImpl("darthvader", 
"deathstar.tld", null);
         
         AbstractStanzaGenerator sg = getDefaultStanzaGenerator();
-        Stanza stanza = sg.getStanza(client, pubsubService, "id123", testNode);
+        Stanza stanza = sg.getStanza(clientNotAuthorized, pubsubService, 
"id123", testNode);
         ResponseStanzaContainer result = sendStanza(stanza, true);
         assertTrue(result.hasResponse());
         IQStanza response = new IQStanza(result.getResponseStanza());

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=801238&r1=801237&r2=801238&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 14:15:12 2009
@@ -31,25 +31,28 @@
 public class CollectionNodeTestCase extends TestCase  {
 
     protected CollectionNode collection;
+    protected Entity owner;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
         collection = new CollectionNode();
         collection.initialize();
+        
+        owner = new EntityImpl("owner","vysper.org", null);
     }
 
     public void testCreateNode() throws Exception {
         Entity jid = new EntityImpl(null, "pubsub.vysper.org", null);
-        LeafNode test1 = collection.createNode(jid, "test1");
+        LeafNode test1 = collection.createNode(jid, "test1", owner);
         assertNotNull(test1);
     }
 
     public void testCreateNodeTwice() {
         Entity jid = new EntityImpl(null, "pubsub.vysper.org", null);
         try {
-            collection.createNode(jid, "test1");
-            collection.createNode(jid, "test1");
+            collection.createNode(jid, "test1", owner);
+            collection.createNode(jid, "test1", owner);
             fail();
         } catch(DuplicateNodeException e) {
             // ok
@@ -58,7 +61,7 @@
 
     public void testInsertFind() throws Exception {
         Entity jid = new EntityImpl(null, "pubsub.vysper.org", null);
-        LeafNode insertedNode = collection.createNode(jid, "test1");
+        LeafNode insertedNode = collection.createNode(jid, "test1", owner);
         LeafNode foundNode = collection.find("test1");
         assertEquals(insertedNode, foundNode);
     }


Reply via email to