You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by be...@apache.org on 2010/04/27 21:43:02 UTC

svn commit: r938617 - in /mina/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/vysper/...

Author: berndf
Date: Tue Apr 27 19:43:02 2010
New Revision: 938617

URL: http://svn.apache.org/viewvc?rev=938617&view=rev
Log:
VYSPER-200: make pubsub a component, use proper helper class for IQ-result generation

Modified:
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsHandler.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsHandler.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerManageAffiliationsHandler.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
    mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java

Modified: mina/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/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java Tue Apr 27 19:43:02 2010
@@ -23,6 +23,9 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.vysper.compliance.SpecCompliant;
+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.DefaultDiscoAwareModule;
 import org.apache.vysper.xmpp.modules.core.base.handler.MessageHandler;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.PubSubCreateNodeHandler;
@@ -37,19 +40,11 @@ import org.apache.vysper.xmpp.modules.ex
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.CollectionNodeStorageProvider;
 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;
-import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoElement;
-import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest;
-import org.apache.vysper.xmpp.modules.servicediscovery.management.Item;
-import org.apache.vysper.xmpp.modules.servicediscovery.management.ItemRequestListener;
-import org.apache.vysper.xmpp.modules.servicediscovery.management.ServerInfoRequestListener;
-import org.apache.vysper.xmpp.modules.servicediscovery.management.ServiceDiscoveryRequestException;
-import org.apache.vysper.xmpp.protocol.HandlerDictionary;
-import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
-import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.StanzaHandler;
+import org.apache.vysper.xmpp.modules.servicediscovery.management.*;
+import org.apache.vysper.xmpp.protocol.*;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.components.Component;
+import org.apache.vysper.xmpp.server.components.ComponentStanzaProcessor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -59,25 +54,40 @@ import org.slf4j.LoggerFactory;
  * @author The Apache MINA Project (http://mina.apache.org)
  */
 @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 {
+public class PublishSubscribeModule
+        extends DefaultDiscoAwareModule
+        implements Component, ComponentInfoRequestListener, ItemRequestListener {
 
     // The configuration of the service
     private PubSubServiceConfiguration serviceConfiguration = null;
     // for debugging
     private final Logger logger = LoggerFactory.getLogger(PublishSubscribeModule.class);
 
+    private ComponentStanzaProcessor stanzaProcessor;
+    private ServerRuntimeContext serverRuntimeContext;
+
+    /**
+     * the subdomain this module becomes know under.
+     */
+    protected String subdomain = "pubsub";
+
+    /**
+     * the domain derived from the subdomain and the server domain
+     */
+    protected Entity fullDomain;
+
     /**
      * Create a new PublishSubscribeModule together with a new root-collection node.
      */
     public PublishSubscribeModule() {
-        this.serviceConfiguration = new PubSubServiceConfiguration(new CollectionNode());
+        this(new PubSubServiceConfiguration(new CollectionNode()));
     }
 
     /**
      * Create a new PublishSubscribeModule together with a supplied root-collection node.
      */
-    public PublishSubscribeModule(PubSubServiceConfiguration servcieConfiguration) {
-        this.serviceConfiguration = servcieConfiguration;
+    public PublishSubscribeModule(PubSubServiceConfiguration serviceConfiguration) {
+        this.serviceConfiguration = serviceConfiguration;
     }
 
     /**
@@ -87,6 +97,14 @@ public class PublishSubscribeModule exte
     public void initialize(ServerRuntimeContext serverRuntimeContext) {
         super.initialize(serverRuntimeContext);
 
+        this.serverRuntimeContext = serverRuntimeContext;
+        
+        try {
+            fullDomain = EntityImpl.parse(subdomain + "." + serverRuntimeContext.getServerEnitity().getDomain());
+        } catch (EntityFormatException e) {
+            throw new RuntimeException("failed to initialize PubSub domain", e);
+        }
+
         CollectionNodeStorageProvider collectionNodeStorageProvider = (CollectionNodeStorageProvider) serverRuntimeContext.getStorageProvider(CollectionNodeStorageProvider.class);
         LeafNodeStorageProvider leafNodeStorageProvider = (LeafNodeStorageProvider) serverRuntimeContext.getStorageProvider(LeafNodeStorageProvider.class);
         
@@ -102,6 +120,12 @@ public class PublishSubscribeModule exte
             serviceConfiguration.setLeafNodeStorageProvider(leafNodeStorageProvider);
         }
         
+        ComponentStanzaProcessor processor = new ComponentStanzaProcessor(serverRuntimeContext);
+        addPubsubHandlers(processor);
+        addPubsubOwnerHandlers(processor);
+        processor.addDictionary(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_EVENT, new MessageHandler()));
+        stanzaProcessor = processor;
+
         this.serviceConfiguration.setServerJID(serverRuntimeContext.getServerEnitity());
         this.serviceConfiguration.initialize();
     }
@@ -123,24 +147,18 @@ public class PublishSubscribeModule exte
     }
 
     /**
-     * Make this object available for disco#info requests.
-     */
-    @Override
-    protected void addServerInfoRequestListeners(List<ServerInfoRequestListener> serverInfoRequestListeners) {
-        serverInfoRequestListeners.add(this);
-    }
-
-    /**
      * Implements the getServerInfosFor method from the {@link ServerInfoRequestListener} interface.
      * Makes this modules available via disco#info as "pubsub service" in the pubsub namespace.
      * 
-     * @see ServerInfoRequestListener#getServerInfosFor(InfoRequest)
+     * @see ComponentInfoRequestListener#getComponentInfosFor(org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest) 
      */
-    public List<InfoElement> getServerInfosFor(InfoRequest request) throws ServiceDiscoveryRequestException {
+    public List<InfoElement> getComponentInfosFor(InfoRequest request) throws ServiceDiscoveryRequestException {
+        if (!fullDomain.getDomain().equals(request.getTo().getDomain())) return null;
+        
         CollectionNode root = serviceConfiguration.getRootNode();
         List<InfoElement> infoElements = new ArrayList<InfoElement>();
         if(request.getNode() == null || request.getNode().length() == 0) {
-            infoElements.add(new Identity("pubsub", "service"));
+            infoElements.add(new Identity("pubsub", "service", "Publish-Subscribe"));
             infoElements.add(new Feature(NamespaceURIs.XEP0060_PUBSUB));
         } else {
             LeafNode node = root.find(request.getNode());
@@ -149,6 +167,11 @@ public class PublishSubscribeModule exte
         return infoElements;
     }
 
+    @Override
+    protected void addComponentInfoRequestListeners(List<ComponentInfoRequestListener> componentInfoRequestListeners) {
+        componentInfoRequestListeners.add(this);
+    }
+
     /**
      * Make this object available for disco#items requests.
      */
@@ -168,6 +191,12 @@ public class PublishSubscribeModule exte
         List<Item> items = null;
         
         if(request.getNode() == null || request.getNode().length() == 0) {
+            if (serverRuntimeContext.getServerEnitity().equals(request.getTo())) {
+                // top level item request. for example return entry for "pubsub.vysper.org" on request for "vysper.org"
+                List<Item> componentItem = new ArrayList<Item>();
+                componentItem.add(new Item(fullDomain));
+                return componentItem;
+            }
             ServiceDiscoItemsVisitor nv = new ServiceDiscoItemsVisitor(serviceConfiguration);
             root.acceptNodes(nv);
             items = nv.getNodeItemList();
@@ -182,33 +211,21 @@ public class PublishSubscribeModule exte
     }
 
     /**
-     * Registers the handlers for the various stanza types known to this pubsub implementation.
-     * 
-     * @see DefaultModule#addHandlerDictionaries(List<HandlerDictionary> dictionary)
-     */
-    @Override
-    protected void addHandlerDictionaries(List<HandlerDictionary> dictionary) {
-        addPubsubHandlers(dictionary);
-        addPubsubOwnerHandlers(dictionary);
-        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_EVENT, new MessageHandler()));
-    }
-
-    /**
      * Inserts the handlers for the pubsub#owner namespace into the HandlerDictionary.
      * @param dictionary the list to which the handlers should be appended.
      */
-    private void addPubsubOwnerHandlers(List<HandlerDictionary> dictionary) {
+    private void addPubsubOwnerHandlers(ComponentStanzaProcessor dictionary) {
         ArrayList<StanzaHandler> pubsubOwnerHandlers = new ArrayList<StanzaHandler>();
         pubsubOwnerHandlers.add(new PubSubOwnerConfigureNodeHandler(serviceConfiguration));
         pubsubOwnerHandlers.add(new PubSubOwnerDeleteNodeHandler(serviceConfiguration));
-        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_OWNER, pubsubOwnerHandlers));
+        dictionary.addDictionary(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_OWNER, pubsubOwnerHandlers));
     }
 
     /**
      * Inserts the handlers for the pubsub namespace into the HandlerDictionary.
      * @param dictionary the list to which the handlers should be appended.
      */
-    private void addPubsubHandlers(List<HandlerDictionary> dictionary) {
+    private void addPubsubHandlers(ComponentStanzaProcessor dictionary) {
         ArrayList<StanzaHandler> pubsubHandlers = new ArrayList<StanzaHandler>();
         pubsubHandlers.add(new PubSubSubscribeHandler(serviceConfiguration));
         pubsubHandlers.add(new PubSubUnsubscribeHandler(serviceConfiguration));
@@ -216,6 +233,14 @@ public class PublishSubscribeModule exte
         pubsubHandlers.add(new PubSubCreateNodeHandler(serviceConfiguration));
         pubsubHandlers.add(new PubSubRetrieveSubscriptionsHandler(serviceConfiguration));
         pubsubHandlers.add(new PubSubRetrieveAffiliationsHandler(serviceConfiguration));
-        dictionary.add(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, pubsubHandlers));
+        dictionary.addDictionary(new NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, pubsubHandlers));
+    }
+
+    public String getSubdomain() {
+        return subdomain;
+    }
+
+    public StanzaProcessor getStanzaProcessor() {
+        return stanzaProcessor;
     }
 }

Modified: mina/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/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeHandler.java Tue Apr 27 19:43:02 2010
@@ -78,9 +78,7 @@ public class PubSubCreateNodeHandler ext
         
         Entity sender = extractSenderJID(stanza, sessionContext);
 
-        String iqStanzaID = stanza.getAttributeValue("id");
-
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
 
         String nodeName = extractNodeName(stanza);
 

Modified: mina/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/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java Tue Apr 27 19:43:02 2010
@@ -87,9 +87,7 @@ public class PubSubPublishHandler extend
         
         Entity sender = extractSenderJID(stanza, sessionContext);
 
-        String iqStanzaID = stanza.getAttributeValue("id");
-
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
         sb.startInnerElement("pubsub", NamespaceURIs.XEP0060_PUBSUB);
 
         XMLElement publish = stanza.getFirstInnerElement().getFirstInnerElement(); // pubsub/publish

Modified: mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsHandler.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsHandler.java Tue Apr 27 19:43:02 2010
@@ -76,7 +76,7 @@ public class PubSubRetrieveAffiliationsH
         Entity sender = extractSenderJID(stanza, sessionContext);
         String iqStanzaID = stanza.getAttributeValue("id");
 
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
         sb.startInnerElement("pubsub", NamespaceURIs.XEP0060_PUBSUB);
         
         List<AffiliationItem> subscriptions = collectAffiliations(root, sender);

Modified: mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsHandler.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsHandler.java Tue Apr 27 19:43:02 2010
@@ -78,7 +78,7 @@ public class PubSubRetrieveSubscriptions
         Entity sender = extractSenderJID(stanza, sessionContext);
         String iqStanzaID = stanza.getAttributeValue("id");
 
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
         sb.startInnerElement("pubsub", NamespaceURIs.XEP0060_PUBSUB);
         String nodeName = extractNodeName(stanza);
         

Modified: mina/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/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeHandler.java Tue Apr 27 19:43:02 2010
@@ -91,9 +91,7 @@ public class PubSubSubscribeHandler exte
         Entity sender = extractSenderJID(stanza, sessionContext);
         Entity subJID = null;
 
-        String iqStanzaID = stanza.getAttributeValue("id");
-
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
         sb.startInnerElement("pubsub", NamespaceURIs.XEP0060_PUBSUB);
 
         XMLElement sub = stanza.getFirstInnerElement().getFirstInnerElement(); // pubsub/subscribe

Modified: mina/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/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeHandler.java Tue Apr 27 19:43:02 2010
@@ -86,9 +86,7 @@ public class PubSubUnsubscribeHandler ex
         Entity sender = extractSenderJID(stanza, sessionContext);
         Entity subJID = null;
 
-        String iqStanzaID = stanza.getAttributeValue("id");
-
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
         sb.startInnerElement("pubsub", NamespaceURIs.XEP0060_PUBSUB);
 
         XMLElement unsub = stanza.getFirstInnerElement().getFirstInnerElement(); // pubsub/unsubscribe
@@ -117,7 +115,7 @@ public class PubSubUnsubscribeHandler ex
 
         if(strSubID == null) {
             try {
-                if(node.unsubscribe(subJID) == false) {
+                if(!node.unsubscribe(subJID)) {
                     // has no subscription (6.2.3.2)
                     return errorStanzaGenerator.generateNoSuchSubscriberErrorStanza(sender, serverJID, stanza);
                 }
@@ -126,7 +124,7 @@ public class PubSubUnsubscribeHandler ex
                 return errorStanzaGenerator.generateSubIDRequiredErrorStanza(sender, serverJID, stanza);
             }
         } else {
-            if(node.unsubscribe(strSubID, subJID) == false) {
+            if(!node.unsubscribe(strSubID, subJID)) {
                 // subID not valid (6.2.3.5)
                 return errorStanzaGenerator.generateSubIDNotValidErrorStanza(sender, serverJID, stanza);
             }

Modified: mina/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/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerDeleteNodeHandler.java Tue Apr 27 19:43:02 2010
@@ -80,8 +80,7 @@ public class PubSubOwnerDeleteNodeHandle
         
         Entity sender = extractSenderJID(stanza, sessionContext);
         
-        String iqStanzaID = stanza.getAttributeValue("id");
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
         String nodeName = extractNodeName(stanza);
         LeafNode node = root.find(nodeName);
         

Modified: mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerManageAffiliationsHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerManageAffiliationsHandler.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerManageAffiliationsHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerManageAffiliationsHandler.java Tue Apr 27 19:43:02 2010
@@ -87,8 +87,7 @@ public class PubSubOwnerManageAffiliatio
 
         Entity sender = extractSenderJID(stanza, sessionContext);
 
-        String iqStanzaID = stanza.getAttributeValue("id");
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
         sb.startInnerElement("pubsub", NamespaceURIs.XEP0060_PUBSUB_OWNER);
         
         String nodeName = extractNodeName(stanza);
@@ -127,8 +126,7 @@ public class PubSubOwnerManageAffiliatio
         CollectionNode root = serviceConfiguration.getRootNode();
         Entity sender = extractSenderJID(stanza, sessionContext);
 
-        String iqStanzaID = stanza.getAttributeValue("id");
-        StanzaBuilder sb = StanzaBuilder.createIQStanza(serverJID, sender, IQStanzaType.RESULT, iqStanzaID);
+        StanzaBuilder sb = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
         sb.startInnerElement("pubsub", NamespaceURIs.XEP0060_PUBSUB_OWNER);
 
         String nodeName = extractNodeName(stanza);
@@ -198,4 +196,4 @@ public class PubSubOwnerManageAffiliatio
         affiliations = memberAffiliationVisitor.getAffiliations();
         return affiliations;
     }
-}
\ No newline at end of file
+}

Modified: mina/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/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java Tue Apr 27 19:43:02 2010
@@ -70,7 +70,7 @@ public abstract class AbstractPublishSub
     protected void setUp() throws Exception {
         super.setUp();
 
-        serverEntity = new EntityImpl(null, "pubsub.vysper.org", null);
+        serverEntity = new EntityImpl(null, "vysper.org", null);
         sessionContext = createTestSessionContext(serverEntity);
 
         root = new CollectionNode();

Modified: mina/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/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java?rev=938617&r1=938616&r2=938617&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java Tue Apr 27 19:43:02 2010
@@ -185,8 +185,7 @@ public class PubSubDiscoItemsTestCase ex
         boolean bItem2 = false;
         boolean bItem3 = false;
         for(XMLElement el : inner) {
-            if(el.getName().equals("item") 
-                    && el.getAttributeValue("jid").equals(serverEntity.getFullQualifiedName())) {
+            if(el.getName().equals("item") && el.getAttributeValue("jid").equals(pubsubService.getFullQualifiedName())) {
                 if(!bItem1 && el.getAttributeValue("name").equals("itemid1")) {
                     bItem1 = true;
                 } else if(bItem1 && !bItem2 && el.getAttributeValue("name").equals("itemid2")) {