You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2010/05/16 22:39:31 UTC
svn commit: r944906 [1/2] - in /mina/vysper/trunk:
nbxml/src/main/java/org/apache/vysper/xml/fragment/
server/core/src/main/java/org/apache/vysper/xmpp/authorization/
server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/
server/co...
Author: ngn
Date: Sun May 16 20:39:29 2010
New Revision: 944906
URL: http://svn.apache.org/viewvc?rev=944906&view=rev
Log:
Basic implementation of MUC IQ hander
Initial implementation of "Kicking an Occupant" MUC use case (VYSPER-124)
Fixing some remaining ns declarations (VYSPER-196)
Added:
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/IqAdminItem.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/MucUserPresenceItem.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/UserX.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ModeratorKickOccupantTestCase.java
Removed:
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/Item.java
Modified:
mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java
mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java
mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java
mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCHandlerHelper.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCMessageHandler.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeNickTestCase.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeStatusTestCase.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java
mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/XTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/SubscriberPayloadNotificationVisitor.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/owner/PubSubOwnerManageAffiliationsHandler.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubCreateNodeTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubPublishTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveAffiliationsTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubRetrieveSubscriptionsTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubSubscribeTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/PubSubUnsubscribeTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubConfigureNodeTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubDeleteNodeTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerModifyAffiliationsTestCase.java
mina/vysper/trunk/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/handler/owner/PubSubOwnerRetrieveAffiliationsTestCase.java
Modified: mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java (original)
+++ mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/AbstractXMLElementBuilder.java Sun May 16 20:39:29 2010
@@ -80,7 +80,6 @@ public abstract class AbstractXMLElement
private void startNewElement(String name, String namespaceURI, String namespacePrefix) {
// TODO assert that name does not contain namespace (":")
- // TODO handle the namespace, given by URI, currently always NULL in XMLElement constructors
ElementStruct element = new ElementStruct();
element.attributes = new ArrayList<Attribute>();
element.namespaces = new HashMap<String, String>();
Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AuthorizationResponses.java Sun May 16 20:39:29 2010
@@ -42,7 +42,7 @@ public class AuthorizationResponses {
public Stanza getFailure(SASLFailureType failureType) {
return new StanzaBuilder("failure", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL)
- .startInnerElement(failureType.value()).endInnerElement().build();
+ .startInnerElement(failureType.value(), NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL).endInnerElement().build();
}
public Stanza getFailureMalformedRequest() {
return getFailure(SASLFailureType.MALFORMED_REQUEST);
Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java Sun May 16 20:39:29 2010
@@ -83,7 +83,7 @@ public class BindIQHandler extends Defau
private Stanza bindError(IQStanza stanza, SessionContext sessionContext) {
StanzaBuilder stanzaBuilder =
StanzaBuilder.createIQStanza(null, null, IQStanzaType.ERROR, stanza.getID()).
- startInnerElement("error").
+ startInnerElement("error", NamespaceURIs.JABBER_CLIENT).
addAttribute("type", "cancel").
startInnerElement("not-allowed", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).
endInnerElement();
Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0049_privatedata/PrivateDataIQHandler.java Sun May 16 20:39:29 2010
@@ -131,7 +131,7 @@ public class PrivateDataIQHandler extend
StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(stanza.getTo(), stanza.getFrom(), IQStanzaType.RESULT, stanza.getID());
if (privateDataXML == null) {
- stanzaBuilder.startInnerElement(x.getName());
+ stanzaBuilder.startInnerElement(x.getName(), x.getNamespaceURI());
for (Attribute a : x.getAttributes()) {
stanzaBuilder.addAttribute(a);
}
Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0054_vcardtemp/VcardTempIQHandler.java Sun May 16 20:39:29 2010
@@ -117,7 +117,7 @@ public class VcardTempIQHandler extends
// keep it like it is
} else {
stanzaBuilder.
- startInnerElement("error").addAttribute("type", "cancel").
+ startInnerElement("error", NamespaceURIs.JABBER_CLIENT).addAttribute("type", "cancel").
startInnerElement("item-not-found", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).
endInnerElement().
endInnerElement();
Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/response/ServerErrorResponses.java Sun May 16 20:39:29 2010
@@ -114,7 +114,7 @@ public class ServerErrorResponses
}
// error element
- responseBuilder.startInnerElement("error")
+ responseBuilder.startInnerElement("error", NamespaceURIs.JABBER_CLIENT)
.addAttribute("type", type.value());
// insert defined error condition relating to the stanza error type
@@ -141,7 +141,7 @@ public class ServerErrorResponses
public Stanza getSASLFailure(SASLFailureType failureType) {
StanzaBuilder stanzaBuilder = new StanzaBuilder("failure", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL);
if (failureType != null) {
- stanzaBuilder.startInnerElement(failureType.toString()).endInnerElement();
+ stanzaBuilder.startInnerElement(failureType.toString(), NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SASL).endInnerElement();
}
return stanzaBuilder.build();
}
Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java Sun May 16 20:39:29 2010
@@ -55,7 +55,7 @@ public class StanzaBuilder extends Abstr
stanzaBuilder.addAttribute("from", from.getFullQualifiedName());
stanzaBuilder.addAttribute("to", to.getFullQualifiedName());
if(lang != null) stanzaBuilder.addAttribute(NamespaceURIs.XML, "lang", lang);
- if(body != null) stanzaBuilder.startInnerElement("body").addText(body).endInnerElement();
+ if(body != null) stanzaBuilder.startInnerElement("body", NamespaceURIs.JABBER_CLIENT).addText(body).endInnerElement();
return stanzaBuilder;
}
@@ -82,10 +82,10 @@ public class StanzaBuilder extends Abstr
if (lang != null) stanzaBuilder.addAttribute(NamespaceURIs.XML, "lang", lang);
if (type != null) stanzaBuilder.addAttribute("type", type.value());
if (show != null) {
- stanzaBuilder.startInnerElement("show").addText(show).endInnerElement();
+ stanzaBuilder.startInnerElement("show", NamespaceURIs.JABBER_CLIENT).addText(show).endInnerElement();
}
if (status != null) {
- stanzaBuilder.startInnerElement("status").addText(status).endInnerElement();
+ stanzaBuilder.startInnerElement("status", NamespaceURIs.JABBER_CLIENT).addText(status).endInnerElement();
}
return stanzaBuilder;
}
Modified: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java (original)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java Sun May 16 20:39:29 2010
@@ -50,7 +50,7 @@ public class IQHandlerTestCase extends T
stanzaBuilder.addAttribute("type", "get");
// missing stanzaBuilder.addAttribute("to", "test@example.com");
stanzaBuilder.addAttribute("id", "anyway");
- stanzaBuilder.startInnerElement("inner").endInnerElement();
+ stanzaBuilder.startInnerElement("inner", NamespaceURIs.JABBER_SERVER).endInnerElement();
TestSessionContext sessionContext = this.sessionContext;
sessionContext.setServerToServer();
@@ -126,8 +126,8 @@ public class IQHandlerTestCase extends T
StanzaBuilder stanzaTwoSubs = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT);
stanzaTwoSubs.addAttribute("id", "1");
stanzaTwoSubs.addAttribute("type", type);
- stanzaTwoSubs.startInnerElement("firstSub").endInnerElement();
- stanzaTwoSubs.startInnerElement("secondSub").endInnerElement();
+ stanzaTwoSubs.startInnerElement("firstSub", NamespaceURIs.JABBER_CLIENT).endInnerElement();
+ stanzaTwoSubs.startInnerElement("secondSub", NamespaceURIs.JABBER_CLIENT).endInnerElement();
assertIQError(stanzaTwoSubs.build());
}
@@ -142,7 +142,7 @@ public class IQHandlerTestCase extends T
StanzaBuilder stanzaBuilder = new StanzaBuilder("iq", NamespaceURIs.JABBER_CLIENT);
stanzaBuilder.addAttribute("id", "1");
stanzaBuilder.addAttribute("type", "get");
- stanzaBuilder.startInnerElement("getRequest").endInnerElement();
+ stanzaBuilder.startInnerElement("getRequest", NamespaceURIs.JABBER_CLIENT).endInnerElement();
TestIQHandler iqHandler = new TestIQHandler();
ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanzaBuilder.build(), sessionContext.getServerRuntimeContext(), true, sessionContext, null);
Modified: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java (original)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java Sun May 16 20:39:29 2010
@@ -75,7 +75,7 @@ public class MessageHandlerRelayTestCase
StanzaBuilder stanzaBuilder = new StanzaBuilder("message", NamespaceURIs.JABBER_SERVER);
// receiver@vysper.org, NOT receiver@vysper.org/resourceID
stanzaBuilder.addAttribute("to", receiverUser.getEntity().getBareJID().getFullQualifiedName());
- stanzaBuilder.startInnerElement("timestamp").addAttribute("value", timestamp).endInnerElement();
+ stanzaBuilder.startInnerElement("timestamp", NamespaceURIs.JABBER_SERVER).addAttribute("value", timestamp).endInnerElement();
senderSessionContext.setClientToServer();
Modified: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java (original)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java Sun May 16 20:39:29 2010
@@ -20,6 +20,7 @@
package org.apache.vysper.xmpp.modules.core.base.handler;
import org.apache.vysper.xmpp.modules.core.im.handler.PresenceHandlerBaseTestCase;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.stanza.*;
@@ -30,7 +31,7 @@ public class RelayingIQHandlerTestCase e
protected RelayingIQHandler relayingIQHandler = new RelayingIQHandler();
public void testIQClientToClient_Outbound_NotSubscribed() {
- Stanza iqStanza = StanzaBuilder.createIQStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntityFQ(), IQStanzaType.GET, "test").startInnerElement("mandatory").build();
+ Stanza iqStanza = StanzaBuilder.createIQStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntityFQ(), IQStanzaType.GET, "test").startInnerElement("mandatory", NamespaceURIs.JABBER_CLIENT).build();
ResponseStanzaContainer stanzaContainer = relayingIQHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null /*don't we have as sessionStateHolder?*/);
XMPPCoreStanza response = XMPPCoreStanza.getWrapper(stanzaContainer.getResponseStanza());
@@ -39,17 +40,17 @@ public class RelayingIQHandlerTestCase e
}
public void testIQClientToClient_Outbound() {
- Stanza iqStanza = StanzaBuilder.createIQStanza(initiatingUser.getEntityFQ(), subscribed_FROM.getEntityFQ(), IQStanzaType.GET, "test").startInnerElement("mandatory").build();
+ Stanza iqStanza = StanzaBuilder.createIQStanza(initiatingUser.getEntityFQ(), subscribed_FROM.getEntityFQ(), IQStanzaType.GET, "test").startInnerElement("mandatory", NamespaceURIs.JABBER_CLIENT).build();
ResponseStanzaContainer stanzaContainer = relayingIQHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, null /*don't we have as sessionStateHolder?*/);
assertNull(stanzaContainer);
Stanza deliveredStanza = subscribed_FROM.getNextStanza();
- assertTrue(deliveredStanza.getVerifier().onlySubelementEquals("mandatory", null));
+ assertTrue(deliveredStanza.getVerifier().onlySubelementEquals("mandatory", NamespaceURIs.JABBER_CLIENT));
assertEquals(subscribed_FROM.getEntityFQ(), deliveredStanza.getTo());
}
public void testIQClientToClient_Inbound_NoTO() {
- Stanza iqStanza = StanzaBuilder.createIQStanza(subscribed_FROM.getEntityFQ(), initiatingUser.getEntityFQ(), IQStanzaType.GET, "test").startInnerElement("mandatory").build();
+ Stanza iqStanza = StanzaBuilder.createIQStanza(subscribed_FROM.getEntityFQ(), initiatingUser.getEntityFQ(), IQStanzaType.GET, "test").startInnerElement("mandatory", NamespaceURIs.JABBER_CLIENT).build();
ResponseStanzaContainer stanzaContainer = relayingIQHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), false, sessionContext, null /*don't we have as sessionStateHolder?*/);
XMPPCoreStanza response = XMPPCoreStanza.getWrapper(stanzaContainer.getResponseStanza());
@@ -58,12 +59,12 @@ public class RelayingIQHandlerTestCase e
}
public void testIQClientToClient_Inbound() {
- Stanza iqStanza = StanzaBuilder.createIQStanza(subscribed_TO.getEntityFQ(), initiatingUser.getEntityFQ(), IQStanzaType.GET, "test").startInnerElement("mandatory").build();
+ Stanza iqStanza = StanzaBuilder.createIQStanza(subscribed_TO.getEntityFQ(), initiatingUser.getEntityFQ(), IQStanzaType.GET, "test").startInnerElement("mandatory", NamespaceURIs.JABBER_CLIENT).build();
ResponseStanzaContainer stanzaContainer = relayingIQHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), false, sessionContext, null /*don't we have as sessionStateHolder?*/);
assertNull(stanzaContainer);
Stanza deliveredStanza = sessionContext.getNextRecordedResponse();
- assertTrue(deliveredStanza.getVerifier().onlySubelementEquals("mandatory", null));
+ assertTrue(deliveredStanza.getVerifier().onlySubelementEquals("mandatory", NamespaceURIs.JABBER_CLIENT));
assertEquals(initiatingUser.getEntityFQ(), deliveredStanza.getTo());
}
}
Modified: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java (original)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/async/AsyncIQGetHandlerTestCase.java Sun May 16 20:39:29 2010
@@ -21,6 +21,7 @@ package org.apache.vysper.xmpp.modules.c
import junit.framework.TestCase;
import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
@@ -120,7 +121,7 @@ public class AsyncIQGetHandlerTestCase e
}
try {
Stanza finalStanza = StanzaBuilder.createIQStanza(requestStanza.getTo(), requestStanza.getFrom(), IQStanzaType.RESULT, requestStanza.getID()).
- startInnerElement("success").endInnerElement().build();
+ startInnerElement("success", NamespaceURIs.JABBER_CLIENT).endInnerElement().build();
response = XMPPCoreStanza.getWrapper(finalStanza);
} catch (Throwable e) {
e.printStackTrace();
@@ -141,7 +142,7 @@ public class AsyncIQGetHandlerTestCase e
assertNull("future is create on execute", asyncIQGetHandler.getWaitingRunnableFuture());
StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(new EntityImpl("test", "vysper.org", null), null, IQStanzaType.GET, "id1");
- stanzaBuilder.startInnerElement("query").endInnerElement();
+ stanzaBuilder.startInnerElement("query", NamespaceURIs.JABBER_CLIENT).endInnerElement();
Stanza iqStanza = stanzaBuilder.build();
ResponseStanzaContainer container = asyncIQGetHandler.execute(iqStanza, sessionContext.getServerRuntimeContext(), true, sessionContext, sessionStateHolder);
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java Sun May 16 20:39:29 2010
@@ -28,6 +28,7 @@ import org.apache.vysper.xmpp.addressing
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
import org.apache.vysper.xmpp.modules.DefaultDiscoAwareModule;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler.MUCIqAdminHandler;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler.MUCMessageHandler;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler.MUCPresenceHandler;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
@@ -100,6 +101,7 @@ public class MUCModule
ComponentStanzaProcessor processor = new ComponentStanzaProcessor(serverRuntimeContext);
processor.addHandler(new MUCPresenceHandler(conference));
processor.addHandler(new MUCMessageHandler(conference, fullDomain));
+ processor.addHandler(new MUCIqAdminHandler(conference));
stanzaProcessor = processor;
RoomStorageProvider roomStorageProvider = (RoomStorageProvider) serverRuntimeContext.getStorageProvider(RoomStorageProvider.class);
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCHandlerHelper.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCHandlerHelper.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCHandlerHelper.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCHandlerHelper.java Sun May 16 20:39:29 2010
@@ -82,7 +82,7 @@ public class MUCHandlerHelper {
}
}
- builder.startInnerElement("error").addAttribute("type", type);
+ builder.startInnerElement("error",NamespaceURIs.JABBER_CLIENT).addAttribute("type", type);
builder.startInnerElement(errorName, NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).endInnerElement();
builder.endInnerElement();
Added: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java?rev=944906&view=auto
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java (added)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java Sun May 16 20:39:29 2010
@@ -0,0 +1,156 @@
+/*
+ * 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.xep0045_muc.handler;
+
+import java.util.List;
+
+import org.apache.vysper.xml.fragment.XMLSemanticError;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
+import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
+import org.apache.vysper.xmpp.modules.core.base.handler.DefaultIQHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Affiliation;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Occupant;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.IqAdminItem;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserPresenceItem;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status.StatusCode;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
+import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
+import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.stanza.StanzaErrorCondition;
+import org.apache.vysper.xmpp.stanza.StanzaErrorType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Implementation of <a href="http://xmpp.org/extensions/xep-0045.html">XEP-0045 Multi-user chat</a>.
+ *
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class MUCIqAdminHandler extends DefaultIQHandler {
+
+ final Logger logger = LoggerFactory.getLogger(MUCIqAdminHandler.class);
+
+ private Conference conference;
+
+ public MUCIqAdminHandler(Conference conference) {
+ this.conference = conference;
+ }
+
+ @Override
+ protected boolean verifyNamespace(Stanza stanza) {
+ return verifyInnerNamespace(stanza, NamespaceURIs.XEP0045_MUC_ADMIN);
+ }
+
+ private Entity roomAndNick(Room room, Occupant occupant) {
+ return new EntityImpl(room.getJID(), occupant.getName());
+ }
+
+ @Override
+ protected Stanza handleSet(IQStanza stanza,
+ ServerRuntimeContext serverRuntimeContext,
+ SessionContext sessionContext) {
+
+ Room room = conference.findRoom(stanza.getTo());
+
+ Occupant moderator = room.findOccupantByJID(stanza.getFrom());
+
+ // TODO add check if moderator or admin
+
+ try {
+ List<IqAdminItem> items = IqAdminItem.extractItems(stanza);
+
+ for(IqAdminItem item : items) {
+
+
+ if(item.getRole().equals(Role.None)) {
+ // kicking a user
+
+ // find kicked users jid
+ Occupant kicked = null;
+ if(item.getNick() != null) {
+ kicked = room.findOccupantByNick(item.getNick());
+ } else {
+ // TODO fix
+ }
+
+ // remove user from room
+ kicked.setRole(Role.None);
+ room.removeOccupant(kicked.getJid());
+ Entity kickedInRoom = roomAndNick(room, kicked);
+
+ // notify user he got kicked
+ StanzaBuilder presenceBuilder = StanzaBuilder.createPresenceStanza(kickedInRoom, kicked.getJid(), null,
+ PresenceStanzaType.UNAVAILABLE, null, null);
+ presenceBuilder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER,
+ new MucUserPresenceItem(Affiliation.None, Role.None),
+ // TODO handle <actor>
+ // TODO handle <reason>
+ new Status(StatusCode.BEEN_KICKED)));
+
+ relayStanza(kicked.getJid(), presenceBuilder.build(), serverRuntimeContext);
+
+ // notify remaining users that user got kicked
+ for(Occupant remaining : room.getOccupants()) {
+ StanzaBuilder presenceToRemainingBuilder = StanzaBuilder.createPresenceStanza(kickedInRoom, remaining.getJid(), null,
+ PresenceStanzaType.UNAVAILABLE, null, null);
+ presenceToRemainingBuilder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER,
+ new MucUserPresenceItem(Affiliation.None, Role.None),
+ new Status(StatusCode.BEEN_KICKED)));
+
+ relayStanza(remaining.getJid(), presenceToRemainingBuilder.build(), serverRuntimeContext);
+ }
+ }
+ }
+
+ return StanzaBuilder.createIQStanza(stanza.getTo(), stanza.getFrom(), IQStanzaType.RESULT, stanza.getID()).build();
+
+ } catch (XMLSemanticError e) {
+ return ServerErrorResponses.getInstance().getStanzaError(StanzaErrorCondition.BAD_REQUEST, stanza,
+ StanzaErrorType.MODIFY,
+ "iq stanza of type set requires exactly one query element",
+ getErrorLanguage(serverRuntimeContext, sessionContext), null);
+ }
+
+
+ }
+
+ protected void relayStanza(Entity receiver, Stanza stanza, ServerRuntimeContext serverRuntimeContext) {
+ try {
+ serverRuntimeContext.getStanzaRelay().relay(receiver, stanza, new IgnoreFailureStrategy());
+ } catch (DeliveryException e) {
+ logger.warn("presence relaying failed ", e);
+ }
+ }
+
+}
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCMessageHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCMessageHandler.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCMessageHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCMessageHandler.java Sun May 16 20:39:29 2010
@@ -34,7 +34,6 @@ import org.apache.vysper.xmpp.delivery.f
import org.apache.vysper.xmpp.modules.core.base.handler.DefaultMessageHandler;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Occupant;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.RoomType;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java Sun May 16 20:39:29 2010
@@ -39,7 +39,7 @@ import org.apache.vysper.xmpp.modules.ex
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.RoomType;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.History;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Item;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserPresenceItem;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status.StatusCode;
@@ -273,7 +273,7 @@ public class MUCPresenceHandler extends
StanzaBuilder builder = StanzaBuilder.createPresenceStanza(roomAndOccupantNick, newOccupant.getJid(), null, null, null, null);
builder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER,
- new Item(null, null, existingOccupant.getAffiliation(), existingOccupant.getRole())));
+ new MucUserPresenceItem(null, null, existingOccupant.getAffiliation(), existingOccupant.getRole())));
logger.debug("Room presence from {} sent to {}", newOccupant, roomAndOccupantNick);
@@ -291,7 +291,7 @@ public class MUCPresenceHandler extends
// room is non-anonymous or semi-anonmoys and the occupant a moderator, send full user JID
boolean includeJid = room.getRoomTypes().contains(RoomType.NonAnonymous) ||
(room.getRoomTypes().contains(RoomType.SemiAnonymous) && existingOccupant.getRole() == Role.Moderator);
- inner.add(new Item(newOccupant, includeJid, false));
+ inner.add(new MucUserPresenceItem(newOccupant, includeJid, false));
if(existingOccupant.getJid().equals(newOccupant.getJid())) {
@@ -318,7 +318,7 @@ public class MUCPresenceHandler extends
List<XMLElement> inner = new ArrayList<XMLElement>();
boolean includeJid = includeJidInItem(room, receiver);
- inner.add(new Item(changer, includeJid, true));
+ inner.add(new MucUserPresenceItem(changer, includeJid, true));
inner.add(new Status(StatusCode.NEW_NICK));
if(receiver.getJid().equals(changer.getJid())) {
@@ -344,7 +344,7 @@ public class MUCPresenceHandler extends
// new Status(StatusCode.OWN_PRESENCE).insertElement(builder);
// }
- builder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER, new Item(changer, includeJid, true)));
+ builder.addPreparedElement(new X(NamespaceURIs.XEP0045_MUC_USER, new MucUserPresenceItem(changer, includeJid, true)));
logger.debug("Room presence from {} sent to {}", roomAndNick, receiver);
relayStanza(receiver.getJid(), builder.build(), serverRuntimeContext);
@@ -363,7 +363,7 @@ public class MUCPresenceHandler extends
List<XMLElement> inner = new ArrayList<XMLElement>();
boolean includeJid = includeJidInItem(room, receiver);
- inner.add(new Item(changer, includeJid, false));
+ inner.add(new MucUserPresenceItem(changer, includeJid, false));
if(receiver.getJid().equals(changer.getJid())) {
// send status to indicate that this is the users own presence
@@ -383,7 +383,7 @@ public class MUCPresenceHandler extends
PresenceStanzaType.UNAVAILABLE, null, null);
List<XMLElement> inner = new ArrayList<XMLElement>();
- inner.add(new Item(null, null, existingOccupant.getAffiliation(), Role.None));
+ inner.add(new MucUserPresenceItem(null, null, existingOccupant.getAffiliation(), Role.None));
// is this stanza to be sent to the exiting user himself?
boolean ownStanza = existingOccupant.getJid().equals(exitingOccupant.getJid());
Added: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/IqAdminItem.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/IqAdminItem.java?rev=944906&view=auto
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/IqAdminItem.java (added)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/IqAdminItem.java Sun May 16 20:39:29 2010
@@ -0,0 +1,86 @@
+/*
+ * 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.xep0045_muc.stanzas;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.vysper.xml.fragment.Attribute;
+import org.apache.vysper.xml.fragment.XMLElement;
+import org.apache.vysper.xml.fragment.XMLSemanticError;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+
+/**
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class IqAdminItem extends XMLElement {
+
+ public static List<IqAdminItem> extractItems(IQStanza stanza) throws XMLSemanticError {
+ XMLElement query = stanza.getSingleInnerElementsNamed("query", NamespaceURIs.XEP0045_MUC_ADMIN);
+ List<XMLElement> itemElms = query.getInnerElementsNamed("item", NamespaceURIs.XEP0045_MUC_ADMIN);
+
+ List<IqAdminItem> items = new ArrayList<IqAdminItem>();
+ for(XMLElement itemElm : itemElms) {
+ items.add(getWrapper(itemElm));
+ }
+ return items;
+ }
+
+ public static IqAdminItem getWrapper(XMLElement itemElm) {
+ String nick = itemElm.getAttributeValue("nick");
+ String roleStr = itemElm.getAttributeValue("role");
+ Role role = null;
+ if(roleStr != null) {
+ role = Role.fromString(roleStr);
+ }
+
+ return new IqAdminItem(nick, role);
+ }
+
+ public IqAdminItem(String nick, Role role) {
+ super(NamespaceURIs.XEP0045_MUC_ADMIN, "item", null,
+ createAttributes(nick, role), null);
+ }
+
+
+ public String getNick() {
+ return getAttributeValue("nick");
+ }
+
+ public Role getRole() {
+ String value = getAttributeValue("role");
+ if(value != null) {
+ return Role.fromString(value);
+ } else {
+ return null;
+ }
+ }
+
+ private static List<Attribute> createAttributes(String nick, Role role) {
+ List<Attribute> attributes = new ArrayList<Attribute>();
+ if(nick != null) attributes.add(new Attribute("nick", nick));
+ if(role != null) attributes.add(new Attribute("role", role.toString()));
+ return attributes;
+ }
+
+}
Added: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/MucUserPresenceItem.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/MucUserPresenceItem.java?rev=944906&view=auto
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/MucUserPresenceItem.java (added)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/MucUserPresenceItem.java Sun May 16 20:39:29 2010
@@ -0,0 +1,106 @@
+/*
+ * 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.xep0045_muc.stanzas;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.vysper.xml.fragment.Attribute;
+import org.apache.vysper.xml.fragment.XMLElement;
+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.xep0045_muc.model.Affiliation;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Occupant;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+
+/**
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class MucUserPresenceItem extends XMLElement {
+
+ public MucUserPresenceItem(Occupant occupant, boolean includeJid, boolean includeNick) {
+ super(NamespaceURIs.XEP0045_MUC_USER, "item", null,
+ createAttributes(occupant, includeJid, includeNick), null);
+ }
+
+ public MucUserPresenceItem(Affiliation affiliation, Role role) {
+ super(NamespaceURIs.XEP0045_MUC_USER, "item", null,
+ createAttributes(null, null, affiliation, role), null);
+ }
+
+
+ public MucUserPresenceItem(Entity jid, String nick, Affiliation affiliation, Role role) {
+ super(NamespaceURIs.XEP0045_MUC_USER, "item", null,
+ createAttributes(jid, nick, affiliation, role), null);
+ }
+
+ private static List<Attribute> createAttributes(Occupant occupant, boolean includeJid, boolean includeNick) {
+ Entity jid = includeJid ? occupant.getJid() : null;
+ String nick = includeNick ? occupant.getName() : null;
+
+ return createAttributes(jid, nick, occupant.getAffiliation(), occupant.getRole());
+ }
+
+ public Entity getJid() throws EntityFormatException {
+ String value = getAttributeValue("jid");
+ if(value != null) {
+ return EntityImpl.parse(value);
+ } else {
+ return null;
+ }
+ }
+
+ public String getNick() {
+ return getAttributeValue("nick");
+ }
+
+ public Affiliation getAffiliation() {
+ String value = getAttributeValue("affiliation");
+ if(value != null) {
+ return Affiliation.fromString(value);
+ } else {
+ return null;
+ }
+
+ }
+
+ public Role getRole() {
+ String value = getAttributeValue("role");
+ if(value != null) {
+ return Role.fromString(value);
+ } else {
+ return null;
+ }
+ }
+
+
+ private static List<Attribute> createAttributes(Entity jid, String nick, Affiliation affiliation, Role role) {
+ List<Attribute> attributes = new ArrayList<Attribute>();
+ if(jid != null) attributes.add(new Attribute("jid", jid.getFullQualifiedName()));
+ if(nick != null) attributes.add(new Attribute("nick", nick));
+ if(affiliation != null) attributes.add(new Attribute("affiliation", affiliation.toString()));
+ if(role != null) attributes.add(new Attribute("role", role.toString()));
+ return attributes;
+ }
+
+}
Added: mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/UserX.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/UserX.java?rev=944906&view=auto
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/UserX.java (added)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/UserX.java Sun May 16 20:39:29 2010
@@ -0,0 +1,99 @@
+/*
+ * 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.xep0045_muc.stanzas;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.vysper.xml.fragment.XMLElement;
+import org.apache.vysper.xml.fragment.XMLSemanticError;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+
+/**
+ * <x xmlns='http://jabber.org/protocol/muc#user'>
+ * <item affiliation='none' role='none'>
+ * <actor jid='fluellen@shakespeare.lit'/>
+ * <reason>Avaunt, you cullion!</reason>
+ * </item>
+ * <status code='307'/>
+ * </x>
+ *
+ */
+public class UserX extends XMLElement {
+
+ public UserX(XMLElement...elements) {
+ this(Arrays.asList(elements));
+ }
+
+ public UserX(List<XMLElement> elements) {
+ super(NamespaceURIs.XEP0045_MUC_USER, "x", null, null, elements.toArray(new XMLElement[]{}));
+ }
+
+ public Invite getInvite() {
+ try {
+ XMLElement inviteElm = getSingleInnerElementsNamed("invite");
+ if(inviteElm != null) {
+ return new Invite(inviteElm);
+ } else {
+ return null;
+ }
+ } catch (XMLSemanticError e) {
+ throw new IllegalArgumentException("Invalid stanza", e);
+ }
+ }
+
+ public Decline getDecline() {
+ try {
+ XMLElement inviteElm = getSingleInnerElementsNamed("decline");
+ if(inviteElm != null) {
+ return new Decline(inviteElm);
+ } else {
+ return null;
+ }
+ } catch (XMLSemanticError e) {
+ throw new IllegalArgumentException("Invalid stanza", e);
+ }
+ }
+
+
+ public Password getPassword() {
+ try {
+ XMLElement passwordElm = getSingleInnerElementsNamed("password");
+ if(passwordElm != null && passwordElm.getInnerText() != null) {
+ return new Password(passwordElm.getInnerText().getText());
+ } else {
+ return null;
+ }
+ } catch (XMLSemanticError e) {
+ throw new IllegalArgumentException("Invalid stanza", e);
+ }
+ }
+
+ public String getPasswordValue() {
+ Password password = getPassword();
+ if(password != null && password.getInnerText() != null) {
+ return password.getInnerText().getText();
+ } else {
+ return null;
+ }
+ }
+
+
+}
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java Sun May 16 20:39:29 2010
@@ -19,20 +19,34 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
import org.apache.vysper.xml.fragment.XMLElement;
+import org.apache.vysper.xml.fragment.XMLSemanticError;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.delivery.StanzaReceiverQueue;
import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.TestSessionContext;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserPresenceItem;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status.StatusCode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.ProtocolException;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.MessageStanza;
+import org.apache.vysper.xmpp.stanza.PresenceStanza;
import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
/**
*/
@@ -106,4 +120,132 @@ public abstract class AbstractMUCHandler
assertEquals(errorName, jidMalformedElement.getName());
assertEquals(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS, jidMalformedElement.getNamespaceURI());
}
+
+ protected void assertMessageStanza(Entity from, Entity to, String type,
+ String body, Stanza stanza) throws XMLSemanticError {
+ assertMessageStanza(from, to, type, body, null, null, stanza);
+ }
+
+ protected void assertMessageStanza(Entity from, Entity to, String type,
+ String expectedBody, String expectedSubject, X expectedX, Stanza stanza) throws XMLSemanticError {
+ assertNotNull(stanza);
+ MessageStanza msgStanza = (MessageStanza) MessageStanza.getWrapper(stanza);
+
+ assertEquals(from, stanza.getFrom());
+ assertEquals(to, stanza.getTo());
+ if (type != null) {
+ assertEquals(type, msgStanza.getType());
+ }
+
+ assertEquals(expectedBody, msgStanza.getBody(null));
+ assertEquals(expectedSubject, msgStanza.getSubject(null));
+
+ if(expectedX != null) {
+ X actualX = X.fromStanza(stanza);
+ assertEquals(expectedX, actualX);
+ }
+ }
+
+ protected void assertIqResultStanza(Entity from, Entity to, String id,
+ Stanza stanza) throws XMLSemanticError {
+ assertNotNull(stanza);
+ IQStanza iqStanza = (IQStanza) IQStanza.getWrapper(stanza);
+
+ assertEquals(from, iqStanza.getFrom());
+ assertEquals(to, iqStanza.getTo());
+ assertEquals(id, iqStanza.getID());
+ assertEquals("result", iqStanza.getType());
+ }
+
+ protected void assertPresenceStanza(Stanza stanza, Entity expectedFrom, Entity expectedTo, String expectedShow,
+ String expectedStatus,
+ MucUserPresenceItem expectedItem) throws XMLSemanticError, Exception {
+
+ PresenceStanza presenceStanza = (PresenceStanza) PresenceStanza.getWrapper(stanza);
+ assertNotNull("Stanza must not be null", stanza);
+ assertEquals(expectedFrom, stanza.getFrom());
+ assertEquals(expectedTo, stanza.getTo());
+ assertEquals(expectedShow, presenceStanza.getShow());
+ assertEquals(expectedStatus, presenceStanza.getStatus(null));
+
+ XMLElement xElm = stanza.getSingleInnerElementsNamed("x");
+ assertEquals(NamespaceURIs.XEP0045_MUC_USER, xElm.getNamespaceURI());
+
+ List<XMLElement> innerElements = xElm.getInnerElements();
+
+ assertEquals(1, innerElements.size());
+ XMLElement itemElm = innerElements.get(0);
+ assertEquals("item", itemElm.getName());
+ assertEquals(expectedItem.getJid().getFullQualifiedName(), itemElm.getAttributeValue("jid"));
+ assertEquals(expectedItem.getNick(), itemElm.getAttributeValue("nick"));
+ assertEquals(expectedItem.getAffiliation().toString(), itemElm.getAttributeValue("affiliation"));
+ assertEquals(expectedItem.getRole().toString(), itemElm.getAttributeValue("role"));
+
+ }
+
+ protected void assertPresenceStanza(Stanza stanza, Entity expectedFrom, Entity expectedTo, String expectedType,
+ MucUserPresenceItem expectedItem, StatusCode expectedStatus) throws Exception {
+ List<MucUserPresenceItem> expectedItems = Arrays.asList(expectedItem);
+ List<StatusCode> expectedStatuses = Arrays.asList(expectedStatus);
+ assertPresenceStanza(stanza, expectedFrom, expectedTo, expectedType, expectedItems, expectedStatuses);
+ }
+
+ protected void assertPresenceStanza(Stanza stanza, Entity expectedFrom, Entity expectedTo, String expectedType,
+ List<MucUserPresenceItem> expectedItems, List<StatusCode> expectedStatuses) throws Exception {
+
+ assertNotNull(stanza);
+ assertEquals(expectedFrom, stanza.getFrom());
+ assertEquals(expectedTo, stanza.getTo());
+ assertEquals(expectedType, stanza.getAttributeValue("type"));
+
+ XMLElement xElm = stanza.getFirstInnerElement();
+ assertEquals(NamespaceURIs.XEP0045_MUC_USER, xElm.getNamespaceURI());
+
+ Iterator<XMLElement> innerElements = xElm.getInnerElements().iterator();
+ for(MucUserPresenceItem expectedItem : expectedItems) {
+ XMLElement itemElm = innerElements.next();
+
+ assertEquals("item", itemElm.getName());
+ if(expectedItem.getJid() != null) {
+ assertEquals(expectedItem.getJid().getFullQualifiedName(), itemElm.getAttributeValue("jid"));
+ } else {
+ assertNull(itemElm.getAttributeValue("jid"));
+ }
+ assertEquals(expectedItem.getNick(), itemElm.getAttributeValue("nick"));
+ assertEquals(expectedItem.getAffiliation().toString(), itemElm.getAttributeValue("affiliation"));
+ assertEquals(expectedItem.getRole().toString(), itemElm.getAttributeValue("role"));
+ }
+
+ if(expectedStatuses != null) {
+ for(StatusCode status : expectedStatuses) {
+ XMLElement statusElm = innerElements.next();
+
+ assertEquals("status", statusElm.getName());
+ assertEquals(status.code(), Integer.parseInt(statusElm.getAttributeValue("code")));
+
+ }
+ }
+ }
+
+ protected Stanza sendIq(Entity from, Entity to, IQStanzaType type, String id, String namespaceUri,
+ XMLElement item) throws ProtocolException {
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(from, to, type, id);
+
+ stanzaBuilder.startInnerElement("query", namespaceUri);
+ stanzaBuilder.addPreparedElement(item);
+ stanzaBuilder.endInnerElement();
+
+ Stanza iqStanza = stanzaBuilder.build();
+ ResponseStanzaContainer container = handler.execute(iqStanza,
+ sessionContext.getServerRuntimeContext(), true, sessionContext,
+ null);
+ if (container != null) {
+ return container.getResponseStanza();
+ } else {
+ return null;
+ }
+ }
+
+
+
}
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java Sun May 16 20:39:29 2010
@@ -27,9 +27,12 @@ import org.apache.vysper.xml.fragment.XM
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.MessageStanza;
import org.apache.vysper.xmpp.stanza.MessageStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -51,7 +54,7 @@ public abstract class AbstractMUCMessage
StanzaBuilder stanzaBuilder = StanzaBuilder.createMessageStanza(from,
to, type, null, body);
if(subject != null) {
- stanzaBuilder.startInnerElement("subject").addText(subject).endInnerElement();
+ stanzaBuilder.startInnerElement("subject", NamespaceURIs.JABBER_CLIENT).addText(subject).endInnerElement();
}
if(x != null) {
stanzaBuilder.addPreparedElement(x);
@@ -68,6 +71,8 @@ public abstract class AbstractMUCMessage
}
}
+
+
protected void assertMessageErrorStanza(Stanza response, Entity from,
Entity to, String type, String errorName,
XMLElement... expectedInnerElements) {
@@ -92,31 +97,9 @@ public abstract class AbstractMUCMessage
assertNull(occupant2Queue.getNext());
}
- protected void assertMessageStanza(Entity from, Entity to, String type,
- String body, Stanza stanza) throws XMLSemanticError {
- assertMessageStanza(from, to, type, body, null, null, stanza);
- }
-
- protected void assertMessageStanza(Entity from, Entity to, String type,
- String expectedBody, String expectedSubject, X expectedX, Stanza stanza) throws XMLSemanticError {
- assertNotNull(stanza);
- MessageStanza msgStanza = (MessageStanza) MessageStanza.getWrapper(stanza);
-
- assertEquals(from, stanza.getFrom());
- assertEquals(to, stanza.getTo());
- if (type != null) {
- assertEquals(type, stanza.getAttributeValue("type"));
- }
- assertEquals(expectedBody, msgStanza.getBody(null));
- assertEquals(expectedSubject, msgStanza.getSubject(null));
-
- if(expectedX != null) {
- X actualX = X.fromStanza(stanza);
- assertEquals(expectedX, actualX);
- }
- }
+
@Override
protected StanzaHandler createHandler() {
return new MUCMessageHandler(conference, MODULE_JID);
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeNickTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeNickTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeNickTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeNickTestCase.java Sun May 16 20:39:29 2010
@@ -30,7 +30,7 @@ import org.apache.vysper.xmpp.modules.ex
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Occupant;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Item;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserPresenceItem;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status.StatusCode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
@@ -73,13 +73,13 @@ public class MUCPresenceHandlerChangeNic
Occupant occupant = room.findOccupantByJID(OCCUPANT1_JID);
assertEquals("new nick", occupant.getName());
- Item unavailbleItem = new Item(OCCUPANT1_JID, "new nick", Affiliation.None, Role.Participant);
+ MucUserPresenceItem unavailbleItem = new MucUserPresenceItem(OCCUPANT1_JID, "new nick", Affiliation.None, Role.Participant);
assertPresenceStanza(occupant1Queue.getNext(), new EntityImpl(ROOM1_JID, "nick"), OCCUPANT1_JID, "unavailable",
Arrays.asList(unavailbleItem), Arrays.asList(StatusCode.NEW_NICK, StatusCode.OWN_PRESENCE));
assertPresenceStanza(occupant2Queue.getNext(), new EntityImpl(ROOM1_JID, "nick"), OCCUPANT2_JID, "unavailable",
Arrays.asList(unavailbleItem), Arrays.asList(StatusCode.NEW_NICK));
- Item availbleItem = new Item(OCCUPANT1_JID, null, Affiliation.None, Role.Participant);
+ MucUserPresenceItem availbleItem = new MucUserPresenceItem(OCCUPANT1_JID, null, Affiliation.None, Role.Participant);
assertPresenceStanza(occupant1Queue.getNext(), new EntityImpl(ROOM1_JID, "new nick"), OCCUPANT1_JID, null,
Arrays.asList(availbleItem), Arrays.asList(StatusCode.OWN_PRESENCE));
assertPresenceStanza(occupant2Queue.getNext(), new EntityImpl(ROOM1_JID, "new nick"), OCCUPANT2_JID, null,
@@ -96,37 +96,5 @@ public class MUCPresenceHandlerChangeNic
assertNotNull(error);
}
- private void assertPresenceStanza(Stanza stanza, Entity expectedFrom, Entity expectedTo, String expectedType,
- List<Item> expectedItems, List<StatusCode> expectedStatuses) throws Exception {
-
- assertNotNull(stanza);
- assertEquals(expectedFrom, stanza.getFrom());
- assertEquals(expectedTo, stanza.getTo());
- assertEquals(expectedType, stanza.getAttributeValue("type"));
-
- XMLElement xElm = stanza.getFirstInnerElement();
- assertEquals(NamespaceURIs.XEP0045_MUC_USER, xElm.getNamespaceURI());
-
- Iterator<XMLElement> innerElements = xElm.getInnerElements().iterator();
- for(Item item : expectedItems) {
- XMLElement itemElm = innerElements.next();
-
- assertEquals("item", itemElm.getName());
- assertEquals(item.getJid().getFullQualifiedName(), itemElm.getAttributeValue("jid"));
- assertEquals(item.getNick(), itemElm.getAttributeValue("nick"));
- assertEquals(item.getAffiliation().toString(), itemElm.getAttributeValue("affiliation"));
- assertEquals(item.getRole().toString(), itemElm.getAttributeValue("role"));
- }
-
- if(expectedStatuses != null) {
- for(StatusCode status : expectedStatuses) {
- XMLElement statusElm = innerElements.next();
-
- assertEquals("status", statusElm.getName());
- assertEquals(status.code(), Integer.parseInt(statusElm.getAttributeValue("code")));
-
- }
- }
- }
}
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeStatusTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeStatusTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeStatusTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerChangeStatusTestCase.java Sun May 16 20:39:29 2010
@@ -19,20 +19,14 @@
*/
package org.apache.vysper.xmpp.modules.extension.xep0045_muc.handler;
-import java.util.List;
-
-import org.apache.vysper.xml.fragment.XMLElement;
-import org.apache.vysper.xml.fragment.XMLSemanticError;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Affiliation;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
-import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Item;
-import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserPresenceItem;
import org.apache.vysper.xmpp.protocol.ProtocolException;
import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
-import org.apache.vysper.xmpp.stanza.PresenceStanza;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
@@ -65,7 +59,7 @@ public class MUCPresenceHandlerChangeSta
assertNull(changeStatus(OCCUPANT1_JID, ROOM1_JID_WITH_NICK, "xa", "Gone"));
- Item item = new Item(OCCUPANT1_JID, "nick", Affiliation.None, Role.Participant);
+ MucUserPresenceItem item = new MucUserPresenceItem(OCCUPANT1_JID, "nick", Affiliation.None, Role.Participant);
assertPresenceStanza(occupant1Queue.getNext(), ROOM1_JID_WITH_NICK, OCCUPANT1_JID, "xa", "Gone",
item);
assertPresenceStanza(occupant2Queue.getNext(), ROOM1_JID_WITH_NICK, OCCUPANT2_JID, "xa", "Gone",
@@ -80,7 +74,7 @@ public class MUCPresenceHandlerChangeSta
assertNull(changeStatus(OCCUPANT1_JID, ROOM1_JID_WITH_NICK, "xa", null));
- Item item = new Item(OCCUPANT1_JID, "nick", Affiliation.None, Role.Participant);
+ MucUserPresenceItem item = new MucUserPresenceItem(OCCUPANT1_JID, "nick", Affiliation.None, Role.Participant);
assertPresenceStanza(occupant1Queue.getNext(), ROOM1_JID_WITH_NICK, OCCUPANT1_JID, "xa", null,
item);
assertPresenceStanza(occupant2Queue.getNext(), ROOM1_JID_WITH_NICK, OCCUPANT2_JID, "xa", null,
@@ -95,37 +89,12 @@ public class MUCPresenceHandlerChangeSta
assertNull(changeStatus(OCCUPANT1_JID, ROOM1_JID_WITH_NICK, null, "Gone"));
- Item item = new Item(OCCUPANT1_JID, "nick", Affiliation.None, Role.Participant);
+ MucUserPresenceItem item = new MucUserPresenceItem(OCCUPANT1_JID, "nick", Affiliation.None, Role.Participant);
assertPresenceStanza(occupant1Queue.getNext(), ROOM1_JID_WITH_NICK, OCCUPANT1_JID, null, "Gone",
item);
assertPresenceStanza(occupant2Queue.getNext(), ROOM1_JID_WITH_NICK, OCCUPANT2_JID, null, "Gone",
item);
}
- private void assertPresenceStanza(Stanza stanza, Entity expectedFrom, Entity expectedTo, String expectedShow,
- String expectedStatus,
- Item expectedItem) throws XMLSemanticError, Exception {
-
- PresenceStanza presenceStanza = (PresenceStanza) PresenceStanza.getWrapper(stanza);
- assertNotNull(stanza);
- assertEquals(expectedFrom, stanza.getFrom());
- assertEquals(expectedTo, stanza.getTo());
- assertEquals(expectedShow, presenceStanza.getShow());
- assertEquals(expectedStatus, presenceStanza.getStatus(null));
-
- XMLElement xElm = stanza.getSingleInnerElementsNamed("x");
- assertEquals(NamespaceURIs.XEP0045_MUC_USER, xElm.getNamespaceURI());
-
- List<XMLElement> innerElements = xElm.getInnerElements();
-
- assertEquals(1, innerElements.size());
- XMLElement itemElm = innerElements.get(0);
- assertEquals("item", itemElm.getName());
- assertEquals(expectedItem.getJid().getFullQualifiedName(), itemElm.getAttributeValue("jid"));
- assertEquals(expectedItem.getNick(), itemElm.getAttributeValue("nick"));
- assertEquals(expectedItem.getAffiliation().toString(), itemElm.getAttributeValue("affiliation"));
- assertEquals(expectedItem.getRole().toString(), itemElm.getAttributeValue("role"));
-
- }
}
Added: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ModeratorKickOccupantTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ModeratorKickOccupantTestCase.java?rev=944906&view=auto
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ModeratorKickOccupantTestCase.java (added)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ModeratorKickOccupantTestCase.java Sun May 16 20:39:29 2010
@@ -0,0 +1,70 @@
+/*
+ * 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.xep0045_muc.handler;
+
+import static org.apache.vysper.xmpp.stanza.IQStanzaType.SET;
+
+import org.apache.vysper.xmpp.addressing.EntityImpl;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Affiliation;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.IqAdminItem;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserPresenceItem;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status.StatusCode;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
+import org.apache.vysper.xmpp.stanza.IQStanza;
+
+
+/**
+ */
+public class ModeratorKickOccupantTestCase extends AbstractMUCHandlerTestCase {
+
+ public void testChangeSubject() throws Exception {
+ Room room = conference.findOrCreateRoom(ROOM2_JID, "Room 2");
+ room.addOccupant(OCCUPANT1_JID, "nick").setRole(Role.Moderator);
+ room.addOccupant(OCCUPANT2_JID, "Nick 2");
+
+ assertNotNull(room.findOccupantByNick("Nick 2"));
+
+ // send message to room
+ IQStanza result = (IQStanza) IQStanza.getWrapper(sendIq(OCCUPANT1_JID, ROOM2_JID, SET, "id1", NamespaceURIs.XEP0045_MUC_ADMIN, new IqAdminItem("Nick 2", Role.None)));
+
+ assertIqResultStanza(ROOM2_JID, OCCUPANT1_JID, "id1", result);
+
+ assertNull(room.findOccupantByNick("Nick 2"));
+
+ // verify that kicked user got presence
+ assertPresenceStanza(occupant2Queue.getNext(), new EntityImpl(ROOM2_JID, "Nick 2"), OCCUPANT2_JID, "unavailable",
+ new MucUserPresenceItem(null, null, Affiliation.None, Role.None),
+ StatusCode.BEEN_KICKED);
+
+ // verify that remaining users got presence
+ assertPresenceStanza(occupant1Queue.getNext(), new EntityImpl(ROOM2_JID, "Nick 2"), OCCUPANT1_JID, "unavailable",
+ new MucUserPresenceItem(null, null, Affiliation.None, Role.None),
+ StatusCode.BEEN_KICKED);
+ }
+
+ @Override
+ protected StanzaHandler createHandler() {
+ return new MUCIqAdminHandler(conference);
+ }
+
+}
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionHistoryTestCase.java Sun May 16 20:39:29 2010
@@ -28,6 +28,7 @@ import junit.framework.TestCase;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.History;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.stanza.MessageStanza;
import org.apache.vysper.xmpp.stanza.MessageStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -73,7 +74,7 @@ public class DiscussionHistoryTestCase e
// add a subject message
history.append(
StanzaBuilder.createMessageStanza(FROM, ROOM_JID, MessageStanzaType.GROUPCHAT, null, null).
- startInnerElement("subject").addText(SUBJECT).endInnerElement().build(),
+ startInnerElement("subject", NamespaceURIs.JABBER_CLIENT).addText(SUBJECT).endInnerElement().build(),
FROM_OCCUPANT);
}
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/DiscussionMessageTestCase.java Sun May 16 20:39:29 2010
@@ -28,6 +28,7 @@ import org.apache.vysper.xml.fragment.XM
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.datetime.DateTimeProfile;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.stanza.MessageStanza;
import org.apache.vysper.xmpp.stanza.MessageStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -52,7 +53,7 @@ public class DiscussionMessageTestCase e
public void testSubjectMessage() {
StanzaBuilder builder = StanzaBuilder.createMessageStanza(FROM, ROOM_JID, null, null);
- builder.startInnerElement("subject").addText(SUBJECT).endInnerElement();
+ builder.startInnerElement("subject", NamespaceURIs.JABBER_CLIENT).addText(SUBJECT).endInnerElement();
DiscussionMessage item = new DiscussionMessage(builder.build(), FROM_OCCUPANT, TIMESTAMP);
assertEquals(NICK, item.getNick());
Modified: mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/XTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/XTestCase.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/XTestCase.java (original)
+++ mina/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/stanzas/XTestCase.java Sun May 16 20:39:29 2010
@@ -37,7 +37,7 @@ public class XTestCase extends TestCase
public void testFromStanza() {
StanzaBuilder builder = StanzaBuilder.createMessageStanza(JID, JID, null, "Foo");
builder.startInnerElement("x", NamespaceURIs.XEP0045_MUC);
- builder.startInnerElement("password").addText("secret").endInnerElement();
+ builder.startInnerElement("password", NamespaceURIs.XEP0045_MUC).addText("secret").endInnerElement();
builder.endInnerElement();
X x = X.fromStanza(builder.build());
Modified: mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/SubscriberPayloadNotificationVisitor.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/SubscriberPayloadNotificationVisitor.java?rev=944906&r1=944905&r2=944906&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/SubscriberPayloadNotificationVisitor.java (original)
+++ mina/vysper/trunk/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/SubscriberPayloadNotificationVisitor.java Sun May 16 20:39:29 2010
@@ -93,8 +93,8 @@ public class SubscriberPayloadNotificati
stanzaBuilder.addAttribute("from", serverJID.getFullQualifiedName());
stanzaBuilder.addAttribute("to", to.getFullQualifiedName());
stanzaBuilder.addAttribute(NamespaceURIs.XML, "lang", lang);
- stanzaBuilder.startInnerElement("event");
- stanzaBuilder.startInnerElement("items");
+ stanzaBuilder.startInnerElement("event", NamespaceURIs.XEP0060_PUBSUB_EVENT);
+ stanzaBuilder.startInnerElement("items", NamespaceURIs.XEP0060_PUBSUB_EVENT);
stanzaBuilder.addAttribute("node", nodeName);
stanzaBuilder.addPreparedElement(item);
stanzaBuilder.endInnerElement(); // items