Author: ngn
Date: Mon Jun  7 09:14:46 2010
New Revision: 952159

URL: http://svn.apache.org/viewvc?rev=952159&view=rev
Log:
Fixing problem where item elements was sent to subscribers using the wrong 
namespace (VYSPER-210)

Modified:
    
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishHandler.java

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=952159&r1=952158&r2=952159&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
 Mon Jun  7 09:14:46 2010
@@ -21,7 +21,11 @@ package org.apache.vysper.xmpp.modules.e
 
 import org.apache.vysper.compliance.SpecCompliance;
 import org.apache.vysper.compliance.SpecCompliant;
+import org.apache.vysper.xml.fragment.Attribute;
 import org.apache.vysper.xml.fragment.XMLElement;
+import org.apache.vysper.xml.fragment.XMLElementBuilder;
+import org.apache.vysper.xml.fragment.XMLFragment;
+import org.apache.vysper.xml.fragment.XMLText;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.delivery.StanzaRelay;
 import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.PubSubPrivilege;
@@ -108,17 +112,25 @@ public class PubSubPublishHandler extend
             return 
errorStanzaGenerator.generateInsufficientPrivilegesErrorStanza(sender, 
serverJID, stanza);
         }
 
+            
+        StanzaRelay relay = serverRuntimeContext.getStanzaRelay();
+        
+        XMLElementBuilder eventItemBuilder = new XMLElementBuilder("item", 
NamespaceURIs.XEP0060_PUBSUB_EVENT);
         if(strID == null) {
             strID = idGenerator.create();
-            // wrap a new item element with the id attribute
-            StanzaBuilder itemBuilder = new StanzaBuilder("item");
-            itemBuilder.addAttribute("id", strID);
-            itemBuilder.addPreparedElement(item.getFirstInnerElement());
-            item = itemBuilder.build();
         }
-
-        StanzaRelay relay = serverRuntimeContext.getStanzaRelay();
-        node.publish(sender, relay, strID, item);
+        eventItemBuilder.addAttribute("id", strID);
+        
+        for(XMLFragment fragment : item.getInnerFragments()) {
+            if(fragment instanceof XMLElement) {
+                eventItemBuilder.addPreparedElement((XMLElement) fragment);
+            } else {
+                // XMLText
+                eventItemBuilder.addText(((XMLText)fragment).getText());
+            }
+        }
+            
+        node.publish(sender, relay, strID, eventItemBuilder.build());
 
         buildSuccessStanza(sb, nodeName, strID);
 


Reply via email to