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);